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 (https://www.clubdelphi.com/foros/showthread.php?t=68413)

agustin173 11-06-2010 23:38:53

registro no existe
 
como puedo hacer para que en una consulta con adoquery cuando no encuentre ningun registro en especifico me diga registro no existe.

tengo una tabla llamada itebis y dos edit por donde buscar que es edcodigo y editebis, que cuando le ponga valor a cualquiera de los edit me diga y no encuente nada con ese registro me diga registro no existe.

si existe que me traiga la consulta.

ya tengo el codigo de la consulta solo me falta el que me diga que registro no existe.

osmuar_exp 12-06-2010 00:24:09

IsEmpty
 
Hola, mira yo no conozco una consulta que retorne una leyenda o algo que te indique que la consulta fue vacia,
pero puedes aplicar esto...

Código Delphi [-]
 if adoquery.IsEmpty then
   begin
       //tu codigo
   end
else
   begin
     //más codigo
  end;

Saludos vacios.

droguerman 12-06-2010 00:24:30

Código Delphi [-]
 if  Dataset.Locate('campo_codigo', edcodigo.text, [loCaseInsensitive]) then
begin
  showMessage('No existe el registro');
end
else
begin
  showMessage('el registro existe');
end;

agustin173 12-06-2010 02:42:52

registro no existe
 
lo que yo quiero es que busque en la base de datos y me diga cuando no existe ese registro.

yo lo digito los valores por un edit.

es una consulta y cuando no me traiga registro que me diga registro no existe.

Caral 12-06-2010 02:49:02

Hola
Los dos codigos anteriores sirven para lo que necesitas.
Que es lo que no entiendes?
Saludos

agustin173 12-06-2010 02:55:24

registro no existe
 
Caral Hermano como estas me alegro mucho de verte si tu tienes razon pero cuando lo pongo no me funcionan

te voy a mandar el codigo fijate
Código Delphi [-]
 
Adoitebibuscar.close;
  Adoitebibuscar.SQL.Text := 'Select codigo, fecha, itebis From itebis ';
  if edcodbuscar.Text <> '' then
   begin
    Adoitebibuscar.SQL.Add(' where codigo = '+EdCodBuscar.Text);
    AdoitebiBuscar.Active := True;
    EdCodBuscar.text:= AdoItebiBuscar.Fields[0].AsString;
    EdFechaBuscar.text:= AdoItebiBuscar.Fields[1].AsString;
    EdItebiBuscar.Text:= AdoItebiBuscar.Fields[2].AsString;
  end
  else
   if editebibuscar.Text <> '' then
  begin
    Adoitebibuscar.SQL.Add(' where itebis = '+EditebiBuscar.Text);
    AdoitebiBuscar.Active := True;
    EdCodBuscar.text:= AdoItebiBuscar.Fields[0].AsString;
    EdFechaBuscar.text:= AdoItebiBuscar.Fields[1].AsString;
    EdItebiBuscar.Text:= AdoItebiBuscar.Fields[2].AsString;
  end;
este es el codigo, lo que deseo es que cuando no encuentre un registro me diga registro no existe, a lo mejor e puesto algo mal y por eso no me funciona cuando intento hacer otro 'else'.

como puedo arreglar ese desastre que hice.

Caral 12-06-2010 03:00:23

Hola
Dame un minuto, te saco el codigo que ocupas.
Saludos

Caral 12-06-2010 03:15:07

Hola
Lo mas sencillo para que lo entiendas:
Código Delphi [-]
Adoitebibuscar.close;
Adoitebibuscar.SQL.Text := 'Select codigo, fecha, itebis From itebis ';

if edcodbuscar.Text <> '' then
begin
     Adoitebibuscar.SQL.Add(' where codigo = '+EdCodBuscar.Text);
     AdoitebiBuscar.Active := True;
     If AdoItebiBuscar.Fields[0].AsString = edcodbuscar.Text then
     begin
     Showmessage(' El codigo ya existe, seleccione otro ');
     end
     else
     EdCodBuscar.text:= AdoItebiBuscar.Fields[0].AsString;
     EdFechaBuscar.text:= AdoItebiBuscar.Fields[1].AsString;
     EdItebiBuscar.Text:= AdoItebiBuscar.Fields[2].AsString;
end
else

if editebibuscar.Text <> '' then
begin
     Adoitebibuscar.SQL.Add(' where itebis = '+EditebiBuscar.Text);
     AdoitebiBuscar.Active := True;
     If AdoItebiBuscar.Fields[2].AsString = editebibuscar.Text then
     begin
     Showmessage(' El NO SE QUE ES ya existe, seleccione otro ');
     end
     else
     EdCodBuscar.text:= AdoItebiBuscar.Fields[0].AsString;
     EdFechaBuscar.text:= AdoItebiBuscar.Fields[1].AsString;
     EdItebiBuscar.Text:= AdoItebiBuscar.Fields[2].AsString;
end;
A ver?
Saludos

AzidRain 12-06-2010 03:25:44

Mucha complicación para algo tan simple, suponiendo que la consulta debe devolver únicamente un registro es obvio que si la propiedad RowCount del query es igual a cero es que no existe el registro.

agustin173 12-06-2010 03:42:14

registro no existe
 
Recuerda caral es que busque el registro y si no trae nada que me diga que 'registro no existe'

voy aprobar el codigo que pusiste luego te digo.

Caral 12-06-2010 03:48:51

Hola
Código Delphi [-]
Adoitebibuscar.close;
Adoitebibuscar.SQL.Text := 'Select codigo, fecha, itebis From itebis ';

if edcodbuscar.Text <> '' then
begin
     Adoitebibuscar.SQL.Add(' where codigo = '+EdCodBuscar.Text);
     AdoitebiBuscar.Active := True;
     If AdoItebiBuscar.Fields[0].AsString <> edcodbuscar.Text then
     begin
     Showmessage(' El codigo NO existe, seleccione otro ');
     end
     else
     EdCodBuscar.text:= AdoItebiBuscar.Fields[0].AsString;
     EdFechaBuscar.text:= AdoItebiBuscar.Fields[1].AsString;
     EdItebiBuscar.Text:= AdoItebiBuscar.Fields[2].AsString;
end
else

if editebibuscar.Text <> '' then
begin
     Adoitebibuscar.SQL.Add(' where itebis = '+EditebiBuscar.Text);
     AdoitebiBuscar.Active := True;
     If AdoItebiBuscar.Fields[2].AsString <> editebibuscar.Text then
     begin
     Showmessage(' El NO SE QUE ES NO existe, seleccione otro ');
     end
     else
     EdCodBuscar.text:= AdoItebiBuscar.Fields[0].AsString;
     EdFechaBuscar.text:= AdoItebiBuscar.Fields[1].AsString;
     EdItebiBuscar.Text:= AdoItebiBuscar.Fields[2].AsString;
end;
Es lo mismo, solo que en vez de igual, diferente.
Tambien se puede hacer cun un record count, como dice Azid, es casi lo mismo, una comparacion.
Saludos

AzidRain 12-06-2010 23:50:40

Creo que es el resultado puede ser el mismo Caral pero es más optimizado hacer esto:
Código Delphi [-]
With AdoIteBuscar Do
Begin
  If Active Then Close;
  SQL.Clear;
  SQL.Add('Select codigo, fecha, itebis From itebis where   codigo=:codigo_buscar');
  ParamByName('codigo_buscar').AsString := editIteBuscar.Text;
  Open;
  If RecordCount= 0 Then ShowMessage('El código no existe');
End;

Es mucho más compacto y sencillo de entender

Caral 13-06-2010 00:16:51

Hola
Es lo bueno de delphi, para gustos los colores :D:
Código Delphi [-]
  AdoIteBuscar.Close;
  AdoIteBuscar.SQL.Text: 'Select codigo, fecha, itebis From itebis where codigo = :cod');
  AdoIteBuscar.Parameters[0].Value := editIteBuscar.Text;
  AdoIteBuscar.Open;
  If AdoIteBuscar.RecordCount = 0 Then ShowMessage('El código no existe');
