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
  #21  
Antiguo 06-03-2010
Fiebru Fiebru is offline
Miembro
 
Registrado: dic 2009
Posts: 16
Poder: 0
Fiebru Va por buen camino
Lo probare tambien....

Ya que ahora mismo estoy en un cyber....hey si sigues asi seras buen profesor.
Responder Con Cita
  #22  
Antiguo 08-03-2010
Fiebru Fiebru is offline
Miembro
 
Registrado: dic 2009
Posts: 16
Poder: 0
Fiebru Va por buen camino
Tengo otro problemita

El codigo que me diste lo adapte a mi programa, este es el codigo actual de la ventana...
Código Delphi [-]
unit EntradaUsuario;

interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Mask, DBCtrls, DB, DBTables, ADODB;

type
  TFrmEntradaUsuario = class(TForm)
    BtnAceptar: TButton;
    BtnCancelar: TButton;
    DataSource1: TDataSource;
    ADOQuery1: TADOQuery;
    ADOQuery1NombredeUsuario: TWideStringField;
    ADOQuery1Contrasena: TWideStringField;
    Label1: TLabel;
    Label2: TLabel;
    EUsuario: TEdit;
    EContrasena: TEdit;
    ADOConnection1: TADOConnection;
    procedure BtnCancelarClick(Sender: TObject);
    procedure BtnAceptarClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FrmEntradaUsuario: TFrmEntradaUsuario;

implementation

uses Menu;

{$R *.dfm}

procedure TFrmEntradaUsuario.BtnCancelarClick(Sender: TObject);
begin
FrmEntradaUsuario.close
end;

procedure TFrmEntradaUsuario.BtnAceptarClick(Sender: TObject);

begin
ADOQuery1.Parameters.ParamByName('nom').Value:= EUsuario.Text;
ADOQuery1.Active:= True;
EUsuario.Text:= ADOQuery1.Fields[1].AsString;
If ADOQuery1.RecordCount < 1 then
    Begin
MessageDlg('Usuario no encontrado',mtError, [mbOK], 0);
 EUsuario.Text := '';
       EContrasena.Text := '';
ADOQuery1.Active := False;
end
   else
If ADOQuery1Contrasena.AsString = EContrasena.Text then
Begin
 ADOQuery1.Active := False;
FrmMenu:=TFrmMenu.Create(self);
           try
FrmEntradaUsuario.Visible:= False;
FrmMenu.ShowModal;
           finally
           FrmMenu.Free;
           end;
           Close;
        end
     else
end;
end.

Pero ahora hay otro incidente. Es que cuando voy a entrar cualquier clave, me sale una ventana con un error diciendo que falta un operador en la expresion de consulta 'Nombre de Usuario'.

Creo que se refiere al contenido del String List Editor:
SELECT Nombre de Usuario, Contrasena FROM
Usuarios WHERE
Nombre de Usuario = :nom


Bueno creo que ya estoy cerca de dar con el problema, pero necesito un empujon, jejeje.

Última edición por Neftali [Germán.Estévez] fecha: 09-03-2010 a las 12:02:13. Razón: Añadir TAG's
Responder Con Cita
  #23  
Antiguo 09-03-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
A ver asi:
Código Delphi [-]
procedure TFrmEntradaUsuario.BtnAceptarClick(Sender: TObject);
begin
ADOQuery1.SQL.Text:= 'SELECT Usuario, Contrasena FROM Usuarios WHERE Usuario = :nom';
ADOQuery1.Parameters[0].Value:= EUsuario.Text;
ADOQuery1.Active:= True;
EUsuario.Text:= ADOQuery1.Fields[1].AsString;
If ADOQuery1.RecordCount < 1 then
Begin
MessageDlg('Usuario no encontrado',mtError, [mbOK], 0);
EUsuario.Text := '';
EContrasena.Text := '';
ADOQuery1.Active := False;
end
else
If ADOQuery1Contrasena.AsString = EContrasena.Text then
Begin
ADOQuery1.Active := False;
FrmMenu:=TFrmMenu.Create(self);
try
FrmEntradaUsuario.Visible:= False;
FrmMenu.ShowModal;
finally
FrmMenu.Free;
end;
Close;
end
else
end;
end.
La diferencia esta en que simplemente se hace la sentencia sql por codigo y no directa en la casilla string del query, que por cierto se necesita especificar el parametro, ahi esta el error que te da.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #24  
Antiguo 09-03-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.331
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Fiebru, si utilizas TAG's cuando escribas código Delphi verás que se lee bastante mejor.

En el anterior ya las añado yo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #25  
Antiguo 09-03-2010
Fiebru Fiebru is offline
Miembro
 
Registrado: dic 2009
Posts: 16
Poder: 0
Fiebru Va por buen camino
Bien Caral....

Ya estoy entendiendo por donde va el asunto.

Neftali: disculpa lo de
Código Delphi [-]
los tags,
no sabia lo que era, pero te prometo que los usare mas adelante.

Caral: despues te dire si llegue al tic del asunto o no.

Gracias.
Responder Con Cita
  #26  
Antiguo 10-03-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.331
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Fiebru Ver Mensaje
Neftali: disculpa lo delos tags, no sabia lo que era...
No hace falta disculparse, al principio suele pasar...

Un saludo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #27  
Antiguo 10-03-2010
Fiebru Fiebru is offline
Miembro
 
Registrado: dic 2009
Posts: 16
Poder: 0
Fiebru Va por buen camino
Ya hasta verguenza me da...

Ahora me sale un error que me dice "No se han especificado algunos parametros requeridos". Pero no se si se refiere al string o al codigo en si.

A continuacion el cogido actual, que veras algunas pequeñas modificaciones...

