![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Cita:
Cita:
Cita:
Campos.CommaText := ArchivoCsv[i]; en Campos[0] tienes el código a buscar. Cita:
Igual que antes, una vez que llenas Campos en cada línea del archivo, Campos[0], Campos[1], Campos[3], etc. tendrán los valores de cada campo y con un Length(Campo[n]) calculas la longitud del valor del campo n-ésimo. Está claro que la tabla dbase debe tener la estructura adecuada para recibir los valores pero esto ya no es una cuestión del código sino de que el archivo de texto proporcionado con los datos se ajuste al formato de la tabla. // Saludos |
|
#2
|
||||
|
||||
|
Puedes Usar esta otra:
Ejemplo de uso: Texto:='aaaaa,bbbbb,ccccccccc,dddddd' For bucle:=0 to SeparaCount(Texto,',') do ShowMessage(Separa(Texto,',',bucle) ); Saludos. |
|
#3
|
|||
|
|||
|
Amigo roman necesito de tu ayuda, estoy utilizando el codigo que me diste lo adapte a mis necesidades pero me da un error que espero tu me puedas ayudar
Code: ______________________________________________________________ procedure TForm1.Button1Click(Sender: TObject); Var ArchivoCsv, Campos: TStringList; I, J: Integer; begin ArchivoCsv := TStringList.Create; Campos := TStringList.Create; try ArchivoCsv.LoadFromFile('c:\HV.txt'); for I := 0 to ArchivoCsv.Count -1 do begin Campos.Clear; Campos.CommaText := ArchivoCsv[i]; for J := 0 to DataModule2.Table1.FieldCount -1 do begin DataModule2.Table1.Locate('Ficha',Campos[0],[]); DataModule2.Table1.Edit; DataModule2.Table1.Fields[1].Value := Campos[1]; DataModule2.Table1.Fields[2].Value := Campos[2]; DataModule2.Table1.Post; end; end; finally ArchivoCsv.Free; Campos.Free; end; end; _________________________________________________________ cuando corro el procedimiento me da este error "List index of bound (3)" como hago para que no mede este error. Ayuda ![]()
__________________
____________________________ Un saludo a todos... |
|
#4
|
|||
|
|||
|
Buenos dias amigos tengo un pequeño problema estoy utilizando el codigo que me dio el amigo Roman que me a servido de mucha ayuda pero me da un error cuando corro el procedimiento me da este error "List index of bound (0)", que debo hacer para que no me siga dando este error. Agradesco la ayuda amigos.
El codigo que utilizo es el siguente ____________________________________________________________ procedure TForm1.Button1Click(Sender: TObject); Var ArchivoCsv, Campos: TStringList; I, J: Integer; begin ArchivoCsv := TStringList.Create; Campos := TStringList.Create; try ArchivoCsv.LoadFromFile('c:\HV.txt'); for I := 0 to ArchivoCsv.Count -1 do begin Campos.Clear; Campos.CommaText := ArchivoCsv[i]; for J := 0 to DataModule2.Table1.FieldCount -1 do begin DataModule2.Table1.Locate('Ficha',Campos[0],[]); DataModule2.Table1.Edit; DataModule2.Table1.Fields[1].Value := Campos[1]; DataModule2.Table1.Fields[2].Value := Campos[2]; DataModule2.Table1.Post; end; end; finally ArchivoCsv.Free; Campos.Free; end; end; _______________________________________________________ Que hago para corregirlo.????
__________________
____________________________ Un saludo a todos... |
|
#5
|
||||
|
||||
|
Supongo que el error te lo marca en la línea
DataModule2.Table1.Locate('Ficha',Campos[0],[]); y diera la impresión de que la lista Campos está vacía. Revisa el formato del archivo de texto pues es posible que tenga algunas líneas en blanco. // Saludos |
|
#6
|
|||
|
|||
|
Gracias Roman por ayudarme tienes razon la ultima fila del TXT estaba en blanco y me daba ese error, este es el codigo que utilizo para realizar una busqueda de un campo que se encuentra en el txt y es buscado en una tabla e insertando los campos separados por coma en la misma tabla;
Code: _______________________________________________________________ procedure TForm1.BitBtn3Click(Sender: TObject); Var ArchivoCsv, Campos: TStringList; I, J: Integer; begin ArchivoCsv := TStringList.Create; Campos := TStringList.Create; try ArchivoCsv.LoadFromFile('c:\HV.txt'); for I := 0 to ArchivoCsv.Count -1 do begin Campos.Clear; Campos.CommaText := ArchivoCsv[i]; If DataModule2.Table1.Locate('Ficha',Campos[0],[locaseinsensitive,lopartialkey])then begin DataModule2.Table1.Edit; DataModule2.Table1.Fields[1].Value := Campos[1]; DataModule2.Table1.Fields[2].Value := Campos[2]; DataModule2.Table1.Post; end; end; finally ArchivoCsv.Free; Campos.Free; end; end; _______________________________________________________ Gracia a todos; ![]()
__________________
____________________________ Un saludo a todos... |
|
#7
|
||||
|
||||
|
Buenos días...... tengo que hacer algo muy parecido a lo de danytorres, por lo que me pareció innecesario comenzar un nuevo hilo.....
También tengo que pasar a una tabla datos de un TXT, y puse en práctica la técnica de separar los campos aquí explicada, pero tengo un problemita... Supongamos que tengo esta línea: P304 004/02500002/60/ 00000000364AAAA0000001LOMO ARCHIV. MANT.MIL. Yo digo que pase campos[3] al campo descripción de mi tabla, y lo pasa bien. Pero en el caso de esta otra línea... P304 N/ 017125/3 / 00000000074AAAA0000010FUSIBLE Como hay espacios en el 2do campo, la descripción ya no es campos[3]; por lo que pasa "/".... lo que sí se es que, con espacio o sin espacio, cada campo está en la misma posición dentro de la línea. Mi pregunta es: como hago para expresar "de la posición 48 a la 73 es el campo descripción, haya espacios o no"? Muchas gracias desde ya, espero haberme explicado bien. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|