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)
-   -   Access + Delphi (https://www.clubdelphi.com/foros/showthread.php?t=91473)

emeritos 14-02-2017 12:54:44

Access + Delphi
 
Hola dilferos.

Necesito a traves del delphi 7 acceder a una base de datos access.accdb (en Office 10).
No se si lo estoy haciendo bien.He utilizado el compomente ADOConnection --> Use Connection String: Proveedor Microsof Office DataBase Engine OLE DB Provid,. Conexion --> Origen de datos: C:\Facturacion\xxxx.accdb (No se si lo estoy haciendo bien pero de momento me deja conectarme).

Ahora lo que necesito otro compomente para acceder a cada unas de las tablas y sobre todo que se pueda trabajar con ella en el lenguaje SQL. Pero no se cual es. he probado algunos pero no me funciona.

Mi pregunat es si me podeis ayudar. Gracias.

Casimiro Notevi 14-02-2017 13:08:44

Cita:

Empezado por emeritos (Mensaje 513248)
Mi pregunat es si me podeis ayudar. Gracias.

Sí, te podemos ayudar :D


Mira los enlaces al final de página, abajo del todo, seguramente te servirán.

Neftali [Germán.Estévez] 14-02-2017 13:09:59

Cita:

Empezado por emeritos (Mensaje 513248)
Ahora lo que necesito otro compomente para acceder a cada unas de las tablas y sobre todo que se pueda trabajar con ella en el lenguaje SQL. Pero no se cual es. he probado algunos pero no me funciona.

Un TADOTable y rellennar el nombre de la tabla (TableName) o un TADOQuery y rellenar la sentencia SQL que quieres utilizar.

ecfisa 14-02-2017 13:12:43

Hola eméritos.

La consulta es muy general, pero para lo que deseas hacer podes usar el componente TADOQuery. Te pongo un ejemplo básico que incluye también un TADOConnection, un TDataSource y un TDBGrid.
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
var
  ac: TADOConnection;
  qy: TADOQuery;
begin
  ac := ADOConnection1;
  qy := ADOQuery1;

  ac.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;'+
    'Data Source=C:\Program Files\Common Files\Borland Shared\Data\dbdemos.mdb;'+
    'Persist Security Info=False';
  ac.Connected := True;

  qy.Connection := ac;
  qy.SQL.Text := 'SELECT * FROM COUNTRY';
  qy.Open;

  DataSource1.DataSet := qy;
  DBGrid1.DataSource  := DataSource1;
end;
En este caso la sentencia SQL se limita a consultar los campos de la tabla country para mostrarlos en la grilla.
Hice las relaciones en tiempo de ejecución para puedas apreciarlas mas claramente pero podes entablarlas en tiempo de diseño sin problemas.


Saludos :)

emeritos 14-02-2017 13:48:49

Buenas.

Porque os sale la base de datos con extension .mdb y a mi con esta extension .accdb

emeritos 14-02-2017 15:02:15

He conseguido ponerlo en .mdb, tambien accedo a la base de datos y he conseguido engancharlo a un DBGrill, pero me sale un error a la hora de insertar en DBGrill:

exception class EOLeException with message "El sistema operativo no admite la secuencia de ordenacion seleccionada".

por que puede ser. Gracias.

fjcg02 14-02-2017 15:29:49

Cita:

Empezado por emeritos (Mensaje 513254)
... he conseguido engancharlo a un DBGrill, ...

juer, saldrán los datos tostaditos.... :D

( Es bromaaaaaaa )

Saludos

ecfisa 14-02-2017 15:40:19

Hola.
Cita:

Empezado por emeritos (Mensaje 513254)
He conseguido ponerlo en .mdb, tambien accedo a la base de datos y he conseguido engancharlo a un DBGrill, pero me sale un error a la hora de insertar en DBGrill:

exception class EOLeException with message "El sistema operativo no admite la secuencia de ordenacion seleccionada".

Supongo que no estas usando la sentencia SQL adecuada.

Ejemplo de inserción usando la tabla y campos del caso anterior:
Código Delphi [-]
// Insertar algunos datos...
procedure TForm1.btnInsertClick(Sender: TObject);
var
  qy: TADOQuery;
begin
  qy := ADOQuery1;
  qy.Close;
  qy.SQL.Clear;
  qy.SQL.Add('INSERT INTO COUNTRY (NAME, CAPITAL, CONTINENT, AREA, POPULATION)');
  qy.SQL.Add('VALUES(:NAME,:CAPITAL,:CONTINENT,:AREA,:POPULATION)');
  qy.Parameters.ParamByName('NAME').Value       := 'NUEVO_COUNTRY';
  qy.Parameters.ParamByName('CAPITAL').Value    := 'NUEVA CAPITAL';
  qy.Parameters.ParamByName('CONTINENT').Value  := 'NUEVO CONTINENTE';
  qy.Parameters.ParamByName('AREA').Value       := 100000;
  qy.Parameters.ParamByName('POPULATION').Value := 50000;
  qy.ExecSQL;
end;
Las acciones de inserción, modificación y borrado se logran de manera transparente (sin tener que escribir las sentencias SQL correspondientes) si usas un TADOTable como te sugirió Neftali. Me remití al TADOQuery por que en tu primer mensaje indicas:
Cita:

...para acceder a cada unas de las tablas y sobre todo que se pueda trabajar con ella en el lenguaje SQL.
Saludos :)

Neftali [Germán.Estévez] 14-02-2017 16:20:37

Cita:

Empezado por emeritos (Mensaje 513254)
exception class EOLeException with message "El sistema operativo no admite la secuencia de ordenacion seleccionada".

¿Puedes poner la sentencia SQL que estás utilizando?
¿Qué operación estás haciendo cualdo aparece ese error?
¿En en debug (en el IDE) o cuando ejecutas el EXE directamente aparece también?

bitbow 14-02-2017 16:53:25

Si estas usando TTable o TQuery (los componentes ADO TADOQuery, TADOTable), es distinto el modo de insercion y edicion, en el caso del TQuery debes poner la sentencia SQL y en el caso del TTable puedes agregar directamente ya sea con el control dbnavigator o con insert, edit, append.

Saludos.


La franja horaria es GMT +2. Ahora son las 04:27:22.

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