Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   ayuda con adoquery (https://www.clubdelphi.com/foros/showthread.php?t=20173)

buffygcs 07-04-2005 17:20:26

ayuda con adoquery
 
Hola tengo un problema, estoy trabajando con una base de datos en sqlserver y antes de insertar un dato tengo que verificar en la tabla si existe o no para poder insertar
with adoquery1 do
begin
close;
sql.Clear;
sql.Add('select sistema_estudios from setstlm
where sistema_estudios= :valorclave');
Parameters.ParamByName('valorclave').Value:= clave.Text;
ExecSQL;
end;

el problema es que no se como recuperar el resultado, es decir como se si hubo registro o no.

Bueno espero que me puedan ayudar

marcoszorrilla 07-04-2005 17:22:43

Modifica el SQL y lanza un Select Count y así sabras si hay resultados o no, bastará con saber que te devuelva registros.

Un Saludo.

buffygcs 07-04-2005 18:27:44

yo de nuevo
 
hola gracias por tu ayuda pero ahora quiero obtener el resultado y asignarlo a una variable entera como le hago :p

marcoszorrilla 07-04-2005 19:01:14

Código Delphi [-]
 procedure TForm1.Button1Click(Sender: TObject);
 begin
 edit1.Text:=Query1.Fields[0].AsString;
 end;

Un Saludo.

MasterXP 07-04-2005 19:52:34

yo uso MySQL, ejemplo en MySQL:

Código Delphi [-]
  With Query1 DO
  Begin
  Close;
  SQL.Clear;
  SQL.Add('Select (Count(Distinct(TuCampo))) From TuTabla;')
  Open;
  Existe:=Fields[0].AsInteger;
  Close;
 end;

salu2.

MasterXP 07-04-2005 19:57:09

Ahh, tambien he creado una funcion, que et sirve para saber si existe, y cual es el ultimo numero de un campo numerico en la DB.

Código Delphi [-]
 Function BancaNext(X:Integer):Integer;
 begin
 With Datamodule1 DO
 Begin
 ADOQueryGeneral.Close;
 ADOQueryGeneral.SQL.Clear;
 ADOQueryGeneral.SQL.Add('SELECT BANCA FROM empleados_Datos');
 ADOQueryGeneral.Open;
 ADOQueryGeneral.First;
 X:=ADOQueryGeneral.Fields[0].AsInteger;
 WHILE X=ADOQueryGeneral.Fields[0].AsInteger do
 begin
 X:=X+1;
 ADOQuerygeneral.Next;
 End;
 Result:=X;
 end;
 end;

espero te sirva, un salu2.

fjcg02 18-04-2005 13:45:16

Me parece que matas moscas a cañonazos.

si haces

Código:

select max(banca) from empleados_datos group by banca
ya sabes el valor más alto de ese campo sin recorrerlos todos. Sólo tienes que sumarle uno para saber el siguiente número, siempre y cuando no se den dos registros de alta a la vez.

En el ejemplo que pones, si la tabla tiene muchos registros, perderás eficacia, ya que recorres todos los registros de la tabla.

Aunque tu tabla tenga pocos registros, no se debe perder la elegancia.

Espero que te sea de ayuda.

Un saludo


La franja horaria es GMT +2. Ahora son las 06:56:16.

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