Hay muchas maneras de cazar a ese raton.
Saludos

AzidRain 13-06-2010 18:17:24

La forma de acceder a los parámetros que pusiste es otra variante pero para mi gusto no es tan cómoda como hacerlo por su nombre ya que cuando tienes varios parámetros el código resultante puede no ser tan legible. Bueno y Agustin? Ya no nos comentó si le funcionó...

Caral 13-06-2010 20:48:59

Hola
Cuando no regresan a por mas es: funciono o no les agrado la respuesta.:D
Se hizo lo que se pudo.:)
Saludos

AzidRain 13-06-2010 23:24:52

JAjaja, tienes razón, mi estimado Caral...jajaja, creo que nomás nos "utilizó" para sacar su chamba, que estarás de acuerdo, no erá taaan difícil y con los nortes que le ibamos dando bien pudo haberlo deducido por sí mismo...pero de cualquier forma estuvo bueno el intercambio para conocer diversos estilos.

agustin173 15-06-2010 13:42:15

registro no existe
 
Caral espero que estes bien

no te habia podido responder porque estaba en el interior del pais haciendo unos trabajos y lo que estoy haciendo no es una chamba como dice Azirain

es un trabajo de la universidad que estoy haciendo, les pido disculpa por no contestar a tiempo.

voy a probarlo, en el trascurso del dia le dire si me funciono

disculpen la tardanza.

agustin173 15-06-2010 14:00:29

registro no existe
 
Caral Azirain

muchas gracias me funciono.

y vuelvo a pedir disculpas a ustedes y a todos los del foro pero fue por asunto de trabajo.

y gracias tambien a los que ayudaron dando sus aportes tambien muchas gracias.

AzidRain 15-06-2010 21:17:15

No te preocupes agustin, se entiende y no tienes nada de que preocuparte, solo nos pareció raro que no regresaras. Ojalá y continúes por aquí, aprenderás mucho, te lo aseguro.

agustin173 15-06-2010 23:56:14

registro no existe
 
Gracias por entender Azidrain

Espero que caral haya recibido mis disculpas tambien.


La franja horaria es GMT +2. Ahora son las 04:32:00.

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