Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-08-2010
TJose TJose is offline
Miembro
 
Registrado: may 2003
Posts: 162
Poder: 22
TJose Va por buen camino
Hola

me parece que es más simple y eficiente hacerlo a nivel servidor usando external file. Por favor mirá este enlace [1] es viejo, no sé cuanto habrá cambiado firebird, pero debiera funcionar.

Saludos
TJose

[1] http://www.clubdelphi.com/foros/showthread.php?t=35902
Responder Con Cita
  #2  
Antiguo 09-08-2010
ivantech ivantech is offline
Miembro
 
Registrado: dic 2009
Posts: 27
Poder: 0
ivantech Va por buen camino
Question

gracias por responder

resulta que ya estuve utilizando el formato de ancho fijo pero resulta que es muy complicado cuando es un usuario el que va a lidiar con el archivo de texto. siempre que un carácter o espacio o cualquier cosa daña una posición y wala el proceso esta trancado. mejor prefiero que sea delimitado esto me evitaría un poco de dolor de cabeza. eh visto muchos procesos pero ninguno me dejan claro y no dispongo de mucho tiempo para analizar y fusionar código, es por esto que, apelo a alguien que disponga de dicha rutina o que me ayuden a armarla, se de antemano que son varios pasos como:
  1. Leer el archivo
  2. cargarlo a un stringlist o memo
  3. leer cada fila y descomponerla por cada delimitador
  4. pasar cada variables los valores obtenidos por la descomposición de la cadena
  5. cada variable pasarla al dataset para insertarlos en la tabla deseada.

otra cosa, es que el proceso sera manipulado por un usuario normal y no dispone de experiencia para manipulación el proceso debe ser simple un modulo de la aplicación donde se capturan los datos de producción y se genera un TXT el cual es transportado a través de un medio extraible a la dependencia principal y la aplicación servidor leer el archivo y lo carga a la base de datos central. todo este proceso debe ser a través de un ambiente amigable y simple.

Última edición por ivantech fecha: 09-08-2010 a las 03:32:55.
Responder Con Cita
  #3  
Antiguo 09-08-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
A ver:
Código Delphi [-]
procedure GetDocAsTxt(FileName, SaveTxtFileTmp: string; var TxtDoc: string);
var
  WordApp: Variant;
  vTxtFile: TextFile;
  TxtData: string;
begin
  WordApp := CreateOleObject('Word.Application');
  WordApp.Documents.Open(FileName);
  WordApp.ActiveDocument.SaveAs(string(SaveTxtFileTmp), 2);
  ShellExecute(Application.Handle, nil, 'tskill', 'WINWORD', nil, SW_HIDE);
  Sleep(100);
  AssignFile(vTxtFile, SaveTxtFileTmp);
  Reset(vTxtFile);
  TxtDoc := '';
  while not Eof(vTxtFile) do
    begin
      Readln(vTxtFile, TxtData);
      TxtDoc := TxtDoc + TxtData + #13#10;
    end;
  CloseFile(vTxtFile);
  DeleteFile(SaveTxtFileTmp);
end;

Uso:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  Archivo, a: string;
  i: Integer;
  Ruta, N1, N2: String;
begin
  Ruta:= Edit3.Text;
  N1:= 'BD.Txt';
  N2:= 'BD2.Txt';
  GetDocAsTxt(Ruta+N1, Ruta+N2, Archivo);
  for i := 1 to Length(Archivo) do
  begin
    Edit1.Text:= (Archivo[i]);
    a:= a + Edit1.Text;
    Memo1.Text:= a;
    if edit1.Text = '|' then
    begin
    ShowMessage('encontre un | y guarde el dato');
    // aqui podria guardar el dato en una tabla X
    // o tambien asignar una variable string la que contendra el dato
    // y lo colocara en un dataset
    end;
    end;
end;

Saludos
__________________
Siempre Novato
Responder Con Cita
  #4  
Antiguo 09-08-2010
ivantech ivantech is offline
Miembro
 
Registrado: dic 2009
Posts: 27
Poder: 0
ivantech Va por buen camino
Smile

hola caral

nada mas aclarando una dudita, la confusión mia es por lo del WORD el primer procedimiento, a ver para que me aclares convierte un DOC a TXT o que???

porque ya pude generar el archiv txt ej:

