PDA

Ver la Versión Completa : Componente FreeWare que importe doctos de excel a dbf


JorgeBec
16-06-2004, 19:02:39
Hola! como continuacion de mi anterior mensaje, quisiera saber si alguien conoce un componente freeware que importe de excel a dbf, se los agradecere...bye...

marto
16-06-2004, 20:45:37
mira aquí (http://www.torry.net)

orfeo
16-06-2004, 21:20:03
el Database Export hace casi lo que queres.. http://www.korzh.com

es un componente que Toma un dataset del BDE (en tu caso asociado a un .xls) y lo exorta a muchos formatos en particular .dbf

los formatos son:

TKDatasetToText - export data from an active dataset into text file;
TKDatabaseToText - export and import whole database to the text files. Memo and BLOB fields are also supported;
TKDatasetToHTML - save an active dataset as HTML file;
TKDatasetToDBF - save an active dataset into DBase table;
TKDatasetToPrint - print dataset;

JorgeBec
16-06-2004, 23:49:06
Antes que nada gracias por sus respuestas, bien me gusto la solucion que me diste Orfeo, de hecho ya la instale, pero ahora lo complicado o que al menos no se como hacerle, es, como crear poner un .xls en un DataSet??? por que el componente que me señalas lo ligas con un Dataset...


PD Varios colegas me han señalado el hacerlo con ADO, pero cabe señalar que estoy con Delphi 4 y sino me equivoco, no hay componentes ADO para esta version...

JorgeBec
17-06-2004, 00:01:11
siguiendo con las pruebas del componente KdataSet, he intentado lo siguiente... con ODBC creo el alias con el driver xls, utilizo un TTable(por que no se cual utilizar) y le asignas el DatabaseName del alias que se creo por ODBC, pero obviamente a la hora de correrlo me dice que no hay un tablename asignado, y mi pregunta es entonces que componente que actue como DataSet utilizar??? o de plano ando perdido???


agradecere sus respuestas...

roman
17-06-2004, 01:32:25
o de plano ando perdido???


No, para nada, sólo te falta asignar el nombre de la tabla. Acabo de hacer una prueba igual a la tuya con BDE y ODBC y aunque la propiedad TableName no me lista las hojas en el inspecor de objetos, puedo escribir directamente el nombre de la hoja. Únicamente ten en consideración que debes agregar un signo $ al final del nombre de la hoja.

// Saludos

roman
17-06-2004, 01:49:46
Otra cosa:

Te recomiendo que en lugar de asociar el Table directamente al alias ODBC lo hagas a través de una componente TDatabase:


Database1.AliasName -> alias ODBC
Database1.DatabaseName -> 'mibase' (puede ser cualquier nombre)
Database1.LoginPrompt -> false
Table1.DatabaseName -> 'mibase'

para que no te pida contraseña.

Por otra parte no necesitas ninguna componente extra para convertir a Dbase, Delphi trae todo lo necesario.

Te pongo un ejemplo.

Además de las componentes que ya tienes (Database1 y Table1) agrega otra TTable (digamos Table2) y le pones un nombre en TableName (el que gustes), y añade también una componente BatchMove que sirve precisamente para hacer transferencias.

Usa el siguiente código:


{ Creas la tabla destino }
Table2.TableName := 'exportado.dbf'; // cualquier nombre que gustes
Table2.TableType := ttDbase;
Table2.FieldDefs.Assign(Table1.FieldDefs);
Table2.CreateTable;

{ Transfieres datos }
BatchMove1.Source := Table1;
BatchMove1.Destination := Table2;
BatchMove.Execute;


¡Listo! Eso es todo.

// Saludos

JorgeBec
17-06-2004, 17:49:37
Siguiendo tu ultimo mensaje roman, a la hora de correr el programa me manda este mensaje...

raised exception class EDBEngineError with message 'Key violation' Microsoft odbc excel driver The Microsoft Jet DataBase Engine cannot open the file unknown it is already opened

General sql error
exclusively by another user or you need permission


por que podra ser...???

marto
17-06-2004, 18:19:38
¿Es posible que tengas el excel abierto?

JorgeBec
17-06-2004, 19:27:04
Tal vez lo que hice mal fue ponerle la propiedad Tablename de Table1 mal, lo puse de la siguiente forma

Lotes.xls$ y tambien probe de la siguiente forma
Lotes$

y de las 2 formas me manda el error antes mencionado y no, no tengo abierto Excel...

JorgeBec
17-06-2004, 19:54:07
Ok, ya paso el error ahora me marca lo siguiente


Table2.CreateTable;

en esta linea me marca 'EDBEngine with message Invalid Parameter '

supongo que algo en el Table2 esta mal, que podra ser???

mRoman
16-06-2005, 17:17:10
Oye ORFEO, ya baje los componentes para exportar, realice un formulario llamado frmExportar, y a este le agregue el componente para Exportar a DBF, despues agregue un DataSet el cual tiene los datos que deseo exportar, visite la página de "korzh" y ahi menciona que en el procedure Transefer(...), que guarde el contenido del dataset, pero la verdad no sé en donde exactamente cambiarle...ya tengo integrado el archivo KDS2DBF.PAS a mi proyecto y desde el formulario que elaboré (frmExportar), lo quiero ejecutar, pero no sé que mas debo de cambiarle al archivo KDS2BDF para que funcione o no le tengo que hacer nada?......la bronca ademas de lo anterior, como lo ejectuo.

Gracias y disculpa, pero son mis inicios en Delphi. AH, utilizo Delphi6

orfeo
25-06-2005, 21:03:39
Huu, perdona la demora...

Esto es facil, debe colocar un componete de exportacion de los que trae Database Export y un TTable o TQuery (el que te guste mas)

Supongamos que colocas un TTable y un KDataSetToDBF esto te creara las variables KDataSetToDBF1 y Table1 dentro del formulario

Debes configurar el Table1 con los parametros de la DB origen luego desde un evento onClick de un boton pones el codigo:


Table1.close;
KDataSetToDBF1.DataSet:=Table1;
Table1.open;

luego con

KDataSetToDBF1.Transfer('c:\a.dbf');

Te exporta el DataSet al archivo c:\a.dbf y listo.



Tambien anda en un query. Yo tambien uso Delphi 6 (no deberias tener problemas)

Este componente usa el TBatchMove que trea nativamente el DBE para lograr su funcion.

hasta la proxima...

ercrizeporta
25-06-2005, 21:36:06
buenas antes de nada decir que no se como añadir un nuevo tema al foro. espero que alguien lea mi pregunta y a ver si podeis hacer el favor de contestarme, tb agradecería me dijerais como crear nuevos temas.
mis dudas sobre delphi son las siguientes:
1.- como ir posicionando el control del foco de un formulario hacia el campo que yo kiera en el momento que yo crea oportuno.

2.- una funcion prefijo, la cual me diga si una cadena de caracteres es prefijo de otra.

3.- como ir cambiando la posicion del cursor en un listbox.

mi idea es poner un edit y en la propiedad on change hacer que el cursor del listbox apunte hacia el primer item cuyo comienzo de palabra sea el mismo que en el edit.
sin mas despedirme y agradecer si alguien pudiera ayudarme a conseguir estas funciones. Muchas gracias!!!