Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   como importar informacion a mi base de datos desde un disket (https://www.clubdelphi.com/foros/showthread.php?t=27497)

ibbeth 22-11-2005 18:06:23

como importar informacion a mi base de datos desde un disket
 
hola soy ibbeth, estoy programando con delphi 5, necesito ayuda para poder ingresar informacion en mi base de datos, pero los datos los tengo en un disket como puedo hacerlo? me pueden ayudar? se los agradecere mucho.

luisgutierrezb 22-11-2005 18:59:28

pero como estan esos datos? en que formato? tu base de datos de cual es? access, sql server?

Casimiro Notevi 22-11-2005 19:10:32

Lee la guía de estilo para que podamos ayudarte mejor.

rastafarey 22-11-2005 19:40:21

Resp
 
En qu eformato tine slos datos ya que tienes muchas opciones. Xml formato plano formato binario, etc.

La explicacion que te puede dar depende de los datos.

Aunque una muy buen aopcion es que a la hora de generar el archivo con los datos los generes como insert y asi lo ejecutas como un script y lista pero esto es valido si no hay dpendencias o no hay imagenes d elo cnatrario te recomeindo exportar en un formato binario como xml.
Lo del xml lo puedes hacer con uncleint dataset y luego en tu aplicacio cargas el xml a un clein adata set y haces lo que debas hacer.

ibbeth 24-11-2005 21:08:53

bueno estoy trabajanado con FirebirdInterbase y delphi 5.
lo que pasa es que en este programa se manejan datos de diferentes proveedores y lo que se quiere hacer es importar esos datos en una tabla determinada. los dataos estan en varios disket, el formato de los datos es de texto.

Espero me este explicando y puedas ayudarme. Gracias.

ibbeth 24-11-2005 21:23:40

hola, tratare de explicarte mi pequeño problema.

los datos que contiene el disket son de formato texto, y lo que tengo que hacer es leer desde el diket la informacion, hacer una cadena aisgnandole a cada campo de la tabla parte de la cadena, y como yo apenas empiezo a programar en delphi no se como leer los datos desde el disket.

Espero me este explicando para que me puedas ayudar. De antemano muchas gracias.

Nota: estoy trabajando con FirebirdInterbase y delphi5

maeyanes 24-11-2005 21:48:19

Si los archivos son de solo texto, prueba usando la clase TStringList. En la ayuda de Delphi puedes encontrar información.

Como tip, busca sobre el método LoadFromFile.


Saludos...

rastafarey 26-11-2005 14:48:57

Resp
 
Como te dicen usa un tstringlsit y lee acerca de la funcion extractstrin par que separes loscampo que estan formateado en le registro.

Si me das el formato del archivo te envio el codiog echo par qu eno tengas dolr de cabesas

ibbeth 28-11-2005 20:21:52

Gracias por tu ayuda, no es pesades pero quiero intentarlo, te agradezco de todo corazon tu ayuda,pero si no pude te digo y me ayudas va.

Con cariño ibbeth:)

rastafarey 29-11-2005 14:35:39

Resp
 
Mira supongamos que tienes tienes lo siguiente.

Tu tabla con u campo entero, uno varchar, otro fecha con los siguientes nombres "Id", "Descripcion", "Fecha de ingreso"

A la tabla se llama "Informacion"

Y tu archivo tiene el formato
1,La casa es roja,10/12/2005
34,otra cadena mas,23/10/2004

En lo unico que tienes que tener cuidado es que al enviar la fecha la envies en formato gringo ya que asi es como la reconoce firebird ose 12/10/20005 y 10/23/2004 respectivamente pero si no me explique bien aqui tienes el codigo.
Código Delphi [-]
Procedure InsertarDatos(Const cArchivo: TFileName);
Const
  csSql = 'Insert Into "Informacion"("Id",  "Descripcion", "Fecha de ingreso") Values(%s, ''%s'', ''%s'');';
Var
  lExtructura, lArchivo: TStrings;
  lIbScript: TIB_Script;
  I: Integer;
Begin
  //Asi se encuentra en el formato de disco
  //"Id",  "Descripcion", "Fecha de ingreso"
  lArchivo := TStringList.Create; //Creo el archivo
  lExtructura := TStringList.Create; //acrea la estructura
  lIbScript := TIB_Script.Create(Nil); //Creao el escript que ejecutara las instrucciones
  //lIbScript.IB_Connection := el nombre del componente de base de datos que establece la conexion
  //Yo trabajo con ibo tu solos debes adatarlo al tipo d ecomponentes que uses
  Try
    lArchivo.LoadFromFile(cArchivo); //Leo le archivo
    For I := 0 To lArchivo.Count-1 Do Begin
      lExtructura.Clear; //Limpio la estructura
      ExtractStrings([','], [','], Pchar(lArchivo[i]), lExtructura); //Extraigo la la line actual del archivo par apoder trabajarla
      lIbScript.SQL.Add(Format(csSql, [lExtructura[0], lExtructura[1], FormatDateTime('mm/dd/yyyy', StrToDate(lExtructura[2]))])); //Ensamblo la linea de insercion
    End;
    lIbScript.Execute; //Envio los datos hacia la base de datos y listo
  Finally
    lExtructura.Free;
    lArchivo.Free;
    lIbScript.Free;
  End;
End;

ibbeth 29-11-2005 22:27:52

hola no se quien seas pero nuevamente te agradezco tu ayuda.
graaaaacias.

rastafarey 30-11-2005 21:54:47

Resp
 
Soy RASTAFAREY pero si dices por lo del codigo.
Es que ultimadamente solo responde con codigo por que mis explciaciones no las estan entendiendo.
auanque creo que es que soy malo para explicar.

ha con lo de respecto als gracias de nada

JL_IFE 20-01-2007 02:37:06

Duda
 
para RASTAFAREY si puede contestarme
Disculpen si esto es muy basico
Deseo hacer lo mismo pero la base de datos es con informix y con delphi 6 la duda es en lugar del script que debo manejar, supongo que a travez de un query guardo en la base de datos y la estructura que se sigue usando, si es basico donde lo checo , de todos modos estoy leyendo sobre bases de datos.
:(

Lepe 20-01-2007 10:18:38

si te fijas, lIbScript tiene una propiedad que es sql también, por tanto puedes usar un query como dices, aunque ejecutando la sql por cada línea del Stringlist.

Más o menos:
Código Delphi [-]
For I := 0 To lArchivo.Count-1 Do Begin
      lExtructura.Clear; //Limpio la estructura
      ExtractStrings([','], [','], Pchar(lArchivo[i]), lExtructura); //Extraigo la la line actual del archivo par apoder trabajarla
      lIbScript.SQL.Add(Format(csSql, [lExtructura[0], lExtructura[1], FormatDateTime('mm/dd/yyyy', StrToDate(lExtructura[2]))])); //Ensamblo la linea de insercion
    lIbScript.Execute; // Por cada iteración, ejecuto el script, en tu caso un Query
    End;

Saludos


La franja horaria es GMT +2. Ahora son las 05:56:56.

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