PDA

Ver la Versión Completa : Crear tabla pdx a partir de dbf


lbidi
03-03-2004, 17:45:12
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.

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.