Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-11-2005
samuelabad samuelabad is offline
Miembro
 
Registrado: jun 2005
Posts: 10
Poder: 0
samuelabad Va por buen camino
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 !!!
__________________
---------------------------------
********** ASAPH **********
---------------------------------

Última edición por samuelabad fecha: 05-11-2005 a las 22:34:31.
Responder Con Cita
  #2  
Antiguo 05-11-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¿Cuál es la sentencia SQL que estás usando y cuál es el texto del error que te genera?

// Saludos
Responder Con Cita
  #3  
Antiguo 05-11-2005
samuelabad samuelabad is offline
Miembro
 
Registrado: jun 2005
Posts: 10
Poder: 0
samuelabad Va por buen camino
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
__________________
---------------------------------
********** ASAPH **********
---------------------------------
Responder Con Cita
  #4  
Antiguo 05-11-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
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.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #5  
Antiguo 05-11-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Marcos, creo que no es correcto esto que dices. Si hace un COUNT, siempre regresará un registro, aun cuando su valor sea cero.

// Saludos
Responder Con Cita
  #6  
Antiguo 05-11-2005
samuelabad samuelabad is offline
Miembro
 
Registrado: jun 2005
Posts: 10
Poder: 0
samuelabad Va por buen camino
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');
__________________
---------------------------------
********** ASAPH **********
---------------------------------
Responder Con Cita
  #7  
Antiguo 05-11-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #8  
Antiguo 05-11-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
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
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #9  
Antiguo 06-11-2005
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
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');
Responder Con Cita
  #10  
Antiguo 06-11-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
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.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
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


La franja horaria es GMT +2. Ahora son las 19:35:59.


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