Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Obtener estructura de Tablas Paradox (https://www.clubdelphi.com/foros/showthread.php?t=40106)

Coco_jac 07-02-2007 15:49:24

Obtener estructura de Tablas Paradox
 
Hola amigos del foro, tengo una duda desde hace unos meses, bueno estaba haciendo una pequeña aplicacion con Delphi y Paradox en la cual podia realizar consultas tipo un Mini analizador de consultas SQL, ya que donde laboro se hace muy necesario.
Mi duda es como poder visualizar los campos que comforman una tabla paradox, ya que al momento de realizar la consulta se hace tedioso recordar los nombres de los campos.Para solucionar esto se me ocurrio algo que realmente me resulta mal, bueno es por eso que recurro al foro.
Eh visto una aplicacion muy conocida el SYSUTIL con el cual apunto a una ruta dada y obtengo en un treview todas las tablas paradox existentes en esa ruta, asi como sus indices. Me llamo la atencion y desearia saber como poder hacer algo parecido

Muchas gracias anticipadas

Lepe 07-02-2007 17:11:38

Busca por aqui:
Código Delphi [-]
var TipoDato:string;
begin
  for j:= 0 to tabla.FieldDefs.Count-1 do
      with tabla.FieldDefs.Items[j] do
      begin
           case DataType of
             case DataType of
              ftUnknown      : TipoDato:= 'ftUnknown';
              ftString       : TipoDato:= 'ftString';
              ftSmallint     : TipoDato:= 'ftSmallint';
              ftInteger      : TipoDato:= 'ftInteger';
              ftWord        : TipoDato:= 'ftWord';
              ftBoolean      : TipoDato:= 'ftBoolean';
              ftFloat        : TipoDato:= 'ftFloat';
              ftCurrency    : TipoDato:= 'ftCurrency';
              ftBCD          : TipoDato:= 'ftBCD';
              ftDate        : TipoDato:= 'ftDate';
              ftTime        : TipoDato:= 'ftTime';
              ftDateTime    : TipoDato:= 'ftDateTime';
              ftBytes        : TipoDato:= 'ftBytes';
              ftVarBytes    : TipoDato:= 'ftVarBytes';
              ftAutoInc      : TipoDato:= 'ftAutoInc';
              ftBlob        : TipoDato:= 'ftBlob';
              ftMemo        : TipoDato:= 'ftMemo';
              ftGraphic      : TipoDato:= 'ftGraphic';
              ftFmtMemo      : TipoDato:= 'ftFmtMemo';
              ftParadoxOle  : TipoDato:= 'ftParadoxOle';
              ftDBaseOle    : TipoDato:= 'ftDBaseOle';
              ftTypedBinary  : TipoDato:= 'ftTypedBinary';
              ftCursor      : TipoDato:= 'ftCursor';
              ftFixedChar    : TipoDato:= 'ftFixedChar';
              ftWideString  : TipoDato:= 'ftWideString';
              ftLargeint    : TipoDato:= 'ftLargeint';
              ftADT          : TipoDato:= 'ftADT';
              ftArray        : TipoDato:= 'ftArray';
              ftReference    : TipoDato:= 'ftReference';
              ftDataSet      : TipoDato:= 'ftDataSet';
              ftOraBlob      : TipoDato:= 'ftOraBlob';
              ftOraClob      : TipoDato:= 'ftOraClob';
              ftVariant      : TipoDato:= 'ftVariant';
              ftInterface    : TipoDato:= 'ftInterface';
              ftIDispatch    : TipoDato:= 'ftIDispatch';
              ftGuid        : TipoDato:= 'ftGuid';
              ftTimeStamp    : TipoDato:= 'ftTimeStamp';
              ftFMTBcd      : TipoDato:= 'ftFMTBcd';
            else TipoDato   := ' No reconocido';
            end; // case;

Para los indices tienes que acceder a IndexDefs de igual forma que con FieldsDef.... más o menos

Saludos

Coco_jac 08-02-2007 22:43:40

Hola Lepe gracias por responder.
Lo que queria saber es como poder visualizar todas las tablas Paradox existentes en una ruta especificada, asi como cada uno de los campos que forman cada una de ellas,

marcoszorrilla 09-02-2007 00:05:50

Con lo que te dice Lepe tienes más que suficiente, recorres la carpeta que proceda extraes todos los ficheros de tipo Db y luego con cada uno de ellos vas llamando a una función que te puedes construir tú mismo.

A la hora de presentar los resultados puedes usar un Treeview.....


Un Saludo.

roman 09-02-2007 00:17:44

Para obtener las tablas puede usar una componente Database y su método GetTableNames:

Código Delphi [-]
Database1.AliasName := 'c:\ruta\al\directorio\con\las\tablas';
Database1.GetTableNames(ComboBox1.Items);

// Saludos

Coco_jac 09-02-2007 01:36:07

hola y gracias a ambos, me gusto eso del DATABASE, poque estoy utilizando ese componente, pero mi problema es como poder atravez del DATABASE poder saber los campos de las tablas.
Utilizo Database y un Datasetprovider y un Dataset.
El DATASET apunta a unas 35 tablas mas o menos, estaba pensando con un Ttable poder obtener el nombre de cada campo, pero tambien hay un promedio de 25 campos por tabla.
Espero sus comentarios

Lepe 09-02-2007 05:14:59

Nada te impide usar un solo objeto TTable.
- Lo cierras por si está abierto
- Asignas el alias de la BD a la tabla.
- configuras el nombre de la tabla (a la que corresponda)
- la abres.
- fuerzas un update de los campos (tabla.fieldsdef.Update o refresh)
- ahora extraes los campos.
- Vuelves al principio.

Saludos


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

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