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)
-   -   importacion de datos a DB (https://www.clubdelphi.com/foros/showthread.php?t=20413)

uper 14-04-2005 19:32:54

importacion de datos a DB
 
hola a todos,

en algun link, obtuve como importar datos (desde un archivo txt) yo lo comprobe pero tiene unos problemillas al hacerlo, por que cuando son numeros enteros me importa unos numeros en miles, etc, este es el fragmento que fui modificando:

create table tablaEx external file 'C:\Mis documentos\Documentos\prov.txt'
(
clave integer,
Nombre varchar(50),
telefono varchar(25),
clasif varchar(4),
saldo double precision,
retorno char(2) ------> asi lo indicaron
);
donde n = 2 en windows y n = 1 en linux donde se coloca el numero (n).

busque el Ibexpet edition personal, ya registre la base y tengo un archivo en excel y de este hice una copia para guardarlo como tipo CVS preguntandome que si deseaba conservar los caracteres de compatibilidad, [Si].
en las ayudas esta como importarlo:
INSERTEX INTO provs(clave,proveedor,tel,cat,saldo) FROM CSV 'C:\Mis documentos\Documentos\proves.csv' DELIMITER ';' SKIP 1;
alguien ha importado datos y me pueda indicar como hacerlo.
les agradesco mucho

lgarcia 14-04-2005 20:33:27

Importacion de datos a DB
 
Hola

Dado que ya tienes los datos en Excel me parece que es mas facil importarlos directamente del xls que del cvs ahi te envio un codigo que te puede ayudar
Código Delphi [-]
 procedure TFormMenu.Productos2Click(Sender: TObject);
 var
   j: Integer;
 begin
   try
     Excel := CreateOleObject('Excel.Application');
   except
     Excel.Quit;
     showmessage('No se pudo crear el Objecto Excel.');
     raise;
   end;
   if OpenDialogXls.Execute then Archivo:= OpenDialogXls.FileName
   else exit;
   Excel.Workbooks.Open(Archivo);
   j:= 2;
   try
     repeat
       with InsertarProductos do
       begin
         Close;
         Parameters.ParamByName('@codplu').Value:= Excel.Cells[j,1].Value;
         Parameters.ParamByName('@codtrasval').Value:= Excel.Cells[j,2].Value;
         Parameters.ParamByName('@codfabricante').Value:= Excel.Cells[j,3].Value;
         Parameters.ParamByName('@descripcionplu').Value:= Excel.Cells[j,4].Value;
         Parameters.ParamByName('@preciocosto').Value:= Excel.Cells[j,5].Value;
         Parameters.ParamByName('@precioventa').Value:= Excel.Cells[j,6].Value;
         Parameters.ParamByName('@um').Value:= Excel.Cells[j,7].Value;
         Parameters.ParamByName('@categoria').Value:= Excel.Cells[j,8].Value;
         Prepared:= True;
         ExecProc;
       end;
     inc(j);
     until Excel.Cells[j,2].Value = '';
     Excel.quit;
     ShowMessage(' El fichero de productos ha sido importado exitosamente');
   except
     ShowMessage(' !!!!! ATENCION !!!!! ' + chr(13) +
                     ' El fichero no pudo ser importado' + chr(13) +
                     ' Revise bien su estructura');
   end;
 end;
Donde Excel : Variant;

y en el uses incluir Excel97, ComObj

El ejemplo comienza en j:= 2 por que tengo encabezada la primera fila del documento.

Espero que te sea util

Saludos
Luis Garcia

_____________________________
La mejor manera de decir es hacer

uper 15-04-2005 23:41:06

saludos

mi duda es que para importar datos seria conveniente hacerlo por un store procedure, para que se ejecute desde la aplicacion una vez que cargemos el archivo en excel.

mi SP es el siguiente, pero me dice que hay un error en la linea 9 char 10 insert

CREATE PROCEDURE INSERTAR_PROV (CLAVE_PROV Integer,
PROVE Varchar(50),
"TEL_PROV " Varchar(15),
CAT Varchar(4),
" SALDO_PROV" Double precision)
AS
begin
FOR SELECT(Insert into provs(clave, proveedor, tel, cat, saldo)
values(:CLAVE_PROV, :PROVE, :CAT, :SALDO_PROV) from Provs
suspend;
end

me pueden indicar como es la correcta insercion en este sp

gracias


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

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