Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-10-2011
Ledian_Fdez Ledian_Fdez is offline
Miembro
 
Registrado: jun 2006
Ubicación: Ciudad Habana, Cuba
Posts: 242
Poder: 18
Ledian_Fdez Va por buen camino
Thumbs down Leer campos de un archivo de texto.

Hola
Tengo un archivo de texto que lo genera un sistema y con esa información tengo que actualizar unas tablas en SQL Server 2000 la cual la usan otro sistema, es algo asi como que el archivo de texto es el enlace entre los dos sistemas. El archivo tiene la siguiente estructura:

codigo|nombre|carnet|direccion|email

0001|Maria Isabel|78040405328|mexico, df|maria@company.mx
0111|Alberto Pajal|78040405328|argentina|alberto@gmail.com
4564|Gerald Tons|78040405328| |
0855|Gina Pajal|78040405328|mexico, df|gina@yahoo.com
9874|Clara Picante|78040405328|mexico, df|clara@yupy.com

Necesito saber cómo leer campo a campo (delimitados por el palo vertical | ) en el archivo para luego con esa información poder actualizar las tablas.

Noten que en ocasiones hay campos que no presentan información lo cual se traduce en la tabla que el campo es null.

Como siempre, mil grasias de antemano y en espera de su respuestas un delphino.
Responder Con Cita
  #2  
Antiguo 27-10-2011
joni88 joni88 is offline
Registrado
NULL
 
Registrado: oct 2011
Posts: 7
Poder: 0
joni88 Va por buen camino
Hay una instrucción que se llama BULK INSERT que te permite hacer eso:

Código SQL [-]
BULK INSERT tabla
FROM archivo
WITH
(
    FIELDTERMINATOR = '|',
    ROWTERMINATOR = '\n',
    CODEPAGE = 'ACP'
)

Lo único, que hasta donde yo se solo vas a poder hacer el insert en una sola tabla, que tiene que tener solamente los campos de tu archivo: codigo, nombre, carnet, direccion, email

Última edición por joni88 fecha: 27-10-2011 a las 15:28:43.
Responder Con Cita
  #3  
Antiguo 27-10-2011
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: 18.282
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
Revisa estas dos entradas:

Cargar datos de un TXT a un TDataset (utilizando ADO)
Cargar datos de un TXT a un TDataset (utilizando ADO) – Parte 2
__________________
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
  #4  
Antiguo 27-10-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Ledian_Fdez.

Otra opción:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  F: TextFile;
  TS: TStrings;
  Linea: string;
  i: Integer;
begin
  AssignFile(F,'C:\TU_ARCHIVO.TXT');  // nombre del archivo .txt
  Reset(F);
  try
    TS:= TStringList.Create;
    try
      while not Eof(F) do
      begin
        Readln(F, Linea);
        if (Length(Linea)>0)and (Linea[1] in ['0'..'9']) then  // los datos a pasar, empiezan con un número (codigo)
        begin
          TS.Clear;
          ExtractStrings(['|'], [], PChar(Linea), TS);
          DataSet.Append;   // (o insert)
          for i:= 0 to TS.Count-1 do
            DataSet.Fields[i].AsString:= TS[i];  
          DataSet.Post;
        end;
      end;
    finally
      CloseFile(F);
    end;
  finally
    TS.Free;
  end;
end;
En el ejemplo supongo que los datos en archivo de texto tienen el mismo órden que en la tabla, de no ser así tendrías que ponerlos a mano:
Código Delphi [-]
   DataSet.FieldByName('Codigo').AsString:= TS[1];
   ...
   DataSet.FieldByName('Email').AsString:= TS[5];


Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 27-10-2011 a las 19:04:50. Razón: Corregir subindice
Responder Con Cita
  #5  
Antiguo 31-10-2011
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Escribí por error.

Última edición por escafandra fecha: 31-10-2011 a las 14:49:31.
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
Abrir, leer y escribir un archivo de texto zvf OOP 26 01-07-2010 02:14:05
Leer archivo de texto y extraer lineas de el mp3968 API de Windows 1 19-05-2007 20:27:53
Leer un archivo de texto carlosegs11 Varios 8 18-05-2007 01:56:30
Como leer un archivo de texto por codigo Shidalis Varios 2 03-09-2005 05:54:34
Leer un TQuery y armar un archivo de texto Oscar25 Conexión con bases de datos 1 01-09-2004 16:21:51


La franja horaria es GMT +2. Ahora son las 23:03:44.


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