Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   Crear tabla pdx a partir de dbf (https://www.clubdelphi.com/foros/showthread.php?t=7983)

lbidi 03-03-2004 17:45:12

Crear tabla pdx a partir de dbf
 
Hola, tengo algunos sistemas hechos en clipper y dbfs y quiero pasarlos a pdx y d5.
Como puedo hacer para crear las tablas pdx a partir de la estructura de la dbf y ademas agregarle los datos?.
Lo he hecho con D.Desktop, pero mi intencion es hacerlo automatico dentro del codigo asi le instalo el nuevo programa al cliente y solo le actualiza los datos.

Salu2.
Gracias

roman 03-03-2004 17:51:38

Busca en la ayuda acerca de CreateTable. Incluye un ejemplo de cómo crear la estructura de una tabla por código. Simplemente tienes que guiarte de eso para crear los campos según la estructura de la tabla DBase.

Una vez creada la tabla puedes llenarla recorriendo con un ciclo la tabla DBase e insertando registros y copiando los valores de los campos.

O bien con una consulta del estilo

insert into tabla paradox
select * from tabla dbase

// Saludos

marcoszorrilla 03-03-2004 18:39:54

También puedes utilizar si es para un caso transitorio una utilidad que viene con Delphi.

C:\Archivos de programa\Archivos comunes\Borland Shared\BDE

datapump.exe

Con esta herramienta pasas las tablas de Dbf a Pdx, sin ningún problema con campos memo...

Un Saludo.

lbidi 03-03-2004 20:15:58

Gracias, Marcos, pero mi intencion es hacerlo desde el codigo mismo, para instalar el mismo programa en todos mis clientes y que se cree la base automaticamente, sino deberia correr del datapump o el desktop en todas las maquinas, no?

Una pregunta que no habia puesto. Debo crear un Ttable vacio para apuntar a la base dbase? Y que pasa con la ubicacion de la misma? Deberia primero saber donde esta, no?

Salu2 y gracias otra vez.
Leonardo

trex2000 29-03-2004 20:32:32

Saludos:
La verdad no se si ya pudiste resolver tu problema, apenas estoy viendo este hilo pero te voy a decir como resolvi esa situacion cuando me paso a mi, yo utilize el batchmove que viene en la paleta de delphi. :)

Espero te sirva.

lbidi 29-03-2004 22:38:36

Gracias Trex2000. La verdad es que me he dedicado a otras cosas y no pude hacer y no pude hacer ninguna prueba mas.
Intentarte con lo tu me indicas y te aviso.

Salu2.

marcoszorrilla 29-03-2004 23:19:59

Basándote en este ejemplo sacado de Trucomanía, creo que no te sería
dificil lograr lo que quieres.

Código:

procedure TForm1.Button1Click(Sender:TObject);
begin
  if not Table1.Exists then
  begin
    Table1.Active      := FALSE;
    {Aqui el Alias/Here, the alias}
    Table1.DatabaseName := 'Alias';
    Table1.TableType    := ttParadox;
    {Aqui el nombre de la tabla/Here, the Table name}
    Table1.TableName    := 'Nombre de la Tabla';
    with Table1.FieldDefs do
    begin
      Clear;
      Add('IntegerField', ftInteger,  0, FALSE);
      Add('StringField' , ftString , 30, FALSE);
      Add('LogicalField', ftBoolean,  0, FALSE);
      Add('FloatField'  , ftFloat  ,  0, FALSE);
      Add('DateField'  , ftDate  ,  0, FALSE);
      Add('TimeField'  , ftTime  ,  0, FALSE);
    end;
    Table1.CreateTable;
  end;
end;
 
 
 
Si quieres añadir algún indice, mirate la propiedad IndexDefs
que es similar a la FieldDefs que hemos usado.

Un Saludo.

lbidi 30-03-2004 16:58:55

Gracias Marcos por tu respuesta.


La franja horaria es GMT +2. Ahora son las 07:55:43.

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