Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-10-2010
agustin173 agustin173 is offline
Miembro
 
Registrado: jun 2010
Posts: 158
Poder: 14
agustin173 Va por buen camino
registro no existe y consultarlos

hola muchachos espero que esten bien

Tengo un problema es con una consulta por dos campos especificos me Explico mejor

Estoy usando delphi 7
una tabla llamada = Pais
un adoquery llamado = Temp
dos campos llamados = codigo(Numerico) y pais(Alfanumerico)
en la tabla los declare el codigo como "int" y el pais como Varchar(25)

Cuando busco el codigo me lo consulta bien sin problema y si no existe el registro me lo dice hasta ahi bien.

Pero cuando trato de consultarlo por el pais me da un error

el codigo es el siguiente:

Código Delphi [-]
if edcodbuscar.Text <> '' then
   begin
    Temp.SQL.Add(' where codigo = '+EdCodBuscar.Text);
    Temp.Active := True;
     If Temp.Fields[0].AsString <> edcodbuscar.Text then    begin
     Showmessage(' Registro No Existe ');
     end
     else
    EdCodBuscar.text:= Temp.Fields[0].AsString;
    EDfechaBuscar.text:= Temp.Fields[1].AsString;
    EDPaisBuscar.Text:= Temp.Fields[2].AsString;
  end

este codigo consulta bien por el campo codigo, pero no se como hacerlo para que me consulte por los campos tanto por codigo como por pais y si no existen ninguno de los dos me mande el letro que me diga registro no existe, ayudenme por favor.
Responder Con Cita
  #2  
Antiguo 09-10-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Agustin.

¿ Cuál es el error que te dá ?


