![]() |
![]() |
| 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
|
|||
|
|||
|
Solución
Cita:
Código:
function TForm1.insertarRegistrosEnTAP2_CDRs(SRuta: String; id_archivo: integer; OraConn:TADOConnection): integer;
var
Arch: TextFile;
rsResultCDRs:TADOQuery;
ArchivoEntero, insertCDR, Registro, Campo1, Campo2, Campo3, Campo4, Campo5, Campo6, Campo7, Campo8, Campo9, Campo10, Campo11, Campo12, Campo13, Campo14, Campo15,
Campo16, Campo17, Campo18, Campo19, Campo20, Campo21, Campo22, Campo23, Campo24, Campo25, Campo26, Campo27, Campo28, Campo29, Campo30,
Campo31, Campo32: String;
i,cnt: integer;
Seguir: Boolean;
begin
cnt := 0;
Campo1 := '0';
AssignFile(Arch,SRuta);
Reset(Arch);
i := 1;
readln(Arch,ArchivoEntero);
Seguir := True;
while Seguir do
begin
Registro := Copy(ArchivoEntero,i,160);
Campo1 := Copy(Registro,1,2);
if (Campo1 = '90') then
Seguir := False
else
begin
if ((Campo1 = '20') or (Campo1 = '30') or (Campo1 = '40')) then
begin
rsResultCDRs:=TADOQuery.Create(nil);
rsResultCDRs.Connection:=OraConn;
Campo2 := Copy(Registro,3,6);
if Campo2 = '' then
Campo2 := '''';
Campo3 := Copy(Registro,9,1);
if Campo3 = '' then
Campo3 := '''';
Campo4 := Copy(Registro,10,15);
if Campo4 = '' then
Campo4 := '''';
Campo5 := Copy(Registro,25,16);
if Campo5 = '' then
Campo5 := '''';
Campo6 := Copy(Registro,41,1);
if Campo6 = '' then
Campo6 := '''';
Campo7 := Copy(Registro,42,1);
if Campo7 = '' then
Campo7 := '''';
Campo8 := Copy(Registro,43,1);
if Campo8 = '' then
Campo8 := '''';
Campo9 := Copy(Registro,44,21);
if Campo9 = '' then
Campo9 := '''';
Campo10 := Copy(Registro,65,1);
if Campo10 = '' then
Campo10 := '''';
Campo11 := Copy(Registro,66,2);
if Campo11 = '' then
Campo11 := '''';
Campo12 := Copy(Registro,68,1);
if Campo12 = '' then
Campo12 := '''';
Campo13 := Copy(Registro,69,2);
if Campo13 = '' then
Campo13 := '''';
Campo14 := Copy(Registro,71,1);
if Campo14 = '' then
Campo14 := '''';
Campo15 := Copy(Registro,72,1);
if Campo15 = '' then
Campo15 := '''';
Campo16 := Copy(Registro,73,1);
if Campo16 = '' then
Campo16 := '''';
Campo17 := Copy(Registro,74,15);
if Campo17 = '' then
Campo17 := '''';
Campo18 := Copy(Registro,89,15);
if Campo18 = '' then
Campo18 := '''';
Campo19 := Copy(Registro,104,5);
if Campo19 = '' then
Campo19 := '''';
Campo20 := Copy(Registro,109,5);
if Campo20 = '' then
Campo20 := '''';
Campo21 := Copy(Registro,114,1);
if Campo21 = '' then
Campo21 := '''';
Campo22 := Copy(Registro,115,6);
if Campo22 = '' then
Campo22 := '''';
Campo23 := Copy(Registro,121,6);
if Campo23 = '' then
Campo23 := '''';
Campo24 := Copy(Registro,127,1);
if Campo24 = '' then
Campo24 := '''';
Campo25 := Copy(Registro,128,6);
if Campo25 = '' then
Campo25 := '''';
Campo26 := Copy(Registro,134,6);
if Campo26 = '' then
Campo26 := '''';
Campo27 := Copy(Registro,140,9);
if Campo27 = '' then
Campo27 := '''';
Campo28 := Copy(Registro,149,1);
if Campo28 = '' then
Campo28 := '''';
Campo29 := Copy(Registro,150,1);
if Campo29 = '' then
Campo29 := '''';
Campo30 := Copy(Registro,151,1);
if Campo30 = '' then
Campo30 := '''';
Campo31 := Copy(Registro,152,6);
if Campo31 = '' then
Campo31 := '''';
Campo32 := Copy(Registro,158,13);
if Campo32 = '' then
Campo32 := '''';
cnt := cnt + 1;
lblestado.Caption:='Estado: Insertando registro detalle ' + intToStr(cnt) + ' en TAP2_CDRS';
lblestado.Refresh;
insertCDR := 'insert into TAP2_CDRS values(seq_tap2_cdrs.nextval,'+intToStr(id_archivo)+',sysdate,'''','+Campo1+','''+Campo2+''','''+Campo3+''','''+Campo4+''','''+Campo5+''','''+Campo6+''','''+Campo7+''','''+Campo8+''','''+Campo9+''','''+Campo10+''','''+Campo11+''','''+Campo12+''','''+Campo13+''','''+Campo14+''','''+Campo15+''','''+Campo16+''','''+Campo17+''','''+Campo18+''','+Campo19+','+Campo20+','+Campo21+','''+Campo22+''','''+Campo23+''','''+Campo24+''','+Campo25+','+Campo26+','+Campo27+','''+Campo28+''','+Campo29+','''+Campo30+''','''+Campo31+''','''+Campo32+''')';
rsResultCDRs.SQL.Add(insertCDR);
rsResultCDRs.ExecSQL;
rsResultCDRs.Close;
rsResultCDRs.Destroy;
end;
end;
i := i + 160;
end;
CloseFile(Arch);
Result := cnt;
end;
|
|
#2
|
|||
|
|||
|
Insertar campos de longitud variable
Hola a todos, me ha servido mucho este hilo, solo que mis campos no son de longitud fija y estan separados por espacio, en este caso como los puedo ir insertando en la base de datos.
Se me ocurrio ir leyendo por palabra e irlo insertando, puedo hacer un ciclo con el pos hasta que encuentre un espacio?? ![]() |
|
#3
|
||||
|
||||
|
claro!
En ocasiones he hecho algo como esto:
Quizás compile y quizás funcione... lo he escrito acá mismo, pues no tengo delphi a mano ahora, pero espero te de una idea. Hasta luego. ![]()
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
|
#4
|
|||
|
|||
|
Hola, gracias por responder ya lo probe y me marca un error en la parte de
Campo1 := ExtraeSiguientePalabra(Linea); El error es Too Many actual parameters. Disculpa la ignorancia pero soy novata. ![]() |
|
#5
|
||||
|
||||
|
No tengo delphi a mano... pero ¡no puede ser! ¿estas segura de eso?
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
|
#6
|
|||
|
|||
|
Si, ese es el error que me marca.
Este es el código tal cual lo puse, aun no he hecho la parte de insertarlo en la bd. unit funcion; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); function ExtraeSiguientePalabra: string; private { Private declarations } public { Public declarations } end; var Form1: TForm1; Lineas: TStringList; Linea, Campo1, Campo2: string; I:integer; implementation {$R *.DFM} function ExtraeSiguientePalabra(var S: string): string; begin if pos(' ', S) <> 0 then begin Result := copy(S, 1, pos(' ', S) -1); Delete(S, 1, length(Result) + 1); //si cabe la posibilidad que haya mas de un espacio separando: S := Trim(S); end else begin Result := S; S := ''; end; end; procedure TForm1.Button1Click(Sender: TObject); begin Lineas := TStringList.Create; try Lineas.LoadFromFile('c:\pruebaleer.txt'); for I:= 0 to Lineas.Count - 1 do begin Linea := Lineas[i]; Campo1 := ExtraeSiguientePalabra(Linea); Campo2 := ExtraeSiguientePalabra(Linea); //HacerAlgoConLosCampos(Campo1, Campo2); end; finally Lineas.Free; end; end; end. Gracias ![]() |
|
#7
|
|||
|
|||
|
Otra opción
![]()
Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney Última edición por egostar fecha: 23-01-2008 a las 01:09:02. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| como leer n caracteres de un archivo | manolop | Varios | 6 | 18-12-2007 22:50:06 |
| Saber cantidad de lineas que se van a leer de un fichero texto... | Lester | Varios | 4 | 04-04-2007 17:57:02 |
| Select y cantidad de caracteres | Walterdf | SQL | 8 | 28-07-2006 13:21:48 |
| mostrar el cantidad maxima de caracteres en un memo | Choclito | Varios | 1 | 03-05-2006 18:10:28 |
| Cantidad de caracteres en un edit | botones67 | Varios | 4 | 09-07-2003 11:55:54 |
|