Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Consulta Sql con delphi (https://www.clubdelphi.com/foros/showthread.php?t=76637)

kurono 15-11-2011 02:16:02

Consulta Sql con delphi
 
hola amigos les cuento que tengo un problema resulta que tengo que realizar una consulta en la cual debo comparar tanto el nombre como el apellido de un cliente para ver la suma total de deposito del cliente pero lo que e hecho no me resulta me da error aqui el codigo
Código Delphi [-]
Select sum(Deposito) from Depositos_Retiros where Nombre='+txt_nombre.text+ 'and'+ Apellido ='+txt_apellido.text

Caral 15-11-2011 02:46:33

Hola
Pues depende de como lo pongas me parece que esta bien, no deberia dar error.
El asunto me parece que es la colocacion de las comillas:
Ve la diferencia:

Lo tuyo:
Código SQL [-]
'Select sum(Deposito) from Depositos_Retiros where Nombre='+txt_nombre.text+ 'and'+ Apellido ='+txt_apellido.text
Lo que me parece deberia ser:
Código SQL [-]
'Select sum(Deposito) from Depositos_Retiros where Nombre = '+txt_nombre.text+' and Apellido = '+txt_apellido.text
Simplemente mover las comillas.
Saludos

kurono 15-11-2011 03:53:03

lo hise de esa manera y me dice que falta un operador

amell2020 15-11-2011 03:53:49

bueno caral falto esto creo que debe quedar asi:
'Select sum(Deposito) from Depositos_Retiros where Nombre = '+txt_nombre.text+' and Apellido = '+txt_apellido.text'
solo falto al final la comilla '

kurono 15-11-2011 04:04:22

amigo amell2020 de esa manera no compila ya que estaria habriendo la comilla y no cerrandola

amell2020 15-11-2011 04:07:32

si me ya veo, creo que el operador que te hace falta es signo +

amell2020 15-11-2011 04:09:29

ah y pregunta amigo donde pones esa consulta en un evento o desde la propiedad del query?

amell2020 15-11-2011 04:13:31

y debes especificar para que BD estas trabajando, porque la que la consulta de caral la secuencia es para access

kurono 15-11-2011 04:17:32

agrege el signo de + y un parentesis y con eso me compila pero me da error de que me falta operador y haciendo enfasis en la linea where Nombre = Aneudy and Apellido = Arias
Código Delphi [-]
query.sql.add('Select sum(Deposito) from Depositos_Retiros where Nombre = '+txt_nombre.text+' and Apellido = '+txt_apellido.text+')');

amell2020 15-11-2011 04:24:34

'SELECT sum(Deposito ) from Depositos_retiros WHERE NOMBRE='TXT_APELLIDO.TEXT' AND APELLIDO = 'TXT_APELLIDO.TEXT';
prueba ese haber

kurono 15-11-2011 04:33:26

con ese no me compila y el error que da es txt_nombre.text no de fondo

amell2020 15-11-2011 04:42:58

query.sql.add('Select sum(Deposito) from Depositos_Retiros where Nombre = 'txt_nombre.text' and Apellido = 'txt_apellido.text'
mira con este

kurono 15-11-2011 05:07:17

amigo amell2020 ese es el mismo codigo que el de arriba osea el antepenultimo de este

amell2020 15-11-2011 05:10:20

si y no te funciona, puede mostrarlo una imagen de tu error? asi veremos mejor lo que explicas

kurono 15-11-2011 05:29:03

amigo lo resolvi agregandole parametro aqui el codigo

Código Delphi [-]
begin
 with Enlace.Consulta_Registro do
    begin
           Close;
           SQL.Clear;
           SQL.Add('Select sum(Deposito) from Depositos_Retiros where Nombre='+txt_nombre.Text+' and Apellido ='+ txt_apellido.Text);
           Parameters.ParamByName(txt_nombre.Text).Value:=txt_nombre.Text;
           Parameters.ParamByName(txt_apellido.Text).Value:=txt_apellido.Text;
          open;
       end;
end;


muchas gracias por la ayuda

olbeup 15-11-2011 08:21:07

Cita:

Empezado por kurono (Mensaje 418541)
amigo lo resolvi agregandole parametro aqui el codigo

Código Delphi [-]
begin
 with Enlace.Consulta_Registro do
    begin
           Close;
           SQL.Clear;
           SQL.Add('Select sum(Deposito) from Depositos_Retiros where Nombre='+txt_nombre.Text+' and Apellido ='+ txt_apellido.Text);
           Parameters.ParamByName(txt_nombre.Text).Value:=txt_nombre.Text;
           Parameters.ParamByName(txt_apellido.Text).Value:=txt_apellido.Text;
          open;
       end;
end;


muchas gracias por la ayuda

Son mas líneas pero es más claro y sin parametros
Código Delphi [-]
with Enlace.Consulta_Registro do
begin
  Close;

  SQL.Clear
  SQL.Add('SELECT');
  SQL.Add('    SUM(DEPOSITO) AS TOTALDEPOSITO');
  SQL.Add('  FROM Depositos_Retiros');
  SQL.Add('  WHERE NOMBRE = ' + QuotedStr(txt_nombre.Text));
  SQL.Add('        AND APELLIDO = ' + QuotedStr(txt_apellido.Text));

  Open;
end;
Un saludo.

kurono 16-11-2011 02:32:32

ok lo copiare y luego lo probare ya que estoy en otra parte del sistema

kurono 16-11-2011 22:16:57

hola de nuevo ahora me surgio el siguiente problema tengo una busqueda por nombre y apellido todo el codigo me funciona bien sin ningun error pero a la hora de tener dos nombre con el mismo apellido surge el problema ya que no me localiza el cliente que busco simpre me busca el primer registro con ese apellido

uso Locate para la busqueda

olbeup 17-11-2011 08:39:08

Si tienes dos nombre y el mismo apellido, el resultado son dos registros.
Lo que pasa es que tu capturas el primero, a menos que añadas otra condición de buscar en la SQL como el código de socio del cliente, el CIF, NIF, CAMPOx

Un saludo

ElDioni 17-11-2011 09:59:12

Puedes poner un DBGrid con un DataSource para que el usuario vea todas las coincidencias y pueda seleccionar la que desea, también puedes poner un label que indique el número de registros devueltos con adoquery1.recordcount y poner botones para moverte al primer registro, al anterior, al siguiente y al último. adoquery1.First, adoquery1.prior, adoquery1.next, adoquery1.last.

Saludos.


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

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