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)
-   -   Acces y tablas (https://www.clubdelphi.com/foros/showthread.php?t=93082)

Angel.Matilla 11-05-2018 18:43:30

Acces y tablas
 
Buenas. Por primera vez en todos mis años de progración tengo que conectarme a una base de datos Access. He estado mirando y el concepto de como conectarse creo que me ha quedado claro: ADOConnection, ADOTable, etc.


Pero me ha surgido una duda a la que no he sido capaz de encontrar respuesta: ¿Cómo puedo saber qué tabls forman parte de esa base de datos? Sé que podría poner "a pedal" la lista de tablas por ejemplo en un vector AnsiString, pero no hay ¿forma de hacer como un dir de las tablas que forma parte de dicha BB.DD.?

Angel.Matilla 11-05-2018 19:56:23

Vale. Ya he visto como se hace. Perdonad por las molestias.

ecfisa 11-05-2018 20:22:21

Hola.

Me alegro que encontraras como hacerlo ^\||/.

Adjunto un ejemplo para aquellos que buscasen solución en este mensaje, el ejemplo se basa en un TADOConnection y tres TADOTables y para la cadena de conexión uso las tablas de demostración que traen Delphi y C++ Builder:

Delphi:
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+
    'C:\\Program Files (x86)\\Common Files\\Borland Shared\\Data\\bcdemos.mdb;'+
    'Persist Security Info=False;';

  ADOConnection1.Connected := True;

  ADOTable1.Connection := ADOConnection1;
  ADOTable1.TableName := 'country';
  ADOTable1.Open;

  ADOTable2.Connection := ADOConnection1;
  ADOTable2.TableName  := 'customer';
  ADOTable2.Open;

  ADOTable3.Connection := ADOConnection1;
  ADOTable3.TableName  := 'employee';
  ADOTable3.Open;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i,j: Integer;
begin
  ListBox1.Clear;
  for i := 0 to ADOConnection1.DataSetCount-1 do
  begin
    ListBox1.Items.Add(ADOConnection1.DataSets[i].Name);
    ListBox1.Items.Add('-----------------------------');
    for j := 0 to ADOConnection1.DataSets[i].FieldCount-1 do
      ListBox1.Items.Add(ADOConnection1.DataSets[i].Fields[j].FieldName);
    ListBox1.Items.Add('');
  end;
end;

C++ Builder:
Código PHP:

void __fastcall TForm1::FormCreate(TObject *Sender)
{
  
TADOConnection *AC static_cast<TADOConnection*>(ADOConnection1);

  
AC->ConnectionString "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="\
    
"C:\\Program Files (x86)\\Common Files\\Borland Shared\\Data\\bcdemos.mdb;"\
    
"Persist Security Info=False;";

  
AC->Connected true;

  
ADOTable1->Connection AC;
  
ADOTable1->TableName  "country";
  
ADOTable1->Open();


  
ADOTable2->Connection AC;
  
ADOTable2->TableName  "customer";
  
ADOTable2->Open();

  
ADOTable3->Connection AC;
  
ADOTable3->TableName  "employee";
  
ADOTable3->Open();

}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  
TADOConnection *AC static_cast<TADOConnection*>(ADOConnection1);
  
ListBox1->Clear();
  for(
int i 0AC->DataSetCounti++)
  {
    
ListBox1->Items->Add(AC->DataSets[i]->Name);
    
ListBox1->Items->Add("-----------------------------");
    for (
int j 0AC->DataSets[i]->FieldCount++)
      
ListBox1->Items->Add(AC->DataSets[i]->Fields->Fields[j]->FieldName);
    
ListBox1->Items->Add("");
  }


Todas las asignaciones que fueron echas en tiempo de ejecución se pueden hacer en tiempo de diseño desde el Object Inspector.

Resultado:


Saludos :)

Angel.Matilla 14-05-2018 10:37:35

Muchas gracias por ese cóidigo.


La franja horaria es GMT +2. Ahora son las 14:23:53.

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