Ir al contenido



Foto

Como conecto access con delphi


  • Por favor identifícate para responder
17 respuestas en este tema

#1 delphi1

delphi1

    Member

  • Miembros
  • PipPip
  • 12 mensajes

Escrito 30 octubre 2008 - 02:45

Buenas tardes.
Veo que este foro es nuevo y me gustaria saber si alguien me puede decir como conecto access a delphi.
Se necesita algun componente.
Gracias por su tiempo.
  • 0

#2 Caral

Caral

    Advanced Member

  • Administrador
  • 4.241 mensajes
  • LocationCosta Rica

Escrito 30 octubre 2008 - 03:03

Hola

Buenas tardes.
Veo que este foro es nuevo y me gustaria saber si alguien me puede decir como conecto access a delphi.
Se necesita algun componente.
Gracias por su tiempo.

Bienvenido a Delphiaccess.
Para conectar access con delphi hay varias maneras, la mas conveniente es usando los componentes ADO.
AdoConnection hace la conexion y AdoTable o Adoquery enlazan las tablas.
Saludos
  • 0

#3 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.481 mensajes
  • LocationVenezuela

Escrito 30 octubre 2008 - 03:07

estaba respondiendo y cuando fui a publicar me advirtieron que carlos habia escrito, que bueno este foro
  • 0

#4 delphi1

delphi1

    Member

  • Miembros
  • PipPip
  • 12 mensajes

Escrito 30 octubre 2008 - 03:10

Otra pregunta.
Quiero ver el contenido en un grid, que se necesita para hacer eso.
Disculpen pero soy nuevo en esto.
Gracias por sus respuestas.
  • 0

#5 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.481 mensajes
  • LocationVenezuela

Escrito 30 octubre 2008 - 03:41

debes colocar un datasource, eso lo encuentras en la paleta data acces.  este lo vinculas al query que carga tu tabla, y el dbgrid lo vinculas al datasource y listo
  • 0

#6 delphi1

delphi1

    Member

  • Miembros
  • PipPip
  • 12 mensajes

Escrito 07 noviembre 2008 - 12:05

Gracias por contestar, me sirvió mucho.

  • 0

#7 mmair

mmair

    Newbie

  • Miembros
  • Pip
  • 8 mensajes

Escrito 30 marzo 2010 - 09:21

Hola amigos

estoy empezando con Delphi y Access, estuve leyendo para ver como hacer la conexion. Baje el tutorial de Caral, de restaurantes y filtros. Bueno, yo cree mi base de datos, y tomando como ejemplo lo que tiene Caral, hice un datamodule con una conexion ADO , luego en el formulario de logueo pongo un ado query y en el SQL
del query pongo



sql
  1. SELECT idUsuario, usuario, clave  FROM usuarios WHERE
  2. usuario = usu



en parametros defino el parametro usu

y cuando quiero probar, me da el siguiente error:

"project.. raised exception class EOleException with message "No se han especificado valores para algunos de los parametros requeridos". Process stopped

Se detiene en la siguiente linea: EUsuario.Text:= ADConsulta.Fields[1].AsString;

del siguiente procedimiento:



delphi
  1. procedure TfrmLogin.btnAceptarClick(Sender: TObject);
  2. begin
  3.   LoginOK := False;
  4.   ADConsulta.Parameters.ParamByName('usu').Value:= EUsuario.Text;
  5.   ADConsulta.Active:= True;
  6.   EUsuario.Text:= ADConsulta.Fields[1].AsString;
  7.   If ADConsulta.RecordCount < 1 then
  8.     Begin
  9.       Cuenta := Cuenta + 1;
  10.       MessageDlg('Usuario no encontrado',mtError, [mbOK], 0);
  11.       EUsuario.Text := '';
  12.       EClave.Text := '';
  13.       ADConsulta.Active := False;
  14.       If Cuenta = 3 then Close;
  15.     end
  16.   else
  17.       If ADConsultaClave.AsString = EClave.Text then
  18.         Begin
  19.           LoginOk := True;
  20.           usuNombre := ADConsultaNombre.AsString;
  21.           usuApellido :=  ADConsultaApellido.AsString;
  22.           ADConsulta.Active := False;
  23.           frmMenuPrincipal:=TFrmMenuPrincipal.Create(self);
  24.           try
  25.           frmLogin.Visible:= False;
  26.           frmMenuPrincipal.lblUsuario.Caption:= usuNombre+' '+usuApellido;
  27.           frmMenuPrincipal.ShowModal;
  28.           finally
  29.           frmMenuPrincipal.Free;
  30.           end;
  31.           Close;
  32.         end
  33.     else
  34.         Begin
  35.           Cuenta := Cuenta + 1;
  36.           MessageDlg('Clave Inválida',mtError, [mbOK], 0);
  37.           EClave.Text := '';
  38.           ADConsulta.Active := False;
  39.           If Cuenta = 3 then Close;
  40.         end;
  41. end;



