Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Captura de Datos de Ado (https://www.clubdelphi.com/foros/showthread.php?t=66650)

Fiebru 05-03-2010 01:41:44

Captura de Datos de Ado
 
Resulta que estoy desarrollando un proyecto en Delphi 7 que usa Ado Connection para Access, pero el programa solo lee la primera linea de cada tabla, o sea, solo lee la primera linea que he guardado de cada tabla. No se si el inconveniente esta en que en la parte de SQL puse: Select * from Usuario´
Teniendo en cuenta que Usuario es el nombre de una tabla en particular.

Les agradecere enormemente que me ayuden con esto.

Caral 05-03-2010 02:15:42

Hola
Supongo que los datos te los muestra en DBEdit.
Si no pones un DBNaviagtor y lo enlazas al Datasource dará la impresión de que solo muestra el primer registro, aunque estén todos ahí.
Para asegurarte coloca un DBGrid y lo enlazas al Datasource, deberian verse todos los registros.
Saludos

Fiebru 05-03-2010 02:22:36

Eso esta bien pero....
 
Una de las ventanas es una entrada de usuario. Cuando la pongo a prueba me doy cuenta de que dicha ventana solo acepta los datos del primer usuario (en este caso: Juan en el nombre, y 20040708 en la contraseña) que guardé en la tabla a la que esta enlazada, los demas datos no los lee.

¿Si cambio los Edit por DBEdit, podria tener el resultado que quiero, o sea, que lea los demas datos de manera que funcione como una entrada de usuario correcta?

Caral 05-03-2010 02:24:10

Hola
No entiendo.
Saludos

Fiebru 05-03-2010 02:30:18

Me explicare mejor....
 
Tengo una ventana que sirve para que los usuarios se identifiquen. Contiene un Edit para el nombre, otro Edit para la contraseña, un boton de Aceptar, y un boton de Cancelar.

Entonces he conectado esta ventana a una tabla de Access que tiene varios nombres de usuario y contraseñas diversas, sucede que el unico usuario que acepta la ventana es el primero que guarde previamente en la tabla, los demas no los lee.

Espero haberme explicado, de lo contrario haganmelo saber, por favor.

Caral 05-03-2010 02:34:21

Hola
Ahora si te entiendo.
Es dificil saber la razon sin ver el codigo que tienes.
Opcion 1- pones en un zip el codigo (sin el exe) y la base de datos aqui para revisarlo.
Opcion 2- Muestra el codigo que tienes (copialo y pegalo).
Saludos

Fiebru 05-03-2010 02:37:24

Lo hare mañana....
 
Mañana traere el codigo porque aqui no tengo disponible el codigo.

Y lo hare en las dos opciones.

Gracias de antemano.

Caral 05-03-2010 02:53:18

Hola
Mira este código, te va a servir de ejemplo.
Saludos

Fiebru 05-03-2010 03:01:45

Lo voy a chequiar...
 
Porque ahora estoy en un cyber y mi compu esta en la casa. Pero para no volver a tener este contratiempo, mañana me conectare desde mi compu.

Revisare ese archivo que me mandaste, a ver si por fin entiendo esto.

Una ultima cosa por hoy, ¿tienes por ahi algun libro de Delphi que sea entendible para los humanos? No como algunos que solo los expertos lo entienden (vaya barrabasada esa de hacer un libro para expertos).

Caral 05-03-2010 03:04:03

Hola
Un buen libro :rolleyes:
Club Delphi
Saludos
PD: Que conste que no hago publicidad:D

Fiebru 05-03-2010 03:09:52

Entiendo....
 
Por lo que he visto, aqui son muy solidarios. Esta es una buena comunidad, que vale la pena visitar.

He leido varios manuales y libros de Delphi, pero la mayoria no son muy detallistas, y me quedo con muchas lagunas en la cabeza.

Cuando llegue a casa chequeare lo que me mandaste y mañana te dare mi impresion de lo que vea.

Gracias mi pana.

Caral 05-03-2010 03:13:15

Hola
No esperes mucho de mi, soy un novato.
Aquí hay gente que sabe mucho, ya te ayudaran con tus dudas.
Saludos

Neftali [Germán.Estévez] 05-03-2010 10:24:46

Cita:

Empezado por Fiebru (Mensaje 355693)
¿tienes por ahi algun libro de Delphi que sea entendible para los humanos?

Prueba con la "Cara oculta de Deplhi" que puedes encontrar en el FTP del Club (si revisas este directorio hay alguno más que te puede servir).

También puedes revisar este pequeño curso Online, que es bastante básico y muy bien explicado con imágenes.

Fiebru 06-03-2010 01:59:06

Este es el codigo fuente de la ventana de entrada de usuario:
 
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
if (ADOQuery1NombredeUsuario.Text = EUsuario.Text)
and (ADOQuery1Contrasena.Text = EContrasena.Text)
then FrmMenu.Show;
if (ADOQuery1NombredeUsuario.Text = EUsuario.Text)
and (ADOQuery1Contrasena.Text = EContrasena.Text)
then FrmEntradaUsuario.Hide
else Application.Messagebox('Clave Incorrecta', 'Acceso Denegado', MB_OK);
end;
end.

Fiebru 06-03-2010 02:06:09

Sobre lo dicho por Neftali....
 
Tomare en cuenta esa informacion.

Caral 06-03-2010 02:12:31

Hola
El codigo dice:
Si el query es igual que el edit entonces abre el form.
Muy bien hasta ahi, PERO.
Cual usuario?, Cual clave? el query tiene un sql que dice, selecciona todo y lo hace, por supuesto desde el principio.
Lo logico es que SOLO mostrara o encontrara el primero ya que ahi es donde empieza.
Si viste el codigo que puse veras que existe un parametro dentro del query, este dice:
Si el parametro es igual al usuario entonces abre el from.
Me imagino que veras la diferencia.
Saludos

Fiebru 06-03-2010 02:18:16

Buen punto....
 
El archivo que me mandaste no se como abrirlo porque no dice que tipo de archivo es.

Entonces, ahi es donde tengo el problema, en los parametros, que no se como especificar que es un recorrido que debe hacer, en vez de agarrar el primer dato que encuentre.

Caral 06-03-2010 02:24:32

Hola
El query:
Código Delphi [-]
SELECT CodUsuario, Clave  FROM Usuarios WHERE
CodUsuario = :nom
Dice: Selecciona el codigo del usuario y la clave de la tabla usuarios.
Donde el codigo del usuario sea igual al parametro nom

El codigo del boton aceptar:
ADLoguin es el nombre del query (no te confundas)
Código Delphi [-]
procedure TFLogin.BtnOkClick(Sender: TObject);
begin
    LoginOK := False;
   ADLogin.Parameters.ParamByName('nom').Value:= EUsuario.Text;
   ADLogin.Active:= True;
   EUsuario.Text:= ADLogin.Fields[1].AsString;
   If ADLogin.RecordCount < 1 then
    Begin
       Cuenta := Cuenta + 1;
       MessageDlg('Usuario no encontrado',mtError, [mbOK], 0);
       EUsuario.Text := '';
       EClave.Text := '';
       ADLogin.Active := False;
       If Cuenta = 3 then Close;
    end
   else
       If ADLoginClave.AsString = EClave.Text then
        Begin
           LoginOk := True;
           ADLogin.Active := False;
           FClientes:=TFClientes.Create(self);
           try
           FLogin.Visible:= False;
           FClientes.ShowModal;
           finally
           FClientes.Free;
           end;
           Close;
        end
     else
         Begin
           Cuenta := Cuenta + 1;
           MessageDlg('Clave Inválida',mtError, [mbOK], 0);
           EClave.Text := '';
           ADLogin.Active := False;
           If Cuenta = 3 then Close;
         end;

end;
El archivo que coloque es un ZIP, dentro esta el ejemplo.
Saludos

Fiebru 06-03-2010 02:30:35

Se que es un ZIP...
 
Pero cuando lo descomprimi solo hay un archivo que no se que hacer con el.

El codigo que me pasaste lo voy a chequiar detenidamente a ver si me da resultado.

Gracias de antemano.

Caral 06-03-2010 02:44:48

Hola
Paso a paso:
Código Delphi [-]
procedure TFLogin.BtnOkClick(Sender: TObject); // el procedimiento del boton aceptar
begin
  // olvídate de esto por ahora
  //  LoginOK := False; 

   // el query. parametro. parametro por nombre (nom) = edit . text. 
   ADLogin.Parameters.ParamByName('nom').Value:= EUsuario.Text;
  // activa el query
   ADLogin.Active:= True;
  // edit .text = a query. archivo 1 . como string.
   EUsuario.Text:= ADLogin.Fields[1].AsString;
  // si la cuenta es mayor que uno entonces
    If ADLogin.RecordCount < 1 then
    Begin
   // olviada esto
   //    Cuenta := Cuenta + 1;
   // muestra un mensaje
       MessageDlg('Usuario no encontrado',mtError, [mbOK], 0);
   // retorna a vacío el edit del usuario y clave
       EUsuario.Text := '';
       EClave.Text := '';
    // desactiva el query
       ADLogin.Active := False;
    // olvida esto
    //   If Cuenta = 3 then Close;
    end
   else
       // si query clave como string es igual al edit de la clave entonces
       If ADLoginClave.AsString = EClave.Text then
        Begin
        // olvida esto
        //   LoginOk := True;
        // activa el query
           ADLogin.Active := False;
        // Crea el form en este caso se llama Fclientes
           FClientes:=TFClientes.Create(self);
           try
          // oculta el form del loguin
           FLogin.Visible:= False;
           // abre el form en este caso se llama Fclientes
           FClientes.ShowModal;
           finally
           // cuando termine lo libera
           FClientes.Free;
           end;
           Close;
        end
     else
         Begin
          // esta parte es para darle al usuario solo tres intentos para encontrar la clave
         //  Cuenta := Cuenta + 1;
         //  MessageDlg('Clave Inválida',mtError, [mbOK], 0);
         //  EClave.Text := '';
         //  ADLogin.Active := False;
         //  If Cuenta = 3 then Close;
        // end;

end;
Ni la cara oculta de delphi :D
Saludos


La franja horaria es GMT +2. Ahora son las 07:44:44.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi