
Como conecto access con delphi
#1
Posted 30 October 2008 - 02:45 PM
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.
#2
Posted 30 October 2008 - 03:03 PM
Bienvenido a Delphiaccess.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.
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
#3
Posted 30 October 2008 - 03:07 PM
#4
Posted 30 October 2008 - 03:10 PM
Quiero ver el contenido en un grid, que se necesita para hacer eso.
Disculpen pero soy nuevo en esto.
Gracias por sus respuestas.
#5
Posted 30 October 2008 - 03:41 PM
#6
Posted 07 November 2008 - 12:05 PM
#7
Posted 30 March 2010 - 09:21 PM
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
SELECT idUsuario, usuario, clave FROM usuarios WHERE 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:
procedure TfrmLogin.btnAceptarClick(Sender: TObject); begin LoginOK := False; ADConsulta.Parameters.ParamByName('usu').Value:= EUsuario.Text; ADConsulta.Active:= True; EUsuario.Text:= ADConsulta.Fields[1].AsString; If ADConsulta.RecordCount < 1 then Begin Cuenta := Cuenta + 1; MessageDlg('Usuario no encontrado',mtError, [mbOK], 0); EUsuario.Text := ''; EClave.Text := ''; ADConsulta.Active := False; If Cuenta = 3 then Close; end else If ADConsultaClave.AsString = EClave.Text then Begin LoginOk := True; usuNombre := ADConsultaNombre.AsString; usuApellido := ADConsultaApellido.AsString; ADConsulta.Active := False; frmMenuPrincipal:=TFrmMenuPrincipal.Create(self); try frmLogin.Visible:= False; frmMenuPrincipal.lblUsuario.Caption:= usuNombre+' '+usuApellido; frmMenuPrincipal.ShowModal; finally frmMenuPrincipal.Free; end; Close; end else Begin Cuenta := Cuenta + 1; MessageDlg('Clave Inválida',mtError, [mbOK], 0); EClave.Text := ''; ADConsulta.Active := False; If Cuenta = 3 then Close; end; end;
Alguien puede orientarme para saber donde esta el error?
Desde ya muchas gracias
#8
Posted 30 March 2010 - 09:28 PM
SELECT idUsuario, usuario, clave FROM usuarios WHERE usuario = :usu
Le faltan los dos puntos para que se considere como parámetro.
Salud OS
#9
Posted 30 March 2010 - 09:33 PM
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.
#10
Posted 30 March 2010 - 09:44 PM
Intenta con esto
ADConsulta.Parameters.ParamByName('usu').AsString := QuotedStr(EUsuario.Text);
Salud OS
#11
Posted 30 March 2010 - 10:08 PM
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
#12
Posted 30 March 2010 - 10:35 PM
#13
Posted 30 March 2010 - 10:47 PM
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
#14
Posted 31 March 2010 - 06:31 AM
#15
Posted 31 March 2010 - 06:49 AM
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".
#16
Posted 31 March 2010 - 08:18 AM
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:
SELECT idUsuario, usuario, clave FROM usuarios WHERE 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:
procedure TfrmLogin.btnAceptarClick(Sender: TObject); begin LoginOK := False; ADConsulta.Sql.Text:= 'SELECT idUsuario, usuario, clave FROM usuarios WHERE usuario = :usu'; ADConsulta.Open; ADConsulta.Parameters.ParamByName('usu').Value:= EUsuario.Text; ADConsulta.Active:= True; EUsuario.Text:= ADConsulta.Fields[1].AsString; If ADConsulta.RecordCount < 1 then Begin Cuenta := Cuenta + 1; MessageDlg('Usuario no encontrado',mtError, [mbOK], 0); EUsuario.Text := ''; EClave.Text := ''; ADConsulta.Active := False; If Cuenta = 3 then Close; end else If ADConsultaClave.AsString = EClave.Text then Begin LoginOk := True; usuNombre := ADConsultaNombre.AsString; usuApellido := ADConsultaApellido.AsString; ADConsulta.Active := False; frmMenuPrincipal:=TFrmMenuPrincipal.Create(self); try frmLogin.Visible:= False; frmMenuPrincipal.lblUsuario.Caption:= usuNombre+' '+usuApellido; frmMenuPrincipal.ShowModal; finally frmMenuPrincipal.Free; end; Close; end else Begin Cuenta := Cuenta + 1; MessageDlg('Clave Inválida',mtError, [mbOK], 0); EClave.Text := ''; ADConsulta.Active := False; If Cuenta = 3 then Close; end; 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
#17
Posted 19 April 2010 - 06:39 PM
#18
Posted 19 April 2010 - 06:51 PM