Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-07-2007
Avatar de magnu9
magnu9 magnu9 is offline
Miembro
 
Registrado: nov 2006
Posts: 84
Poder: 18
magnu9 Va por buen camino
Error No existe columna 'cod'

Un saludo a ver quien me da una mano... estoy trantando de hacer la entrada de usuario antes de acceder al sistema... lo intento con siguiente codigo. Utilizo SQL SERVER. Dicho codigo me da un error de que no existe la columna "cod" pues se lo tengo como parameters... aun asi me da el error.
En el string de mi adoquery coloco la siguiente sentencia "
SELECT codusu, nomusu, pasusu FROM Usuario where codusu=cod
"
Código Delphi [-]
procedure TFLogin.BtnOkClick(Sender: TObject);

begin
 
LoginOK :=False;
   AdoQuery1.Parameters.ParamByName('cod').Value:= Edit1.Text;
   AdoQuery1.Active:= True;
   If AdoQuery1.RecordCount < 1 then
    Begin
       Cuenta := Cuenta + 1;
       MessageDlg('Usuario no encontrado',mtError, [mbOK], 0);
       Edit1.Text := '';
       Edit2.Text := '';
       AdoQuery1.Active := False;
    If Cuenta = 3 then  Application.Terminate;
    end
   else
    If AdoQuery1pasusu.AsString = Edit2.Text then
        Begin
           LoginOk := True;
           Usuario := AdoQuery1codusu.AsString;
           Nombre := AdoQuery1nomusu.AsString;
           AdoQuery1.Active := False;
           Close;
        end
     else
         Begin
           Cuenta := Cuenta + 1;
           MessageDlg('Clave Inválida',mtError, [mbOK], 0);
           Edit2.Text := '';
           AdoQuery1.Active := False;
      If Cuenta = 3 then Application.Terminate;
         end;

end;
procedure TFLogin.BtnCancelClick(Sender: TObject);
begin
   LoginOK :=False;
   Application.Terminate;
end;
procedure TFLogin.FormCreate(Sender: TObject);
begin
     Cuenta := 0;
   Usuario := '';
   Nombre := '';
end;
Responder Con Cita
  #2  
Antiguo 10-07-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
En parameters tienes que añadir Cod

Saludos
Responder Con Cita
  #3  
Antiguo 10-07-2007
Avatar de magnu9
magnu9 magnu9 is offline
Miembro
 
Registrado: nov 2006
Posts: 84
Poder: 18
magnu9 Va por buen camino
Gracias

De ante manos gracias Caral, siempre tu empeño por ayudar y que mas que bendecirte.

Y muy buena tu manera de informar con la pantalla. Sabes ese código lo tomé de tu sistema gesatrans. Pero hago eso en parameters coloco Cod, pero creo que el error es en el String del ADOQUERI1 que no encuentra Cod en CODUSU=Cod. Oh quizas mi base de datos.

Lo seguiré intentando a ver... si tiene una opinión bien recibida será.
Responder Con Cita
  #4  