Código Delphi [-]
unit EntradaUsuario;

interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Mask, DBCtrls, DB, DBTables, ADODB;

type
  TFrmEntradaUsuario = class(TForm)
    BtnAceptar: TButton;
    BtnCancelar: TButton;
    DataSource1: TDataSource;
    ADOQuery1: TADOQuery;
    ADOQuery1NombredeUsuario: TWideStringField;
    ADOQuery1Contrasena: TWideStringField;
    Label1: TLabel;
    Label2: TLabel;
    EUsuario: TEdit;
    EContrasena: TEdit;
    ADOConnection1: TADOConnection;
    procedure BtnCancelarClick(Sender: TObject);
    procedure BtnAceptarClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FrmEntradaUsuario: TFrmEntradaUsuario;

implementation

uses Menu;

{$R *.dfm}

procedure TFrmEntradaUsuario.BtnCancelarClick(Sender: TObject);
begin
FrmEntradaUsuario.close
end;

procedure TFrmEntradaUsuario.BtnAceptarClick(Sender: TObject);

begin
ADOQuery1.SQL.Text:= 'SELECT Usuario, Contrasena FROM Usuarios WHERE Usuario = :nom';
ADOQuery1.Parameters[0].Value:= EUsuario.Text;
ADOQuery1.Parameters.ParamByName('nom').Value:= EUsuario.Text;
ADOQuery1.Active:= True;
EUsuario.Text:= ADOQuery1.Fields[1].AsString;
If ADOQuery1.RecordCount < 1 then
    Begin
MessageDlg('Usuario no encontrado',mtError, [mbOK], 0);
 EUsuario.Text := '';
       EContrasena.Text := '';
ADOQuery1.Active := False;
end
   else
If ADOQuery1Contrasena.AsString = EContrasena.Text then
Begin
 ADOQuery1.Active := False;
FrmMenu:=TFrmMenu.Create(self);
           try
FrmEntradaUsuario.Visible:= False;
FrmMenu.ShowModal;
           finally
           FrmMenu.Free;
           end;
           Close;
        end
     else
end;
end.


La linea que resalte en negrita: EUsuario.Text:=ADOQuery1.Fields[1].AsString; es donde me señala el error. Pero puede ser que los parametros que tengan problemas son los del String. Que dicen: Select * from Usuarios

Bueno, como quiera que sea, hoy tengo clases y aprovechare para preguntarle a mi profe.

Gracias de todos modos.
Responder Con Cita
  #28  
Antiguo 11-03-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Veamos el codigo:
Código Delphi [-]
procedure TFrmEntradaUsuario.BtnAceptarClick(Sender: TObject);
begin
ADOQuery1.SQL.Text:= 'SELECT Usuario, Contrasena FROM Usuarios WHERE Usuario = :nom';
ADOQuery1.Parameters[0].Value:= EUsuario.Text;// aqui indico el parametro BIEN
// ADOQuery1.Parameters.ParamByName('nom').Value:= EUsuario.Text; // aqui estoy indicando otra vez lo mismo sobra NO TAN BIEN, o es uno u otro.
ADOQuery1.Active:= True; // activo BIEN
// EUsuario.Text:= ADOQuery1.Fields[1].AsString; // aqui indicas que el usuario es el 1, cuando es el 0 osea: 
//como en el codigo siguiente, mira la diferencia:
EUsuario.Text:= ADOQuery1.Fields[0].AsString; // usuario 0, Contraseña 1
If ADOQuery1.RecordCount < 1 then // si hago un recuento entonces...
    Begin
MessageDlg('Usuario no encontrado',mtError, [mbOK], 0);
 EUsuario.Text := '';
       EContrasena.Text := '';
ADOQuery1.Active := False;
end
   else
If ADOQuery1Contrasena.AsString = EContrasena.Text then
Begin
 ADOQuery1.Active := False;
FrmMenu:=TFrmMenu.Create(self);
           try
FrmEntradaUsuario.Visible:= False;
FrmMenu.ShowModal;
           finally
           FrmMenu.Free;
           end;
           Close;
        end
     else
end;
Debería funcionar, no le veo mas inconvenientes, aunque recuerda que solo trato de aportar, no me hagas mucho caso.
Para mi, vas muy bien.
Saludos
__________________
Siempre Novato

Última edición por Caral fecha: 11-03-2010 a las 01:20:23.
Responder Con Cita
  #29  
Antiguo 11-03-2010
Fiebru Fiebru is offline
Miembro
 
Registrado: dic 2009
Posts: 16
Poder: 0
Fiebru Va por buen camino
Thumbs up Lo termine!!!!!!!!!!!!!

El unico problemita que faltaba era que el nombre del campo que llamaba el codigo es "Usuario", mientras que el campo de la tabla que realmente yo habia conectado se llamaba "Nombre de Usuario".
Lo unico que tuve que hacer fue cambiarle el nombre en Access, de "Nombre de Usuario" a "Usuario".
Esto lo hice, no sin antes haberle preguntado a mi profe .

Bueno, usare esta misma tecnica para las demas ventanas que me estan dando el mismo problema.

Muchas gracias Caral.
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
captura de datos vlady3086 OOP 3 03-03-2009 17:08:52
enlazar datos con ventana de captura zidfrid API de Windows 3 28-04-2008 20:36:47
captura de errores de bases de datos en delphi 7 godie12345 Varios 5 11-12-2007 17:51:55
Forzar captura datos en un DBEdit Goyo OOP 4 20-09-2006 17:07:58
Captura Datos Com1 EdyBay Varios 2 04-08-2005 14:49:05


La franja horaria es GMT +2. Ahora son las 14:16:17.


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