Alguien puede orientarme para saber donde esta el error?

Desde ya muchas gracias
  • 0

#8 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 13.936 mensajes
  • LocationMéxico

Escrito 30 marzo 2010 - 09:28

El problema está aquí



sql
  1. SELECT idUsuario, usuario, clave FROM usuarios
  2. WHERE usuario = :usu



Le faltan los dos puntos para que se considere como parámetro.

Salud OS
  • 0

#9 mmair

mmair

    Newbie

  • Miembros
  • Pip
  • 8 mensajes

Escrito 30 marzo 2010 - 09:33

Gracias por tu respuesta Egostar

en la muestra que estoy mirando y que si funciona, no estaban los dos puntos, aun asi, los he puesto pero me sigue dando el error.
  • 0

#10 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 13.936 mensajes
  • LocationMéxico

Escrito 30 marzo 2010 - 09:44

Veamos

Intenta con esto



delphi
  1.   ADConsulta.Parameters.ParamByName('usu').AsString := QuotedStr(EUsuario.Text);



Salud OS
  • 0

#11 mmair

mmair

    Newbie

  • Miembros
  • Pip
  • 8 mensajes

Escrito 30 marzo 2010 - 10:08

Hola Egostar

he probado lo ultimo que me dijiste, y sigue dando el error.

Una consulta, este error es porque supuestamente no ha podido ejecutar la consulta? es error en la forma en que se ha escrito el parametro, tipo de datos? mas o menos cuando aparece este error?

Yo uso delphi, pero siempre hice a conexion usando ZEOS y MySQl y quiero pasarme a Access, tenia la impresion que iba a ser mas rapido en algunas cosas para sistemas que no son de mucha envergadura. Pero este error nunca lo habia visto
  • 0

#12 luk2009

luk2009

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.011 mensajes
  • LocationSanto Domingo

Escrito 30 marzo 2010 - 10:35

Si ya conoce Zeos, porque no usas firebird te seria mas facil y con el perdon de Caral, es mejor base de datos que access.

  • 0

#13 mmair

mmair

    Newbie

  • Miembros
  • Pip
  • 8 mensajes

Escrito 30 marzo 2010 - 10:47

En realidad con mysql no tuve problemas hasta que quise hacer una distribución masiva. El primer problema que se me presenta es la instalación del motor de la base de datos. Primero no es legal distribuirlo comercialmente (access tampoco pero bue) y segundo la instalación del motor puede llegar a dar problemas y necesitaria alguien idoneo siempre que pueda instalarlo.
Con firebird me va a psar lo mismo tengo entendido. Por eso habia pensado en Access, en realidd no es algo muy grande lo que pienso distribuir.
A lo mejor estoy yendo por el camino equivocado, el sistema ya lo tengo hecho, pero tengo que mandarlo a otro lugar y no hay quien me instale el motor. Necesitaba una forma sencilla de distribuirlo
  • 0

#14 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.481 mensajes
  • LocationVenezuela

Escrito 31 marzo 2010 - 06:31

Si estas comenzando te recomiendo firebird y zeos aqui te podemos ayudar a aprender la instalacion no es dificil. Si quieres seguir con acces bisca el programa de facturacion de caral que esta mas completa la conexion
  • 0

#15 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.091 mensajes
  • LocationRepública Dominicana

Escrito 31 marzo 2010 - 06:49

Con firebird me va a psar lo mismo tengo entendido. Por eso habia pensado en Access, en realidd no es algo muy grande lo que pienso distribuir.


NO entiendo a que te refieres con esta parte.  Para instalar Firebird es bien sencillo, un usuario promedio puede realizar esta tarea, el instalador es un simple "Next" o "Siguiente".

Dependiendo de la versión que poseas de Delphi puedes utilizar los componentes de la paleta Interbase Admin IbInstall y IbUninstall que pueden instalar Firebird/Interbase de manera silenciosa.

