Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   descripción de un campo de access con Delphi 6 (https://www.clubdelphi.com/foros/showthread.php?t=61466)

darkone2k4 08-11-2008 23:02:03

descripción de un campo de access con Delphi 6
 
salu2 amigos...

Me gustaría saber si se puede, y como hacerlo, para poder obtener la descripción de un campo determinado en una tabla de una bd access....

desde ya, muxas gracias...

Neftali [Germán.Estévez] 09-11-2008 10:16:51

Revisa las tablas de sistema. Ahora no las tengo delante, pero apostaría a que las descripciones se guardarán ahí.

darkone2k4 09-11-2008 15:54:58

gracias por la respuesta, pero no encontré las descripciones en las tablas de sistema.
Solo habían 6 tablas de sistemas y eran estas:
1.- MSysACEs
2.- MSysModules
3.- MSysModules2
4.- MSysObjects
5.- MSysQueries
6.- MSysRelationships

Faust 11-11-2008 19:33:23

¿a que te refieres por descripciones?

Si quieres saber de que tipo es, cual es su ancho, etc, el objeto TFIeld de Delphi te lo dice, hay muchos descendientes de este objeto p. ej. TFloatField, TStringField, cada uno de ellos para diferente tipo de dato, solo tienes que crear el objeto, asignarle el campo y ya está (de esto no estoy muy seguro, pues nunca lo he intentado), esto lo lei en la Guia de Desarrollo de Delphi 5 en el tomo 2.

darkone2k4 11-11-2008 22:09:43

gracias por responder.

Con descripcion me refiero a lo que está enmarcado en la siguiente imagen:


no sé como obtener esa información. :confused::confused:

hecospina 11-11-2008 22:49:46

Hola
No se mucho de Acces pero en le menu herramientas aparece una opcion llamada Analizar, dentro de esta aparece Documentador, alli seleccionas las tabla que desas y el te muestra no solo la descripcion sino tambien otras caracteristicas de las tablas

darkone2k4 12-11-2008 03:22:07

gracias por la respuesta amigo, pero lo que necesito es poder acceder a esa información que aparece enmarcada en negro, desde delphi. puedo acceder a los nombres de los campos de las tablas, el tipo de campo, pero no sé como acceder a la descripcion.

Neftali [Germán.Estévez] 12-11-2008 13:36:24

Bueno, pues listo. Ya está.
Trabajo bastante con ADO, así que el tema me ha interesado. He estado buscando por internet, donde hay bastante información para VB, pero poca para Delphi. De todas formas, probando un poco la traducción no ha sido compleja.

Mi primera respuesta fue errónea, ya que como tú dijiste, esa información no aparece por las tablas de sistema (imagino que debe estar dentro de algun campo BLOB codificada) y parece que tampoco es accesible vía ADO; Así que parece que la solución es acceder directamente por ADOX.

Lo he probado y funciona OK, así que lo he subido como tip en mi página web.
De todas formas el código del botón es este:

Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
const
 DB_CONNECTION='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s';
 DATABASENAME = 'c:\Archivos de programa\Archivos comunes\Borland Shared\Data\dbdemos.mdb';
var
 i, j:Integer;
 Con:OleVariant;
 fCatalog:Catalog;
 Column: _Column;
 Table:_Table;
 Str1, Str2:string;
begin
 // Limpiar la salida
 Memo1.Lines.Clear;
 // Conectar con la Base de Datos
 Con := CreateOleObject('ADODB.Connection');
 // Abrir
 Con.Open(Format(DB_CONNECTION,[DATABASENAME]));
 // proteccion
 try
     // Acceder a la Base de Datos
     fCatalog := CoCatalog.Create;
  fCatalog._Set_ActiveConnection(Con);
  // Acceder a la tabla de empleados
  Table := fCatalog.Tables['employee'];
  // recorrer las columnas
   for i := 0 to (Table.Columns.Count - 1) do begin
       // Acceder a la columna
     Column := Table.Columns[i];
    // Datos de columna
     Memo1.Lines.Add(' ');
    Memo1.Lines.Add(Format('Columna: %s',[Column.Name]));
    Memo1.Lines.Add('---------------------------------');
    Memo1.Lines.Add(Format(' Tamaño: %d',[Column.DefinedSize]));
    Memo1.Lines.Add(Format(' Precisión: %d',[Column.Precision]));
    // recorrer las propiedades de la columna
     for j := 0 to (Column.Properties.Count - 1) do begin
      // Cada propiedad, Nombre y valor
       Str1 := Column.Properties[j].Name;
      Str2 := Column.Properties[j].Value;
      // Saltamos las propiedades Jet...
      if (Length(Str1) > 0) then begin
         // Saltar las Jet
         if (Str1[1] <> 'J') then begin
          Memo1.Lines.Add(Format(' %s: %s',[Str1, Str2]))
        end;
      end;
    end;
  end;
  finally
   // Liberar y cerrar
   Column := nil;
  Table := nil;
  fCatalog := nil;
  Con.Close;
  end;
end;

darkone2k4 12-11-2008 20:44:02

Muchas gracias por la respuesta Neftali. Hoy en la noche( en este momento son las 16:45 hrs.) probaré el código y te cuento como me fue.

Muchas gracias...


La franja horaria es GMT +2. Ahora son las 22:28:17.

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