Aunque mirando por arriba, la sentencia:
Cita:
Temp.SQL.Add(' where codigo = '+EdCodBuscar.Text);
está incompleta, debería ser:
Código Delphi [-]
   Temp.Close;
   Temp.SQL.Clear;
   Temp.SQL.Add('SELECT lo_que_sea FROM tu_tabla WHERE codigo = '+QuotedStr(EdCodBuscar.Text);
   Temp.Open;


Saludos.

Última edición por ecfisa fecha: 09-10-2010 a las 01:07:14.
Responder Con Cita
  #3  
Antiguo 09-10-2010
agustin173 agustin173 is offline
Miembro
 
Registrado: jun 2010
Posts: 158
Poder: 14
agustin173 Va por buen camino
como estas ecfisa

el error es el siguiente

Project synapse.exe raised exception class eiolecption with message ' incorrect syntax near 'dominicana' process stopped. use step or run to continue.

el codigo completo es este:

[delphi]
//Busca Registros en la Base de Dato por Codigo y Pais
Temp.close;
Temp.SQL.Text := 'Select codigo, fecha, Pais From Pais ';
if edcodbuscar.Text <> '' then
begin
Temp.SQL.Add(' where codigo = '+EdCodBuscar.Text);
Temp.Active := True;
If Temp.Fields[0].AsString <> edcodbuscar.Text then begin
Showmessage(' Registro No Existe ');
end
else
EdCodBuscar.text:= Temp.Fields[0].AsString;
EDfechaBuscar.text:= Temp.Fields[1].AsString;
EDPaisBuscar.Text:= Temp.Fields[2].AsString;
end
else
if EDPaisbuscar.Text <> '' then
begin
Temp.SQL.Add(' where Pais = '+EDPaisBuscar.Text);
Temp.Active := True;
if Temp.RecordCount= 0 Then ShowMessage('Registro No Existe');
EdCodBuscar.Text:= Temp.Fields[0].AsString;
EdFechaBuscar.Text:= Temp.Fields[1].AsString;
EDPaisBuscar.Text:= Temp.Fields[2].AsString;
[\delphi]
me falto poner algo del codigo, si tu crees que hay un metodo mas facil ayudame por favor.
Responder Con Cita
  #4  
Antiguo 09-10-2010
agustin173 agustin173 is offline
Miembro
 
Registrado: jun 2010
Posts: 158
Poder: 14
agustin173 Va por buen camino
si la puse completa ahora mirala
Responder Con Cita
  #5  
Antiguo 09-10-2010
agustin173 agustin173 is offline
Miembro
 
Registrado: jun 2010
Posts: 158
Poder: 14
agustin173 Va por buen camino
[delphi]
//Busca Registros en la Base de Dato por Codigo y Pais
Temp.close;
Temp.SQL.Text := 'Select codigo, fecha, Pais From Pais ';
if edcodbuscar.Text <> '' then
begin
Temp.SQL.Add(' where codigo = '+EdCodBuscar.Text);
Temp.Active := True;
If Temp.Fields[0].AsString <> edcodbuscar.Text then begin
Showmessage(' Registro No Existe ');
end
else
EdCodBuscar.text:= Temp.Fields[0].AsString;
EDfechaBuscar.text:= Temp.Fields[1].AsString;
EDPaisBuscar.Text:= Temp.Fields[2].AsString;
end
else
if EDPaisbuscar.Text <> '' then
begin
Temp.SQL.Add(' where Pais = '+EDPaisBuscar.Text);
Temp.Active := True;
if Temp.RecordCount= 0 Then ShowMessage('Registro No Existe');
EdCodBuscar.Text:= Temp.Fields[0].AsString;
EdFechaBuscar.Text:= Temp.Fields[1].AsString;
EDPaisBuscar.Text:= Temp.Fields[2].AsString;
[delphi]
Responder Con Cita
  #6  
Antiguo 09-10-2010
agustin173 agustin173 is offline
Miembro
 
Registrado: jun 2010
Posts: 158
Poder: 14
agustin173 Va por buen camino
[delphi]
//Busca Registros en la Base de Dato por Codigo y Pais
Temp.close;
Temp.SQL.Text := 'Select codigo, fecha, Pais From Pais ';
if edcodbuscar.Text <> '' then
begin
Temp.SQL.Add(' where codigo = '+EdCodBuscar.Text);
Temp.Active := True;
If Temp.Fields[0].AsString <> edcodbuscar.Text then begin
Showmessage(' Registro No Existe ');
end
else
EdCodBuscar.text:= Temp.Fields[0].AsString;
EDfechaBuscar.text:= Temp.Fields[1].AsString;
EDPaisBuscar.Text:= Temp.Fields[2].AsString;
end
else
if EDPaisbuscar.Text <> '' then
begin
Temp.SQL.Add(' where Pais = '+EDPaisBuscar.Text);
Temp.Active := True;
if Temp.RecordCount= 0 Then ShowMessage('Registro No Existe');
EdCodBuscar.Text:= Temp.Fields[0].AsString;
EdFechaBuscar.Text:= Temp.Fields[1].AsString;
EDPaisBuscar.Text:= Temp.Fields[2].AsString;
[\delphi]
Responder Con Cita
  #7  
Antiguo 09-10-2010
agustin173 agustin173 is offline
Miembro
 
Registrado: jun 2010
Posts: 158
Poder: 14
agustin173 Va por buen camino
Código Delphi [-]
//Busca Registros en la Base de Dato por Codigo y Pais
Temp.close;
Temp.SQL.Text := 'Select codigo, fecha, Pais From Pais ';
if edcodbuscar.Text <> '' then
begin
Temp.SQL.Add(' where codigo = '+EdCodBuscar.Text);
Temp.Active := True;
If Temp.Fields[0].AsString <> edcodbuscar.Text then begin
Showmessage(' Registro No Existe ');
end
else
EdCodBuscar.text:= Temp.Fields[0].AsString;
EDfechaBuscar.text:= Temp.Fields[1].AsString;
EDPaisBuscar.Text:= Temp.Fields[2].AsString;
end
else
if EDPaisbuscar.Text <> '' then
begin
Temp.SQL.Add(' where Pais = '+EDPaisBuscar.Text);
Temp.Active := True;
if Temp.RecordCount= 0 Then ShowMessage('Registro No Existe');
EdCodBuscar.Text:= Temp.Fields[0].AsString;
EdFechaBuscar.Text:= Temp.Fields[1].AsString;
EDPaisBuscar.Text:= Temp.Fields[2].AsString;
Responder Con Cita
  #8  
Antiguo 09-10-2010
agustin173 agustin173 is offline
Miembro
 
Registrado: jun 2010
Posts: 158
Poder: 14
agustin173 Va por buen camino
revisa el ultimo que te envie ecfisa
Responder Con Cita
  #9  
Antiguo 09-10-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Agustin.

Probá de este modo:
Código Delphi [-]
  Temp.Close;
  Temp.SQL.Clear;
  Temp.SQL.Text:= 'SELECT CODIGO,FECHA,PAIS FROM PAIS ';
  if EdCodBuscar.Text <> '' then
   Temp.SQL.Add('WHERE CODIGO = ' + QuotedStr(EdCodBuscar.Text))
  else if EdPaisBuscar.Text <> '' then
   Temp.SQL.Add('WHERE PAIS = ' + QuotedStr(EdPaisBuscar.Text));
  Temp.Open;
  if not Temp.IsEmpty then
  begin
    EdCodBuscar.text:= Temp.Fields[0].AsString;
    EdFechaBuscar.Text:= Temp.Fields[1].AsString;
    EDPaisBuscar.Text:= Temp.Fields[2].AsString;
  end
  else
    ShowMessage('Registro no encontrado');

Saludos.

Última edición por ecfisa fecha: 09-10-2010 a las 01:53:05.
Responder Con Cita
  #10  
Antiguo 09-10-2010
agustin173 agustin173 is offline
Miembro
 
Registrado: jun 2010
Posts: 158
Poder: 14
agustin173 Va por buen camino
ecfisa mi hermano funciono perfectamente bien gracias

pero una pregunta mas como uso el "like" eso se utiliza para completa las palabras en la busqueda verdad o no

Ejemplo yo tengo un nombre por decir Agustin en la base dato
si pongo agu me lo busca asi es como funciona o si no podrias explicarmercalo por favor
Responder Con Cita
  #11  
Antiguo 09-10-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Agustin.

El operador LIKE tiene dos comodines: _ y %
_ : En el lugar va cualquier caracter
%: Ningún o más caracteres.


Para realizar una busqueda incremental usando LIKE poné un (IBQuery,Query o ADOQuery) un TEdit y
este código en su evento OnChange:
Código Delphi [-]
procedure TForm1.Edit1Change(Sender: TObject);
begin
  with IBQuery1 do
  begin
    Close;
    SQL.Text:= 'SELECT * FROM tu_tabla WHERE nombre LIKE  '+
                      QuotedStr(Edit1.Text+'%')+' ORDER BY nombre';
    Open;
  end;
end;

Saludos.

Última edición por ecfisa fecha: 09-10-2010 a las 07:36:18.
Responder Con Cita
  #12  
Antiguo 13-10-2010
agustin173 agustin173 is offline
Miembro
 
Registrado: jun 2010
Posts: 158
Poder: 14
agustin173 Va por buen camino
muchas gracias hermano por tu explicacion
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
registro no existe agustin173 Varios 19 15-06-2010 23:56:14
saber que no existe registro de ese campo Petolansa SQL 4 31-07-2008 01:42:10
Como decirle a Delphi que existe un registro gasparsi MySQL 5 30-05-2008 11:56:47
Verificando si un registro existe Angel Fernández Firebird e Interbase 9 26-03-2008 18:45:21
No me encuentra un registro que existe, puse mal el where? Eden SQL 2 13-02-2006 07:30:49


La franja horaria es GMT +2. Ahora son las 02:14:55.


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