P.D. Es bueno abrir un hilo nuevo para darle mejor seguimiento y en caso de necesitar alguna referencia pues indicar el hilo referente sería lo mejor a "resucitar un hilo".

  • 0

#16 Caral

Caral

    Advanced Member

  • Administrador
  • 4.241 mensajes
  • LocationCosta Rica

Escrito 31 marzo 2010 - 08:18

Hola
Volviendo al error:
Vamos a ver si me explico:
Cuando colocas en el string del query (el que esta en el form del login) esto:


sql
  1. SELECT idUsuario, usuario, clave  FROM usuarios WHERE
  2. usuario = usu



Le esta diciendo que BUSQUE el parametro en la Propiedad PARAMETERS del mismo query.
Si presionas el boton de parameters (un poco mas arriba del de string) te saldra una ventanita con el nombre del parametro que pusiste, en tu caso usu.
Posicionate en ese nombre y veras las propiedades, lo que necesitas modificar es:
Attributes (paNullable)
DataType (ftFixedChar)
....
....
Value (Null).


Otra forma de solucionar esto es escribiendo el codigo sql directamente:



delphi
  1. procedure TfrmLogin.btnAceptarClick(Sender: TObject);
  2. begin
  3.   LoginOK := False;
  4.   ADConsulta.Sql.Text:= 'SELECT idUsuario, usuario, clave  FROM usuarios WHERE usuario = :usu';
  5.   ADConsulta.Open;
  6.   ADConsulta.Parameters.ParamByName('usu').Value:= EUsuario.Text;
  7.   ADConsulta.Active:= True;
  8.   EUsuario.Text:= ADConsulta.Fields[1].AsString;
  9.   If ADConsulta.RecordCount < 1 then
  10.     Begin
  11.       Cuenta := Cuenta + 1;
  12.       MessageDlg('Usuario no encontrado',mtError, [mbOK], 0);
  13.       EUsuario.Text := '';
  14.       EClave.Text := '';
  15.       ADConsulta.Active := False;
  16.       If Cuenta = 3 then Close;
  17.     end
  18.   else
  19.       If ADConsultaClave.AsString = EClave.Text then
  20.         Begin
  21.           LoginOk := True;
  22.           usuNombre := ADConsultaNombre.AsString;
  23.           usuApellido :=  ADConsultaApellido.AsString;
  24.           ADConsulta.Active := False;
  25.           frmMenuPrincipal:=TFrmMenuPrincipal.Create(self);
  26.           try
  27.           frmLogin.Visible:= False;
  28.           frmMenuPrincipal.lblUsuario.Caption:= usuNombre+' '+usuApellido;
  29.           frmMenuPrincipal.ShowModal;
  30.           finally
  31.           frmMenuPrincipal.Free;
  32.           end;
  33.           Close;
  34.         end
  35.     else
  36.         Begin
  37.           Cuenta := Cuenta + 1;
  38.           MessageDlg('Clave Inválida',mtError, [mbOK], 0);
  39.           EClave.Text := '';
  40.           ADConsulta.Active := False;
  41.           If Cuenta = 3 then Close;
  42.         end;
  43. end;


Como veras hay una diferencia, el parametro necesita dos puntos antes del nombre, por lo demas es lo mismo.
Espero te sirva y si tienes alguna duda estamos para ayudar.
Saludos

  • 0

#17 mmair

mmair

    Newbie

  • Miembros
  • Pip
  • 8 mensajes

Escrito 19 abril 2010 - 06:39

Hola Caral, como estas? muchas gracias por tu respuesta. Al final si pude hacer la conexion, tomando como ejemplo tu programa de facturación, me salio todo de una. No te habia contestado antes porque pense que este hilo estaba cerrado. Y si, tengo mas consultas pero ya no sobre la conexion, sobre otras cosas, me imagino que tendre que abrir hilos nuevos? Saludos! y gracias!
  • 0

#18 luk2009

luk2009

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.011 mensajes
  • LocationSanto Domingo

Escrito 19 abril 2010 - 06:51

Pues adelante crea todos los hilos que quieras, que aqui estamos para ayudarte. Me alegro de que hayas logrado resolver tu primer problema. Por otro lado te recomiendo que leas  sobre Firebird y la descargues, te aseguro que no te arrepentiras.


  • 0