Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-10-2011
Avatar de CHECHE81
CHECHE81 CHECHE81 is offline
Miembro
 
Registrado: may 2007
Ubicación: Huauchinango, Puebla
Posts: 64
Poder: 17
CHECHE81 Va por buen camino
Talking Exportar una tabla DBF a MySQL

Saludos¡¡¡
Pues con la novedad que estoy intentando cargar unos datos de unos .dbf pero con la cuestión que algunos tienen 870 columnas algunas menos pero la mayoria anda en ese rango, entonces lo ligue a un cxgrid(v 6.54) donde trae un método para exporta a excel llamado ExportGridToEXCEL pero ho sorpresa solo me trae 245 columnas, tengo el siguiente código:
Código Delphi [-]
  // Establece las propiedades del cuadro de dialogo.
   SaveDialog.Filter := 'Hoja de Cálculo Excel (*.xls) | *.xls';
   SaveDialog.Title := ' Salvar listado como Hoja de Cálculo Excel';
   // Si el usuario digitó Ok en el cuadro de dialogo.
   if SaveDialog.Execute then
   begin
     // Salva la información en un archivo de Excell.
     ExportGridToEXCEL(SaveDialog.FileName,cxGrid1, True,True,True,'xls');
     MessageDlg('La información fué salvada en ' + SaveDialog.FileName, mtInformation, [mbOk], 0);
   end;