Antiguo 10-07-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Cambia la sentencia del adoquery1 asi:
Código SQL [-]
SELECT codusu, nomusu, pasusu FROM Usuario
Y cambia la primera parte del codigo asi:
Código Delphi [-]
   LoginOK :=False;
   //   AdoQuery1.Parameters.ParamByName('cod').Value:= Edit1.Text;
   ADOQuery1.SQL.Add('Where codusu = '''+Edit1.Text+'''');
   AdoQuery1.Active:= True;
Si tienes algun problema con las comillas del edit, esto depende de la base de datos, puedes probar varias formas, pero creo que funcionara.
Este sistema es esencialmente lo mismo, solo que sin parametros.
Saludos
Responder Con Cita
  #5  
Antiguo 10-07-2007
Avatar de Onti
Onti Onti is offline
Miembro
 
Registrado: jul 2003
Ubicación: La Paz - Bolivia
Posts: 500
Poder: 21
Onti Va por buen camino
Cita:
Empezado por magnu9
lo intento con siguiente codigo. Utilizo SQL SERVER. Dicho codigo me da un error de que no existe la columna "cod" pues se lo tengo como parameters... aun asi me da el error.
En el string de mi adoquery coloco la siguiente sentencia "
SELECT codusu, nomusu, pasusu FROM Usuario where codusu=cod
"
en tu sentencia original solo tienes que incluir "dos puntos" para que sea reconocida como parámetro

Código Delphi [-]
SELECT codusu, nomusu, pasusu FROM Usuario where codusu= :cod
Responder Con Cita
  #6  
Antiguo 10-07-2007
Avatar de magnu9
magnu9 magnu9 is offline
Miembro
 
Registrado: nov 2006
Posts: 84
Poder: 18
magnu9 Va por buen camino
Otro problemita

Gracias ya logré resolver cierta parte de pasar el parametro con los =: puntos agregados antes de Cod en el String del EQL.

El problema radica ahora en que no me reconoce la clave de entrada. Pero si en vez de ponerlo IGUAL =.. lo coloco <> accede al sistema. En la parte que coloque las dos caritas.

Código Delphi [-]
procedure TFLogin.BtnOkClick(Sender: TObject);
begin
LoginOK :=False;
 // ADOQuery1.SQL.Add('Where codusu = '''+txtUsuario.Text+'''');
   AdoQuery1.Parameters.ParamByName('cod').Value:= txtUsuario.Text;
   AdoQuery1.Active:= True;
   If AdoQuery1.RecordCount < 1 then
    Begin
       Cuenta := Cuenta + 1;
       MessageDlg('Usuario no encontrado',mtError, [mbOK], 0);
       txtUsuario.Text := '';
       txtContra.Text := '';
       AdoQuery1.Active := False;
    If Cuenta = 3 then  Application.Terminate;
    end
   else
     If AdoQuery1pasusu.AsString = txtContra.Text then
        Begin
        LoginOk := True;
         Usuario := AdoQuery1codusu.AsString;
          Nombre := AdoQuery1pasusu.AsString;
          AdoQuery1.Active := false;
          Close; 
        end
     else
         Begin
           Cuenta := Cuenta + 1;
           MessageDlg('Clave Inválida',mtError, [mbOK], 0);
           txtContra.Text := '';
           AdoQuery1.Active := False;
      If Cuenta = 3 then Application.Terminate;
         end;
Responder Con Cita
  #7  
Antiguo 11-07-2007
mamaro mamaro is offline
Miembro
 
Registrado: mar 2004
Posts: 79
Poder: 21
mamaro Va por buen camino
hola

Puede ser que se trate de un problema con las mayúsculas y minusculas.

prueba esto:

SELECT codusu, nomusu, pasusu FROM Usuario where UPPERCASE(codusu)= UPPERCASE(:cod)

PD: No estoy seguro si UPPERCASE es reconocido en SQL Server (yo utilizo Firebird).
Responder Con Cita
  #8  
Antiguo 11-07-2007
Avatar de magnu9
magnu9 magnu9 is offline
Miembro
 
Registrado: nov 2006
Posts: 84
Poder: 18
magnu9 Va por buen camino
Saludos a todos

Saludos a todos, Mamaro, Caral y Onti. Lo he intentado de muchas maneras, y encontre la siguiente manera... pero tienes ciertas fallas.. por ejemplo si no logras entrar en la primera oportunidad la segunda y la tercera no importan ya que sale el mismo error como cuando te equivoca la primera vez... creo que al que afinarla un poquito más... a ver si se animan apoyarme. Gracias de antemanos.
Código Delphi [-]
  LoginOK :=False;
   AdoQuery1.Parameters.ParamByName('Cod').Value:= Edit1.Text;
   ADOQuery1.SQL.Add('and pasusu = '''+edit2.Text+'''');
   AdoQuery1.Active:= True;
   IF (Edit1.Text= '') OR (EDIT2.Text = '') THEN  BEGIN
    MessageDlg('DIGITE LOS ESPACIO EN BLANCO', mtInformation,[mbCancel], 0,);
    Edit1.Text := '';
    Edit2.Text := '';
    END
   ELSE If AdoQuery1.RecordCount < 1 then
    Begin
       Cuenta := Cuenta + 1;
       MessageDlg('Usuario no encontrado',mtError, [mbOK], 0);
       Edit1.Text := '';
       Edit2.Text := '';
    If Cuenta = 3 then  Application.Terminate;
    END
    else close;
Responder Con Cita
  #9  
Antiguo 11-07-2007
Avatar de Onti
Onti Onti is offline
Miembro
 
Registrado: jul 2003
Ubicación: La Paz - Bolivia
Posts: 500
Poder: 21
Onti Va por buen camino
Algunos cambios sugeridos:

1.- Cambia tu Sql inicial por
Código SQL [-]
SELECT codusu, nomusu, pasusu FROM Usuario where codusu=:cod and PasUsu = :PasUsu"
2.- Valida si los "edits" están vacíos antes de realizar la consulta y mejor si utilizas la función "length"

3. Utiliza ParamByName para el pass
4. Utiliza la funcion Inc para incrementar tu contador

Código Delphi [-]
  // Verificar edit vacios
    If (Length(Edit1.text)+Length(Edit2.text))=0 then
      Begin
        MessageDlg('DIGITE LOS ESPACIO EN BLANCO',mtInformation,[mbCancel], 0,);
        Exit;
      End;

  // Inicializar variables
    LoginOK :=False;

  // Realizar consulta
    AdoQuery1.Close;
    AdoQuery1.Parameters.ParamByName('Cod').Value    := Edit1.Text;
    AdoQuery1.Parameters.ParamByName('PasUsu').Value := Edit2.Text;
    AdoQuery1.Open;
    If AdoQuery1.RecordCount =0 then
      Begin
        Inc(Cuenta);
        MessageDlg('Usuario no encontrado',mtError, [mbOK], 0);
        Edit1.Text := '';
        Edit2.Text := '';
      End
    Else
      LoginOk:=True;
    AdoQuery1.Close;
    If Cuenta = 3 then  
      Application.Terminate;

Última edición por Onti fecha: 11-07-2007 a las 21:20:24.
Responder Con Cita
  #10  
Antiguo 11-07-2007
Avatar de magnu9
magnu9 magnu9 is offline
Miembro
 
Registrado: nov 2006
Posts: 84
Poder: 18
magnu9 Va por buen camino
Thumbs up Gracias...

Gracias Onti y a los demas... tu última respuesta termino siendo lo que queria hasta el momento todo funciona a la perfeccion asi que Mil Gracias. Y no se preocupen mis siguientes dudas estan a la deriba de mi sistema.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Hacer que una columna de un DbGrid aparezca distinta según valor Aprendiendo OOP 11 30-11-2018 14:47:20
Error en columna en Trigger brakaman Firebird e Interbase 2 13-06-2007 18:14:14
Error: componente ya existe Manuel Varios 4 22-08-2006 21:09:03
Error al añadir columna JorgeBec SQL 1 21-02-2004 02:51:44
Error "Ya existe un componente con el nombre QRStandarPreview" Jose Manuel Impresión 5 13-06-2003 07:55:26


La franja horaria es GMT +2. Ahora son las 03:43:39.


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