Código:
SRS1012101001120100707121115|SRS1|1|21|1|1|000-0000000-0|RUTH ESTHER RODRIGUEZ|N|DO|N||0|0||N|2|13/02/2007|16|5|3|3|1|2||J129|1|27|2466||0||||0|0||0|0|0|0||||S|N|N|N|N||1|MARIA C|002-0101672-2|N||||07/07/2010|12:11:16|29/07/2010
SRS1012101001120100715105037|SRS1|1|21|1|1|000-0000000-0|FLORENDA ALTAGRACIA ROSARIO|N|DO|N||24|1|020733496|N|2|13/10/1959|17|9|50|1|1|2||J00|2|27|2466||0||||0|0||0|0|0|0||||S|N|N|N|N||1|ARIANNA|002-0105013-5|N||||15/07/2010|10:50:38|30/07/2010
SRS1012101003120100707132616|SRS1|1|21|1|3|000-0000000-0|FRANCISCA RAMIREZ|N|DO|N||24|1|018712317|N|2|02/04/1975|19|3|35|4|1|2||R104|1|27|2466||0||||0|0||0|0|0|0||104314||S|N|N|N|N||1|DR.GUILLEN|002-0077118-6|N||||07/07/2010|13:26:17|21/07/2010
SRS1012101001120100618142317|SRS1|1|21|1|1|000-0000000-0|JUAN DELGADOS|N|DO|N||24|1|053232486|N|1|26/07/1966|1|1|44|1|1|2||J00|1|27|2466||0||||0|0||0|0|0|0||||S|N|N|N|N||1|ARIANNA|002-0105013-5|N||||18/06/2010|14:23:18|26/07/2010
SRS1012101003120100705111924|SRS1|1|21|1|3|000-0000000-0|LIDIA FERMIN|N|DO|N||24|0|021292030|N|2|18/03/1951|3|4|59|4|1|2||H669|1|27|2466||0||||0|0||0|0|0|0||104561||S|N|N|N|N||1|DR.GUILLEN|002-0077118-6|N||||05/07/2010|11:19:24|21/07/2010
SRS1012101003120100712144239|SRS1|1|21|1|3|000-0000000-0|MARIA ELENA GURIDYS|N|DO|N||24|1|018174641|N|2|05/09/1950|16|10|59|4|1|2||J00|1|27|2466||0||||0|0||0|0|0|0||104341||N|N|N|N|N||1|DR.GUILLEN|002-0077118-6|N||||12/07/2010|14:42:39|21/07/2010
lo que quiero es tomar cada dato y llevarlo a variable o arreglo, no se para pasarlo a cada campo y que el proceso se realice a través de la aplicación pero lo mas transparente posible, pues como explique anteriormente es un usuario que haría la carga a la base de datos central.
Responder Con Cita
  #5  
Antiguo 09-08-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
El codigo trabaja con archivos TXT o DOC, cualquiera.
Me da la impresion, viendo el contenido del archivo text que vas a necesitar crear un array y este tendra que poseer los datos, los que posteriormente se tendran que pasar a la tabla en cuestion, ya que mencionas que son varios campos.
No lo veo muy complicado, lo que si veo es que tendras algo de trabajo para acomodarlo a lo que necesitas.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #6  
Antiguo 09-08-2010
ivantech ivantech is offline
Miembro
 
Registrado: dic 2009
Posts: 27
Poder: 0
ivantech Va por buen camino
si eso mismo, pero no se como trabajar esa parte del array si me pudieran echar una manito se los agradeceria bastante, estoy medio estancado con esto.
Responder Con Cita
  #7  
Antiguo 09-08-2010
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Aqui no solo hay que tomar en cuenta lo que hace o no un array.
Hay que saber:
1-Cuantos campos tiene la tabla?.
2-Siempre se actualizan todos, los mismo, en el mismo orden?.
3-Es necesario una vista previa antes de guardar (para detectar errores)??.
Ademas es necesario añadir al codigo:
La eliminacion de la barra antes de guardar el dato.
La eliminacion de espacios.
La consecuente revision de que si llego al ultimo campo regrese a la primer campo y vuelva a guardar.

Como dije, es una faena interesante que te queda por delante.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #8  
Antiguo 09-08-2010
TJose TJose is offline
Miembro
 
Registrado: may 2003
Posts: 162
Poder: 22
TJose Va por buen camino
Cita:
Empezado por ivantech Ver Mensaje

otra cosa, es que el proceso sera manipulado por un usuario normal y no dispone de experiencia para manipulación el proceso debe ser simple un modulo de la aplicación...
Ok, pensé que se trataba de una migración puntual.

Saludos
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
actualizar tabla al insertar en otra tabla hybrid Conexión con bases de datos 14 02-12-2009 15:09:13
leer txt con firebird laukri Firebird e Interbase 6 06-01-2008 18:06:52
Leer/insertar/modificar datos desde un archivo XML IVAND Varios 1 26-08-2006 23:11:29
Dbgrid para insertar en una tabla pero cogiendo datos de otra tabla taru MySQL 1 27-07-2006 15:36:12
Como insertar datos de una tabla en otra tabla? Salomon Firebird e Interbase 1 28-08-2003 11:29:40


La franja horaria es GMT +2. Ahora son las 19:53:24.


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