No se si me falte algún parametro o establecer algún valor o si ese es su limite, pensando en eso me puse a la tarea de investigar como podria crear los campos del Table de datos del .dbf a un ClientDataSet ligado a una tabla que solo tiene el campo Id, encontre información en un link de ROMAN (http://www.clubdelphi.com/foros/showthread.php?t=5033)pero no se si es correcto como lo estoy utilizando, porque no me crea los campos fisicos por asi llamarlos en mi tabla de la bd de MySQL:
Código Delphi [-]
  dmConexion.cdsBach1i10.Open;
   BACH1I10.Open;
    numcol:=BACH1I10.FieldCount;
   showmessage(inttostr(numcol));
   for I := 0 to numcol-1 do
   begin
     FieldDefSource := BACH1I10.FieldDefs[i];  //campos de mi table del .dbf
     FieldDefDest := dmConexion.cdsBach1i10.FieldDefs.AddFieldDef;  //CDS donde quiero crear los capos "fisicos"
     FieldDefDest.Assign(FieldDefSource);
   end;   showmessage('Campos copiados con éxito.');
Cualquier dato se los agradesco, gracias por su tiempo...
__________________
Cuidemos el medio ambiente....jojo
Responder Con Cita
  #2  
Antiguo 06-10-2011
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Hola Cheché.

Veré si puedo echar una mirada más tarde.

De momento algo para entretenerse.

Saludos.
Responder Con Cita
  #3  
Antiguo 06-10-2011
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por CHECHE81 Ver Mensaje
[...] o si ese es su limite [...]
Bueno, lo de la rejilla parece que sí es una limitante de Excel, hasta la versión 2007: http://msdn.microsoft.com/en-us/libr...ffice.12).aspx

Cita:
The Excel 2007 "Big Grid" increases the maximum number of rows per worksheet from 65,536 to over 1 million, and the number of columns from 256 (IV) to 16,384 (XFD).
Debí leer eso antes de agregar 650 columnas a una rejilla cx para probar.

Por cierto, en tu caso puede que algunas de las columnas se estén usando para grupos y elementos similares.

En cuanto a lo demás, ¿podrías replantear con más calma y claridad la pregunta?
Responder Con Cita
  #4  
Antiguo 06-10-2011
Avatar de CHECHE81
CHECHE81 CHECHE81 is offline
Miembro
 
Registrado: may 2007
Ubicación: Huauchinango, Puebla
Posts: 64
Poder: 17
CHECHE81 Va por buen camino
Lightbulb

Así es Al, checando con el soporte de DevExpress esa versión del grid trae esa misma limitante también:
http://www.devexpress.com/Support/Center/p/Q315666.aspx pero la versión 7 del cxGrid ya trae ilimitado esa parte hay que actualizar la versión pero me imagino será una lana.

Bueno pasando a la segunda opción que menciono, la idea sería recorrer mi Table ligada al .dbf, leer el nombre de cada campo (field) e ir creando las "n" columnas o campos(field) dentro de mi ClientDataSet donde tengo ligada mi tabla de mi bd de MySQL, que solo tienen el campo ID y está en espera de que le creemos los campos "fisicos"(field) necesarios vía código y una vez creados los campos cargarle los registros.

A ver si me explique, gracias por su tiempo y tu paciencia Al.
__________________
Cuidemos el medio ambiente....jojo
Responder Con Cita
  #5  
Antiguo 06-10-2011
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Ah, ¿entonces estamos hablando de exportar una tabla DBF a MySQL?

Sí es así, ¿podría algún moderador cambiar el título del hilo a lo que está con negritas? Gracias.

Algunas preguntas: ¿es importante que se haga con una tabla de MySQL ya existente (que, como dices, solamente contiene el campo "ID") o vale también que el proceso cree la tabla completa? ¿Esa tabla destino ya contiene registros o está vacía? ¿Cuál es su función antes de recibir la nueva estructura y datos? ¿Ese campo ID ya tiene forma de alimentarse (mediante disparador, autoincrementado, etc.)? ¿La tabla origen no tiene ese campo?

Antes de poder usar un TClientDataSet, la tabla destino ya debe tener la estructura deseada. Desde Delphi puedes crearle los campos usando el objeto conexión, enviando instrucciones DDL como:

"Alter Table NombreDeTabla Add NombreDeCampo TipoDeCampo Not Null" (considerando SQL estándar, desconozco si es la misma sintaxis en MySQL).

En caso de que estés usando TSQLConnection, el método para enviar esa instrucción sería ExecuteDirect.

Si no es indiscreción, danos un poco más de contexto, ¿qué motiva este requerimiento en tu proyecto? ¿Cómo va la jugada?

Un abrazo.

Al.
Responder Con Cita
  #6  
Antiguo 07-10-2011
Avatar de CHECHE81
CHECHE81 CHECHE81 is offline
Miembro
 
Registrado: may 2007
Ubicación: Huauchinango, Puebla
Posts: 64
Poder: 17
CHECHE81 Va por buen camino
Cool

Disculpa la falta de lucides para el titulo del hilo, como ando atareado haciendo varias cosas y probando otras, se me enrredan las ideas y se me olvidaba que eres "Al", con respecto a:
Cita:
¿es importante que se haga con una tabla de MySQL ya existente (que, como dices, solamente contiene el campo "ID") o vale también que el proceso cree la tabla completa?
Yo di la opción de que ya tenia creada la tabla con el campo Id solamente, pero también se vale que se cree completamente desde código.

Cita:
¿Esa tabla destino ya contiene registros o está vacía?
Está completamente vacía, nuevecita de paquete, porlo que si se crea desde código no hay problema.

Cita:
¿Cuál es su función antes de recibir la nueva estructura y datos?
Ninguna función, solo la de cargar la estructura y datos de la tabla, para poder generar consultar desde nuestro sistema de java o en nuestro administrador de bd (MySQL Workbench).

Cita:
¿Ese campo ID ya tiene forma de alimentarse (mediante disparador, autoincrementado, etc.)?
Si, es de tipo auto incrementable.

Cita:
¿La tabla origen no tiene ese campo?
No, la tabla origen no tiene el campo Id.

Estoy utilizando DelphiXE con los DevExpress v 6.54 aqui en el trabajo, para crear varios módulos para la gestión y carga de datos desde archivos .xls, .xlsx, .dbf, que son muchisimos y casi todos llevan una gran cantidad de registros(45,000 ó +) y campos(870), como ya lo habia mencionado antes, entonces estaba pensando exportar del cxGrid a excel y de ahi subirlo a MySQL pero ya vimos que esa no es una opción ya que tiene límites, ahora esta la opción de crear un proceso para cargar los campos y datos de un TTable donde cargue uno de tantos archivo .dbf que tenemos ya que vienen de otras instituciones y hay que cargarlas en nuestra bd de MySQL para hacer los cruces de información y sacar reportes.

Investigaré al respecto de utilizar instrucciones DDL(lenguaje de definición de datos) para ver si no existe algúna diferencia con MySQL y tratar de hacer así la inserción de columnas y de datos, de nuevo gracias por su tiempo.

Saludos¡¡
__________________
Cuidemos el medio ambiente....jojo

Última edición por CHECHE81 fecha: 07-10-2011 a las 03:24:10.
Responder Con Cita
  #7  
Antiguo 07-10-2011
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Hola Cheché.

Encontré este par de enlaces que podrían ser de utilidad:

http://www.clubdelphi.com/foros/showthread.php?t=37880

http://www.tecnoretales.com/linux/im...s-dbf-a-mysql/

Creo que no sería difícil incorporar el proceso en tu aplicación. Ya nos dirás si te funciona o en qué más podemos ayudar, para eso estamos en los foros.

Saludos.
Responder Con Cita
  #8  
Antiguo 07-10-2011
Avatar de CHECHE81
CHECHE81 CHECHE81 is offline
Miembro
 
Registrado: may 2007
Ubicación: Huauchinango, Puebla
Posts: 64
Poder: 17
CHECHE81 Va por buen camino
Wink

Si, que pasa, Al.

Se me habia pasado comentar que anteriormente a publicar el post, busque y ya habia probado ambos y otras herramientas, pero no nos trae los resultados deseados, en el caso de la aplicación de [AzidRain] no me jala por algo de incompatibilidad y el caso de utilizar el dbf2mysql lo instalamos en una máquina virtual de CENTOS pero nos trae las tablas cortadas a 255 columnas.
Por esa razón estamos buscando desarrollar un proceso en delphi para lograr nuestro objetivo.
Ya les estaré comentando como me va con el desarrollo del proceso y si me atoro en algo, ya les estaré preguntando.

Gracias Al por los links y por su tiempo.
Saludos.

__________________
Cuidemos el medio ambiente....jojo
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Error al exportar tabla de MySQL a un archivo de texto cmfab Varios 2 16-06-2011 18:20:46
exportar tabla paradox a Mysql en servidor tec4eso MySQL 5 15-05-2011 00:41:16
exportar tps a mysql pborges36 MySQL 1 11-10-2006 19:08:31
Exportar .dbf para MySql Roilo MySQL 4 06-09-2006 17:10:43
PHP: Importar / Exportar Mysql dmassive PHP 5 21-01-2006 01:16:25


La franja horaria es GMT +2. Ahora son las 12:42:41.


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
Copyright 1996-2007 Club Delphi