Club Delphi  
    Paypal   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 Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-08-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Tambien si puedes usar querys, existe el loadfromfile, aunque el texto tendria que estar en XML.
Responder Con Cita
  #2  
Antiguo 01-08-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.442
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Deberías especificar qué estructura tiene el archivo de texto. Tal vez puedas configurar la fuente de datos para acceder al TXT. Otra opción es "preprocesar" el archivo de texto para que el DBGrid lo entienda.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 01-08-2008
Avatar de Lord Delfos
Lord Delfos Lord Delfos is offline
Miembro
 
Registrado: ene 2008
Ubicación: Tandil, Argentina
Posts: 558
Poder: 19
Lord Delfos Va por buen camino
Pues el archivo de texto viene en seis formatos diferentes, pero todos son más o menos de la misma:

202548777102120545041 ESTO 1546564LOOTRO
202548777102120545041 ESTO 1546564LOOTRO
202548777102120545041 ESTO 1546564LOOTRO

Diez mil líneas de eso. Yo tengo que separar cada dato que sé que tienen, digamos un varchar(20), int, un varchar(8), 3 espacios, bla bla.

Todo un tema realmente. Con stringgrid sería tan fácil...

PD: ¿LoadFromFile? ¿Está en todas las versiones? Porque en Delphi 5 parece que no.
Responder Con Cita
  #4  
Antiguo 01-08-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
TAdoQuery.loadfromfile, pero solo carga XML. Tuve algo parecido...te lo muestro, y tu lo adaptas a tus necesidades...

Código Delphi [-]
procedure T_lectura.Interpretar_Families;
var
        buffer  : string;
        buf_tmp : PChar;
        codi_fam : integer;
        codi_gam,
        desc_fam : string;
        error_fam : boolean;
        k : cardinal;
        i : cardinal;
        tim : T_Timer;
begin
       _errors.Memo1.Clear;
       _errors.Memo1.Lines.Add('Inici d´interpretació de families.');
       _errors.Memo1.Lines.Add('_________________________________');

       error_fam := false;
// MemoFitxer.LoadFromFile(nombre_archivo);
       k := MemoFitxer.Lines.Count-1; // Nova linia amb EOF


       tim := T_Timer.Create(self);
       tim.Inicia(k,'Interpretació de families.');
       _lfam.Desactivar;

       // Obrim i borrem tota tFAM.

       dm.qFAM.Active := false;
       dm.qFAM.SQL.Text := 'delete from FAMILIES where id < 10000';
       dm.qFAM.ExecSQL;
       dm.qFAM.SQL.Text := 'select * from FAMILIES order by id asc';
       dm.qFAM.Active := true;;

       // Preparem variables.

       getmem(buf_tmp,115);

       i := 0;
       buf_tmp^ := chr(0);

       // Inici lectura del richedit

       codi_fam := -1;

       while (i < k) do
       begin
                Application.ProcessMessages;
                if tim.Abortat then break;

                buffer := MemoFitxer.Lines[0];

                Label4.Caption := inttostr(i);
                Update;
                MemoFitxer.Lines.Delete(0);

                // Carreguem les variables.

                strLcopy(buf_tmp,PChar(buffer),4);
                try
                codi_fam := strtoint(buf_tmp);
                except
                error_fam := true;
                _errors.Memo1.Lines.Add('línia ' + inttostr(i) + ': ' + 'No s''ha pogut interpretar ' + buf_tmp);
                continue;
                end;

                strLcopy(buf_tmp,PChar(buffer) + 4,35);
                desc_fam := buf_tmp;

                strLcopy(buf_tmp,PChar(buffer) + 39,2);
                codi_gam := buf_tmp;

                inc(i);
                tim.Seguent; // Augmentem curr_elem del timer.

                // insertem el nou registre.

                try
                dm.qFAM.Append;
                dm.qFAM.Fieldvalues['id'] := codi_fam;
                dm.qFAM.Fieldvalues['DESCR'] := _trim(desc_fam);
                dm.qFAM.Fieldvalues['id_linia'] := codi_gam;
                dm.qFAM.Post;
                except
                error_fam := true;
                _errors.Memo1.Lines.Add('línia ' + inttostr(i) +': ' +  'Error insertant ' + desc_fam + ' amb codi ' + inttostr(codi_fam));
                end;
       end;

       // Finalitzem finestra del timer.

       tim.Finalitza;

       // En el cas de cancelació.

       if tim.abortat then
       begin
         MessageDLG('Interpretació abortada',mtError,[mbOk],0);
         _errors.Memo1.Lines.Add('Interpretació abortada');
       end;
       tim.Destroy;

       // Tractament dels errors.

       if error_fam then
       begin
        MessageDLG('Hi han hagut errors d''interpretació.',mtInformation,[mbOk],0);
        _errors.Show;
       end;

       WindowState := wsNormal;

       _lfam.Activar;

       freemem(buf_tmp);
       Activada := false;
       close;
end;


aunque ponga memofitxer, es un richedit. Es curioso, pero me funcionaba mucho mas rapido que con un memo o un tstringlist.

Última edición por coso fecha: 01-08-2008 a las 19:42:19.
Responder Con Cita
  #5  
Antiguo 01-08-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Lord Delfos Ver Mensaje
Pues el archivo de texto viene en seis formatos diferentes, pero todos son más o menos de la misma:

202548777102120545041 ESTO 1546564LOOTRO
202548777102120545041 ESTO 1546564LOOTRO
202548777102120545041 ESTO 1546564LOOTRO

Diez mil líneas de eso. Yo tengo que separar cada dato que sé que tienen, digamos un varchar(20), int, un varchar(8), 3 espacios, bla bla.
Si la anchura de cada dato es fija o si hay un separador de campos, puedes usar ADO con el driver de texto para leer el archivo como si fuese una tabla de una base. Lo único que requieres es un archivo schema.ini que defina la longitud de cada campo o el separador. De eso hemos hablado aquí.

// Saludos
Responder Con Cita
  #6  
Antiguo 02-08-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.442
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Creo que esto te puede servir. Sobre todo la parte del final del fichero SCHEMA.INI, donde puedes definir el ancho y tipo de cada uno de los campos.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #7  
Antiguo 02-08-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.442
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Acabo de comprobar que sí se puede. A esto me refería.
Archivos Adjuntos
Tipo de Archivo: zip ADO Fichero texto.zip (1,6 KB, 21 visitas)
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #8  
Antiguo 04-08-2008
Avatar de Lord Delfos
Lord Delfos Lord Delfos is offline
Miembro
 
Registrado: ene 2008
Ubicación: Tandil, Argentina
Posts: 558
Poder: 19
Lord Delfos Va por buen camino
¡Ajá! Eso de ADO parece interesantudo. Habrá que ojearlo, pues.

Gracias mil.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Cargar DBGrid rohd Conexión con bases de datos 5 03-11-2010 00:30:59
¿Se puede cargar a mano un DBGrid de Jedi? fonx OOP 3 24-04-2008 16:32:00
Una Mano con QReport 4.06 y LX-300+ El_Raso Impresión 2 21-02-2007 16:34:51
Como cargar los datos de un arreglo en un dbgrid sin utilizar sql ilichhernandez Conexión con bases de datos 3 13-07-2006 19:17:20
Problemas al cargar el DBGrid Nathan Conexión con bases de datos 1 21-05-2006 10:23:26


La franja horaria es GMT +2. Ahora son las 16:44:02.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi