Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   registro no existe y consultarlos (https://www.clubdelphi.com/foros/showthread.php?t=70245)

agustin173 09-10-2010 00:51:52

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.

ecfisa 09-10-2010 00:53:55

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. :)

agustin173 09-10-2010 01:02:17

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.

agustin173 09-10-2010 01:03:26

si la puse completa ahora mirala

agustin173 09-10-2010 01:04:15

[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]

agustin173 09-10-2010 01:04:52

[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]

agustin173 09-10-2010 01:05:37

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;

agustin173 09-10-2010 01:06:25

revisa el ultimo que te envie ecfisa

ecfisa 09-10-2010 01:37:11

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. :)

agustin173 09-10-2010 01:59:18

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

ecfisa 09-10-2010 07:32:40

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. :)

agustin173 13-10-2010 00:34:00

muchas gracias hermano por tu explicacion


La franja horaria es GMT +2. Ahora son las 00:16:48.

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