Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   validacion de clave (https://www.clubdelphi.com/foros/showthread.php?t=26867)

samuelabad 05-11-2005 22:30:55

validacion de clave
 
Saludos a todos y gracias por su ayuda de antemano.

mi problema es que he estado tratando de hacer una funcion por medio de la cual valide cuando quiero agregar un registro a mi tabla si la clave que estoy ingresando ya existe y entonces me regrese un valor indicando esto pues de otra manera me manda un mensaje de error bien raro generado por el sql de que la clave que estoy ingresando ya existe.
No se si alguien me pudiera ayudar con esta funcion, la clave la ingreso a un edit y cuando doy click en el boton guardar es cuando debe de decir si la clave existe o no.
Gracias !!!

roman 05-11-2005 22:33:00

¿Cuál es la sentencia SQL que estás usando y cuál es el texto del error que te genera?

// Saludos

samuelabad 05-11-2005 22:45:42

Esta es mi Sentencia
 
ADOModulo.ADOQuery1.SQL.Clear;
ADOModulo.ADOQuery1.SQL.Add('Select clave_mpo from municipios where clave_mpo= (edit1.text)');
i:=ADOModulo.ADOQuery1.sql.rowsaffected;
No me deja ni compilarla me dice que no reconoce rowsaffected, Uso Delphi 7

marcoszorrilla 05-11-2005 22:48:14

Pues yo utilizaría un simple Count, con la condición que pones y si devuelve registros es que ya existe el registro.

Un Saludo.

roman 05-11-2005 22:52:58

Marcos, creo que no es correcto esto que dices. Si hace un COUNT, siempre regresará un registro, aun cuando su valor sea cero.

// Saludos

samuelabad 05-11-2005 22:58:59

Codigo
 
Intente con esto pero aun asi me manda error del sql cuando agrego una clave ya ingresada, osea no me valida todabia

i:=0;
ADOModulo.ADOQuery1.SQL.Clear;
ADOModulo.ADOQuery1.SQL.text:=('Select clave_mpo from municipios where clave_mpo=:cl');
ADOModulo.ADOQuery1.ExecSQL;
i:=ADOModulo.ADOQuery1.rowsaffected;
if i=0 then
ShowMessage('La clave es Valida')
else
ShowMessage('La clave es Invalida');

roman 05-11-2005 23:02:05

RowsAffected te devuelve el número de registros afectados (modificados o borrados). Tú estás seleccionando registros, no afectándolos en forma alguna. De ahí que no te funcione.

// Saludos

vtdeleon 05-11-2005 23:07:20

Saludos

Bueno, he hecho una prueba con IBx y Firebird, y RowsAffected me devuelve un valor con Select. No se si Con Ado sea diferente :confused:

luisgutierrezb 06-11-2005 00:59:41

Porque no intentas:
ADOModulo.ADOQuery1.SQL.Clear;
ADOModulo.ADOQuery1.SQL.text:=('Select clave_mpo from municipios where clave_mpo=:cl');
ADOModulo.ADOQuery1.ExecSQL;
If ADOModulo.AdoQuery1.IsEmpty then
ShowMessage('La clave es Valida')
else
ShowMessage('La clave es Invalida');

marcoszorrilla 06-11-2005 12:25:48

Hola Román, tienes razón en tu afirmación, pero lo que yo progongo funciona:

Código Delphi [-]
 procedure TForm1.Button1Click(Sender: TObject);
 begin
 Adoquery1.Close;
 Adoquery1.SQL.Clear;
 Adoquery1.SQL.Add('Select count(*) as Registros From Precios');
 Adoquery1.SQL.Add('Where codigo = ''001''');
 Adoquery1.Open;
 
   if Adoquery1.Fields[0].AsInteger = 0 then
   ShowMessage('No existe ningún Registro')
   else
   ShowMessage('Registros devueltos:'+Adoquery1.Fields[0].AsString);
 end;

Me estoy refiriendo no al número de registros devueltos, que como muy bien dices como mínimo sería uno, sino a la cuenta que si que arrojará 0 cuando no exista ningún registro que cumpla la condición.

Un Saludo.


La franja horaria es GMT +2. Ahora son las 06:51:41.

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