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)
-   -   ¿Cómo utilizar el componente TFDMetaInfoQuery de FireDAC? (https://www.clubdelphi.com/foros/showthread.php?t=96833)

drewdavis 05-09-2024 09:02:07

¿Cómo utilizar el componente TFDMetaInfoQuery de FireDAC?
 
En tiempo de ejecución, necesito descubrir la estructura de una tabla MySQL (nombres de campos, tipos, tamaños y más). Se supone que el componente TFDMetaInfoQuery de FireDAC debe hacer eso, pero no funciona como se esperaba. Recibí este mensaje de error:

[FireDAC][Phys][MySQL]-339. Se debe especificar un valor de argumento de metadatos [nombre del tipo de tabla]. No me digas que use los campos creados automáticamente.

Casimiro Noteví 05-09-2024 10:16:42

Estaría bien ver el código que has usado.
Hecha un vistazo a nuestra guía de estilo, gracias.

drewdavis 05-09-2024 10:25:28

Cita:

Empezado por Casimiro Notevi (Mensaje 557087)
Estaría bien ver el código que has usado.

Sólo una sola línea:

Código:

FDMetaInfoQuery1.Open;
TFDMetaInfoQuery se conecta en tiempo de diseño a una TFDConnection. La misma conexión se utiliza para varias TFDQuery y cada archivo de solicitud funciona.
Extracto del DFM:

Código:

object FDMetaInfoQuery1: TFDMetaInfoQuery
  Connection = FDConnection1
  MataInfoKind = mkTableTypeFields
  TableKinds = [tkTable]
  SchemaName = 'MySchema'
  Left = 328
  Top = 64
end


drewdavis 06-09-2024 09:48:41

No te lo pierdas

Casimiro Noteví 06-09-2024 10:59:13

Ejemplo:
Código Delphi [-]
procedure TForm1.GetTableStructure;
begin
  // Configura la conexión
  FDMInfoQuery.Connection := FDConnection1;
  
  // Configura las propiedades para obtener la información de los campos de una tabla
  FDMInfoQuery.MetaInfoKind := mkTableFields; 
  FDMInfoQuery.TableName := 'nombre_de_la_tabla'; // Aquí el nombre de tu tabla
  
  // Abre la consulta para obtener los datos
  FDMInfoQuery.Open;
  
  // Recorre los campos de la tabla
  while not FDMInfoQuery.Eof do
  begin
    ShowMessage('Campo: ' + FDMInfoQuery.FieldByName('COLUMN_NAME').AsString +
                ' Tipo: ' + FDMInfoQuery.FieldByName('COLUMN_DATATYPE').AsString +
                ' Tamaño: ' + FDMInfoQuery.FieldByName('COLUMN_LENGTH').AsString);
    FDMInfoQuery.Next;
  end;
  
  FDMInfoQuery.Close;
end;

drewdavis 06-09-2024 11:27:27

Cita:

Empezado por Casimiro Notevi (Mensaje 557095)
Ejemplo:
Código Delphi [-]
procedure TForm1.GetTableStructure;
begin
  // Configura la conexión
  FDMInfoQuery.Connection := FDConnection1;
  
  // Configura las propiedades para obtener la información de los campos de una tabla
  FDMInfoQuery.MetaInfoKind := mkTableFields; 
  FDMInfoQuery.TableName := 'nombre_de_la_tabla'; // Aquí el nombre de tu tabla
  
  // Abre la consulta para obtener los datos
  FDMInfoQuery.Open;
  
  // Recorre los campos de la tabla
  while not FDMInfoQuery.Eof do
  begin
    ShowMessage('Campo: ' + FDMInfoQuery.FieldByName('COLUMN_NAME').AsString +
                ' Tipo: ' + FDMInfoQuery.FieldByName('COLUMN_DATATYPE').AsString +
                ' Tamaño: ' + FDMInfoQuery.FieldByName('COLUMN_LENGTH').AsString);
    FDMInfoQuery.Next;
  end;
  
  FDMInfoQuery.Close;
end;

¡Gracias por dejarme revisar!

drewdavis 06-09-2024 12:33:49

Cita:

Empezado por Casimiro Notevi (Mensaje 557095)
Ejemplo:
Código Delphi [-]
procedure TForm1.GetTableStructure;
begin
  // Configura la conexión
  FDMInfoQuery.Connection := FDConnection1;
  
  // Configura las propiedades para obtener la información de los campos de una tabla
  FDMInfoQuery.MetaInfoKind := mkTableFields; 
  FDMInfoQuery.TableName := 'nombre_de_la_tabla'; // Aquí el nombre de tu tabla
  
  // Abre la consulta para obtener los datos
  FDMInfoQuery.Open;
  
  // Recorre los campos de la tabla
  while not FDMInfoQuery.Eof do
  begin
    ShowMessage('Campo: ' + FDMInfoQuery.FieldByName('COLUMN_NAME').AsString +
                ' Tipo: ' + FDMInfoQuery.FieldByName('COLUMN_DATATYPE').AsString +
                ' Tamaño: ' + FDMInfoQuery.FieldByName('COLUMN_LENGTH').AsString);
    FDMInfoQuery.Next;
  end;
  
  FDMInfoQuery.Close;
end;

Muchas gracias lo logré

Casimiro Noteví 07-09-2024 11:45:51

^\||/^\||/^\||/


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

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