Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-11-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.441
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
Puedes realizar un "preproceso" antes de obtener los campos para cambiar las dos tabulaciones que vengas seguidas por otro valor.
Por ejemplo, cuando encuentres #9#9 (dos tabulaciones) lo modificas por #9$$$#9.
De ésta forma tendrás en número de campos completo, pero los nulos vendrán con valor $$$; Luego es cuestión de detectarlos y añadirlos como nulos.

No se si me he explicado bien; Algo así (no lo he compilado, así que tal vez haya algun error, pero espero que la idea se entienda):

Código Delphi [-]
   var
    ArchivoCsv, Campos: TStringList;
    I, J: Integer;
    Str:String;
  begin
    ArchivoCsv := TStringList.Create;
    Campos := TStringList.Create;
    Campos.Delimiter := #9;  
    try
      ArchivoCsv.LoadFromFile(JvDirectoryEdit.EditText+'\'+Archivo);
      for I := 0 to ArchivoCsv.Count - 1 do
      begin
        // Preproceso
        Str := AnsiReplaceStr(ArchivoCsv[i], #9#9, #9+'$$$'+#9);
  
        Campos.Clear;
        Campos.DelimitedText := Str{ArchivoCsv[i]};
        if(Campos.Count > 5 ) then
        begin
          ADOTableImporta.Insert;
          //for J := 0 to ADOTableImporta.FieldCount - 1 do
          for J := 0 to Campos.Count - 1 do
          begin
            // Es un nulo?
            if (Campos[J] = '$$$') then begin
              ADOTableImporta.Fields[J].Clear;
            end
            else begin 
              ADOTableImporta.Fields[J].Value := Campos[J];
            end;
          end;
          ADOTableImporta.Post;
        end;
      end;
    finally
      ArchivoCsv.Free;
      Campos.Free;
    end;
  end;

NOTA: He intentado resaltar el texto nuevo, y no si se ve peor o mejor...
__________________
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.

Última edición por Neftali [Germán.Estévez] fecha: 17-11-2005 a las 09:18:21. Razón: Resaltar código nuevo
Responder Con Cita
  #2  
Antiguo 17-11-2005
Avatar de edgusano
edgusano edgusano is offline
Miembro
 
Registrado: abr 2004
Ubicación: Medellin Colombia
Posts: 180
Poder: 23
edgusano Va por buen camino
Hola neftali
Gracias por tu respuesta, lastima que cuando llego ya habia hecho otra cosa para solucionarlo, pero veo que lo que muestras ahi es excelente para resolver mi problema. Les cuento que hice para solucionar el problemita:
Acudi a torrynet y mediante la busqueda, encontre una compenente para tratar archivos csv llamada PBParsers la cual FWS
Aunque tuve que hacer unas pequeñas cosillas para el tratamiento de mi archivo por la peculiaridad que este no tiene como promera fila el encabezado de las columnas si no otra cosa, pueden ver esto en una de las respuestas anteriores. Esta componente si me reportaba cuando habia un campo nulo en la fila a procesar.

De nuevo muchas gracias Neftali, lastima que para esta vez no pueda utilizar esa solucion. Sera para una proxima vez.
__________________
Optimus Prime
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


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


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