Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Tablas planas
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-08-2022
GINMARMENOR GINMARMENOR is offline
Miembro
 
Registrado: feb 2016
Posts: 58
Poder: 9
GINMARMENOR Va por buen camino
duilioisol me sale todo como dices la tabla perfecto, para este caso utiliza UNION en vez de UNION ALL, miles de gracias.

pero lo único que no consigo introducir los datos en el campo (TIPO) para diferenciar si es de una tabla u otra, ya que lo hago en modo diseño por que tengo que pasar por 'SQl.Txt:=' '':



/*
sql.text:=' SELECT 'PED' as tipo, id, codigo, nombre, cantidad
FROM PEDIDOS
WHERE
codigo = 'A001'
UNION
SELECT 'COM' as tipo, id, codigo, nombre, cantidad
FROM COMPRAS
WHERE
codigo = 'A001' '
*/

He intentado miles de formas pero al usar las comillas no lo puedo hacer, no consigo insertar los datos.
Responder Con Cita
  #2  
Antiguo 28-08-2022
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.051
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Hay varias formas, lo mejor es usar parámetros.
De todas formas prueba a usar la comilla doble "
Responder Con Cita
  #3  
Antiguo 28-08-2022
GINMARMENOR GINMARMENOR is offline
Miembro
 
Registrado: feb 2016
Posts: 58
Poder: 9
GINMARMENOR Va por buen camino
No tampoco con doble comillas funciona da error
Código Delphi [-]
/*
sql.text:=' SELECT "PED" as tipo, id, codigo, nombre, cantidad
FROM PEDIDOS
WHERE
codigo = 'A001'
UNION
SELECT "COM" as tipo, id, codigo, nombre, cantidad
FROM COMPRAS
WHERE
codigo = 'A001' '
*/
Por internet no encuentro nada que pueda unir dos tablas y además insertar datos fijos en un campo, con esta sintaxis.

Última edición por Casimiro Notevi fecha: 28-08-2022 a las 22:51:14. Razón: Poner etiquetas [delphi] [/delphi] al código.
Responder Con Cita
  #4  
Antiguo 28-08-2022
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.051
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Ahí no, en el parámetro:
Código Delphi [-]
codigo = "A001" '
Y por cierto, no olvides usar las etiquetas para código, gracias.
Responder Con Cita
  #5  
Antiguo 29-08-2022
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
He intentado miles de formas pero al usar las comillas no lo puedo hacer, no consigo insertar los datos.

¿Cuál es el mensaje de error?

Si es un error de Delphi que te impide compilar y dice alg así como que "la línea no termina" debes seguir haciéndolo como hasta ahora lo hacías (Según tu ejemplo anterior)

Código Delphi [-]
SQL.Text := 'select * from pedidos inner join compras on pedidos.id=Compras.Id where pedidos.id=' + Quotedstr('A001') + ' and Compras.Id=' + Quotedstr('A001');

Para enteder el tema:
1. Los strings en Delphi se determinan entre comillas simpels
Código Delphi [-]
s := 'Hello World';
wrilte(s);
Código:
=>Hello World
2. La forma de poner una comilla simple en un string en el codigo es repitiéndola
Código Delphi [-]
s := 'Hello ''World''';
wrilte(s);
Código:
=>Hello 'World'
3. Otra forma de hacer lo mismo es mediante la función QuoteStr
Código Delphi [-]
s := 'Hello ' + QuotedStr('World');
wrilte(s);
Código:
=>Hello 'World'

Yo suelo hacerlo de la siguiente manera para poder ver código SQL dentro de código Delphi facilmente:

Código Delphi [-]
// Cierro Dataset
// Asigno SQL
// Filtro por parámetro
// Abro Dataset
with DataSet do
begin
   Close;
   SQL.Clear;
   SQL.Add(' SELECT ''PED'' as tipo, id, codigo, nombre, cantidad ');
   SQL.Add(' FROM PEDIDOS ');
   SQL.Add(' WHERE ');
   SQL.Add(' codigo = :CODIGO ');
   SQL.Add(' UNION ');
   SQL.Add(' SELECT ''COM'' as tipo, id, codigo, nombre, cantidad ');
   SQL.Add(' FROM COMPRAS ');
   SQL.Add(' WHERE ');
   SQL.Add(' codigo = :CODIGO ');
   Params.ByName['CODIGO'].AsString := 'A001';
   Open;
   [...]
end;
Responder Con Cita
  #6  
Antiguo 29-08-2022
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.051
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Es la mejor opción y la más profesional y segura.
Cita:
Empezado por duilioisola Ver Mensaje
Código Delphi [-]
SQL.Add(' codigo = :CODIGO ');
Params.ByName['CODIGO'].AsString := 'A001'
La opción de poner dobles comillas también funciona, aunque no me gusta.
Responder Con Cita
  #7  
Antiguo 30-08-2022
GINMARMENOR GINMARMENOR is offline
Miembro
 
Registrado: feb 2016
Posts: 58
Poder: 9
GINMARMENOR Va por buen camino
Ok, funciona perfectamente, gracias por vuestra paciencia.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
SQL - Relación de 3 Tablas VFont SQL 2 01-07-2014 01:01:18
Relación de dos tablas laguilar59 SQL 3 13-12-2012 17:05:55
unir dos tablas djanp Conexión con bases de datos 5 28-11-2007 15:30:06
Relacion de dos tablas DBF Antuan Conexión con bases de datos 7 01-10-2005 21:10:50
unir tablas Mario1980 Conexión con bases de datos 8 22-10-2004 10:36:45


La franja horaria es GMT +2. Ahora son las 01:37:39.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi