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 21-05-2014
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 17
jafera Va por buen camino
Error al importar fichero txt

Buenas de nuevo a todos.

Al final he conseguido que delphi XE5 funcione al 100% con todos los componentes instalados.
He realizado las migraciones del antiguo código D6 ajustandolo al nuevo XE5.
Recientemente he pasado mi máquina Win XP 32 bits a W-7 64 bits.

El problema que tengo es que un proceso de importación de un archivo txt se reallizaba correctamente en el formato antiguo y ahora me lanza una excepción sin haber tocado nada del código en esta parte, no se si algun parámetro se debe ajustar a XE5, os pongo el código usado:

Código Delphi [-]
if RadioGroup1.ItemIndex = 1 then
        begin
                OpenDialog1.Filename:='';
                OpenDialog1.InitialDir:='C:\Rebuts_1.0\Fitxers\Rebuts\Capçalera';
                F_Confirmacio := TF_Confirmacio.Create(self);
                F_Confirmacio.Label1.Caption := 'Importem arxiu capçalera';
                try
                        if F_Confirmacio.ShowModal = mrok then
                        begin
                                with BorraTemp do
                                begin
                                        Close;
                                        UnPrepare;
                                        Sql.Text := 'DELETE FROM RE0006TOTALTEMP';
                                        Prepare;
                                        Open;
                                end;

                                F_ModulDades.Rebut_Total_Temp.Close;
                                F_ModulDades.Rebut_Total_Temp.Open;
                                F_ModulDades.Rebut_Total_Temp.Append;
                                F_Importa.IBSQLImporta.SQL.Text := 'Insert into RE0006TOTALTEMP values(:ID_REBUT, :ID_USUARI, ATA, :TITOL, :C_POSTAL, :CODI_CLUB, :ARBITRES, :MATERIAL, :I1, :I2, :I3, :I4, :I5, :TI1, :TI2, :TI3, :TI4, :TI5, :TOTAL_REBUT, :IMPORT, :TEXTE, :SUSPENSIO, :KM_TOTALS, :ASPIRANT'+
                                                                   ', :HORA_CONST, :HORA_SORT,:NUM_CORREDORS,:ID_ARBITRE, :ID_METGE, IR_CURSA, :CATEGORIA, :ZONA, :KM_CURSA, :TRANSP, :GRAVAT, :PREU_FIX, :IMPORT_2, :FEINER, OS_SECTORS, :CAMPIONAT, :I10, :CODI_BARRES, :CREA_REBUT, :BICIXIPS, :TI6, :NUM_FIX'+
                                                                   ', :PAGAT, :EXTRES, :REPART, :PAGADOR)';
                                F := TIBInputDelimitedFile.Create;
                                try
                                        F.ColDelimiter := ';';
                                        if OpenDialog1.Execute then
                                        begin
                                                F.Filename := OpenDialog1.FileName;
                                        end;
                                        F_Importa.IBSQLImporta.BatchInput(F);  //aqui es donde se para y da el mensaje de error.
                                finally
                                        F.Free;
                                end;

                                F_ModulDades.Rebut_Total.Close;
                                F_ModulDades.Rebut_Total.Open;
                                F_ModulDades.Rebut_Total_Temp.Close;
                                F_ModulDades.Rebut_Total_Temp.Open;
                                F_ModulDades.Rebut_Total_Temp.First;
                                while not F_ModulDades.Rebut_Total_Temp.Eof do
                                begin
                                        if F_ModulDades.Rebut_Total.Locate('ID_REBUT; ID_USUARI; DATA', VarArrayof([F_ModulDades.Rebut_Total_TempID_REBUT.Value, F_ModulDades.Rebut_Total_TempID_USUARI.Value, F_ModulDades.Rebut_Total_TempDATA.Value]), []) then
                                        begin
                                                F_ModulDades.Rebut_Total.Edit;
                                                F_ModulDades.Rebut_TotalID_REBUT.Value := F_ModulDades.Rebut_Total_TempID_REBUT.Value;
                                                F_ModulDades.Rebut_TotalID_USUARI.Value := F_ModulDades.Rebut_Total_TempID_USUARI.Value;
                                                F_ModulDades.Rebut_TotalDATA.Value := F_ModulDades.Rebut_Total_TempDATA.Value;
                                                F_ModulDades.Rebut_TotalTITOL.Value := F_ModulDades.Rebut_Total_TempTITOL.Value;
                                                F_ModulDades.Rebut_TotalC_POSTAL.Value := F_ModulDades.Rebut_Total_TempC_POSTAL.Value;
                                                F_ModulDades.Rebut_TotalCODI_CLUB.Value := F_ModulDades.Rebut_Total_TempCODI_CLUB.Value;
                                                F_ModulDades.Rebut_TotalARBITRES.Value := F_ModulDades.Rebut_Total_TempARBITRES.Value;
                                                F_ModulDades.Rebut_TotalMATERIAL.Value := F_ModulDades.Rebut_Total_TempMATERIAL.Value;
                                                F_ModulDades.Rebut_TotalI1.Value := F_ModulDades.Rebut_Total_TempI1.Value;
                                                F_ModulDades.Rebut_TotalI2.Value := F_ModulDades.Rebut_Total_TempI2.Value;
                                                F_ModulDades.Rebut_TotalI3.Value := F_ModulDades.Rebut_Total_TempI3.Value;
                                                F_ModulDades.Rebut_TotalI4.Value := F_ModulDades.Rebut_Total_TempI4.Value;
                                                F_ModulDades.Rebut_TotalI5.Value := F_ModulDades.Rebut_Total_TempI5.Value;
                                                F_ModulDades.Rebut_TotalTI1.Value := F_ModulDades.Rebut_Total_TempTI1.Value;
                                                F_ModulDades.Rebut_TotalTI2.Value := F_ModulDades.Rebut_Total_TempTI2.Value;
                                                F_ModulDades.Rebut_TotalTI3.Value := F_ModulDades.Rebut_Total_TempTI3.Value;
                                                F_ModulDades.Rebut_TotalTI4.Value := F_ModulDades.Rebut_Total_TempTI4.Value;
                                                F_ModulDades.Rebut_TotalTI5.Value := F_ModulDades.Rebut_Total_TempTI5.Value;
                                                F_ModulDades.Rebut_TotalTOTAL_REBUT.Value := F_ModulDades.Rebut_Total_TempTOTAL_REBUT.Value;
                                                F_ModulDades.Rebut_TotalIMPORT.Value := F_ModulDades.Rebut_Total_TempIMPORT.Value;
                                                F_ModulDades.Rebut_TotalTEXTE.Value := F_ModulDades.Rebut_Total_TempTEXTE.Value;
                                                F_ModulDades.Rebut_TotalSUSPENSIO.Value := F_ModulDades.Rebut_Total_TempSUSPENSIO.Value;
                                                F_ModulDades.Rebut_TotalKM_TOTALS.Value := F_ModulDades.Rebut_Total_TempKM_TOTALS.Value;
                                                F_ModulDades.Rebut_TotalASPIRANT.Value := F_ModulDades.Rebut_Total_TempASPIRANT.Value;
                                                F_ModulDades.Rebut_TotalHORA_CONS.Value := F_ModulDades.Rebut_Total_TempHORA_CONS.Value;
                                                F_ModulDades.Rebut_TotalHORA_SORT.Value := F_ModulDades.Rebut_Total_TempHORA_SORT.Value;
                                                F_ModulDades.Rebut_TotalNUM_CORREDORS.Value := F_ModulDades.Rebut_Total_TempNUM_CORREDORS.Value;
                                                F_ModulDades.Rebut_TotalID_ARBITRE.Value := F_ModulDades.Rebut_Total_TempID_ARBITRE.Value;
                                                F_ModulDades.Rebut_TotalID_METGE.Value := F_ModulDades.Rebut_Total_TempID_METGE.Value;
                                                F_ModulDades.Rebut_TotalDIR_CURSA.Value := F_ModulDades.Rebut_Total_TempDIR_CURSA.Value;
                                                F_ModulDades.Rebut_TotalCATEGORIA.Value := F_ModulDades.Rebut_Total_TempCATEGORIA.Value;
                                                F_ModulDades.Rebut_TotalZONA.Value := F_ModulDades.Rebut_Total_TempZONA.Value;
                                                F_ModulDades.Rebut_TotalKM_CURSA.Value := F_ModulDades.Rebut_Total_TempKM_CURSA.Value;
                                                F_ModulDades.Rebut_TotalTRANSP.Value := F_ModulDades.Rebut_Total_TempTRANSP.Value;
                                                F_ModulDades.Rebut_TotalGRAVAT.Value := F_ModulDades.Rebut_Total_TempGRAVAT.Value;
                                                F_ModulDades.Rebut_TotalPREU_FIX.Value := F_ModulDades.Rebut_Total_TempPREU_FIX.Value;
                                                F_ModulDades.Rebut_TotalIMPORT_2.Value := F_ModulDades.Rebut_Total_TempIMPORT_2.Value;
                                                F_ModulDades.Rebut_TotalFEINER.Value := F_ModulDades.Rebut_Total_TempFEINER.Value;
                                                F_ModulDades.Rebut_TotalDOS_SECTORS.Value := F_ModulDades.Rebut_Total_TempDOS_SECTORS.Value;
                                                F_ModulDades.Rebut_TotalCAMPIONAT.Value := F_ModulDades.Rebut_Total_TempCAMPIONAT.Value;
                                                F_ModulDades.Rebut_TotalI10.Value := F_ModulDades.Rebut_Total_TempI10.Value;
                                                F_ModulDades.Rebut_TotalCODI_BARRES.Value := F_ModulDades.Rebut_Total_TempCODI_BARRES.Value;
                                                F_ModulDades.Rebut_TotalCREA_REBUT.Value := F_ModulDades.Rebut_Total_TempCREA_REBUT.Value;
                                                F_ModulDades.Rebut_TotalBICIXIPS.Value := F_ModulDades.Rebut_Total_TempBICIXIPS.Value;
                                                F_ModulDades.Rebut_TotalTI6.Value := F_ModulDades.Rebut_Total_TempTI6.Value;
                                                F_ModulDades.Rebut_TotalNUM_FIX.Value := F_ModulDades.Rebut_Total_TempNUM_FIX.Value;
                                                F_ModulDades.Rebut_TotalPAGAT.Value := F_ModulDades.Rebut_Total_TempPAGAT.Value;
                                                F_ModulDades.Rebut_TotalEXTRES.Value := F_ModulDades.Rebut_Total_TempEXTRES.Value;
                                                F_ModulDades.Rebut_TotalREPART.Value := F_ModulDades.Rebut_Total_TempREPART.Value;
                                                F_ModulDades.Rebut_TotalPAGADOR.Value := F_ModulDades.Rebut_Total_TempPAGADOR.Value;
                                                F_ModulDades.Rebut_Total.Post;
                                                F_ModulDades.Rebut_Total_Temp.Next;
                                        end
                                        else
                                        begin
                                                F_ModulDades.Rebut_Total.Last;
                                                i := F_ModulDades.Rebut_TotalID.Value + 1;
                                                F_ModulDades.Rebut_Total.Append;
                                                F_ModulDades.Rebut_TotalID.Value := i;
                                                F_ModulDades.Rebut_TotalID_REBUT.Value := F_ModulDades.Rebut_Total_TempID_REBUT.Value;
                                                F_ModulDades.Rebut_TotalID_USUARI.Value := F_ModulDades.Rebut_Total_TempID_USUARI.Value;
                                                F_ModulDades.Rebut_TotalDATA.Value := F_ModulDades.Rebut_Total_TempDATA.Value;
                                                F_ModulDades.Rebut_TotalTITOL.Value := F_ModulDades.Rebut_Total_TempTITOL.Value;
                                                F_ModulDades.Rebut_TotalC_POSTAL.Value := F_ModulDades.Rebut_Total_TempC_POSTAL.Value;
                                                F_ModulDades.Rebut_TotalCODI_CLUB.Value := F_ModulDades.Rebut_Total_TempCODI_CLUB.Value;
                                                F_ModulDades.Rebut_TotalARBITRES.Value := F_ModulDades.Rebut_Total_TempARBITRES.Value;
                                                F_ModulDades.Rebut_TotalMATERIAL.Value := F_ModulDades.Rebut_Total_TempMATERIAL.Value;
                                                F_ModulDades.Rebut_TotalI1.Value := F_ModulDades.Rebut_Total_TempI1.Value;
                                                F_ModulDades.Rebut_TotalI2.Value := F_ModulDades.Rebut_Total_TempI2.Value;
                                                F_ModulDades.Rebut_TotalI3.Value := F_ModulDades.Rebut_Total_TempI3.Value;
                                                F_ModulDades.Rebut_TotalI4.Value := F_ModulDades.Rebut_Total_TempI4.Value;
                                                F_ModulDades.Rebut_TotalI5.Value := F_ModulDades.Rebut_Total_TempI5.Value;
                                                F_ModulDades.Rebut_TotalTI1.Value := F_ModulDades.Rebut_Total_TempTI1.Value;
                                                F_ModulDades.Rebut_TotalTI2.Value := F_ModulDades.Rebut_Total_TempTI2.Value;
                                                F_ModulDades.Rebut_TotalTI3.Value := F_ModulDades.Rebut_Total_TempTI3.Value;
                                                F_ModulDades.Rebut_TotalTI4.Value := F_ModulDades.Rebut_Total_TempTI4.Value;
                                                F_ModulDades.Rebut_TotalTI5.Value := F_ModulDades.Rebut_Total_TempTI5.Value;
                                                F_ModulDades.Rebut_TotalTOTAL_REBUT.Value := F_ModulDades.Rebut_Total_TempTOTAL_REBUT.Value;
                                                F_ModulDades.Rebut_TotalIMPORT.Value := F_ModulDades.Rebut_Total_TempIMPORT.Value;
                                                F_ModulDades.Rebut_TotalTEXTE.Value := F_ModulDades.Rebut_Total_TempTEXTE.Value;
                                                F_ModulDades.Rebut_TotalSUSPENSIO.Value := F_ModulDades.Rebut_Total_TempSUSPENSIO.Value;
                                                F_ModulDades.Rebut_TotalKM_TOTALS.Value := F_ModulDades.Rebut_Total_TempKM_TOTALS.Value;
                                                F_ModulDades.Rebut_TotalASPIRANT.Value := F_ModulDades.Rebut_Total_TempASPIRANT.Value;
                                                F_ModulDades.Rebut_TotalHORA_CONS.Value := F_ModulDades.Rebut_Total_TempHORA_CONS.Value;
                                                F_ModulDades.Rebut_TotalHORA_SORT.Value := F_ModulDades.Rebut_Total_TempHORA_SORT.Value;
                                                F_ModulDades.Rebut_TotalNUM_CORREDORS.Value := F_ModulDades.Rebut_Total_TempNUM_CORREDORS.Value;
                                                F_ModulDades.Rebut_TotalID_ARBITRE.Value := F_ModulDades.Rebut_Total_TempID_ARBITRE.Value;
                                                F_ModulDades.Rebut_TotalID_METGE.Value := F_ModulDades.Rebut_Total_TempID_METGE.Value;
                                                F_ModulDades.Rebut_TotalDIR_CURSA.Value := F_ModulDades.Rebut_Total_TempDIR_CURSA.Value;
                                                F_ModulDades.Rebut_TotalCATEGORIA.Value := F_ModulDades.Rebut_Total_TempCATEGORIA.Value;
                                                F_ModulDades.Rebut_TotalZONA.Value := F_ModulDades.Rebut_Total_TempZONA.Value;
                                                F_ModulDades.Rebut_TotalKM_CURSA.Value := F_ModulDades.Rebut_Total_TempKM_CURSA.Value;
                                                F_ModulDades.Rebut_TotalTRANSP.Value := F_ModulDades.Rebut_Total_TempTRANSP.Value;
                                                F_ModulDades.Rebut_TotalGRAVAT.Value := F_ModulDades.Rebut_Total_TempGRAVAT.Value;
                                                F_ModulDades.Rebut_TotalPREU_FIX.Value := F_ModulDades.Rebut_Total_TempPREU_FIX.Value;
                                                F_ModulDades.Rebut_TotalIMPORT_2.Value := F_ModulDades.Rebut_Total_TempIMPORT_2.Value;
                                                F_ModulDades.Rebut_TotalFEINER.Value := F_ModulDades.Rebut_Total_TempFEINER.Value;
                                                F_ModulDades.Rebut_TotalDOS_SECTORS.Value := F_ModulDades.Rebut_Total_TempDOS_SECTORS.Value;
                                                F_ModulDades.Rebut_TotalCAMPIONAT.Value := F_ModulDades.Rebut_Total_TempCAMPIONAT.Value;
                                                F_ModulDades.Rebut_TotalI10.Value := F_ModulDades.Rebut_Total_TempI10.Value;
                                                F_ModulDades.Rebut_TotalCODI_BARRES.Value := F_ModulDades.Rebut_Total_TempCODI_BARRES.Value;
                                                F_ModulDades.Rebut_TotalCREA_REBUT.Value := F_ModulDades.Rebut_Total_TempCREA_REBUT.Value;
                                                F_ModulDades.Rebut_TotalBICIXIPS.Value := F_ModulDades.Rebut_Total_TempBICIXIPS.Value;
                                                F_ModulDades.Rebut_TotalTI6.Value := F_ModulDades.Rebut_Total_TempTI6.Value;
                                                F_ModulDades.Rebut_TotalNUM_FIX.Value := F_ModulDades.Rebut_Total_TempNUM_FIX.Value;
                                                F_ModulDades.Rebut_TotalPAGAT.Value := F_ModulDades.Rebut_Total_TempPAGAT.Value;
                                                F_ModulDades.Rebut_TotalEXTRES.Value := F_ModulDades.Rebut_Total_TempEXTRES.Value;
                                                F_ModulDades.Rebut_TotalREPART.Value := F_ModulDades.Rebut_Total_TempREPART.Value;
                                                F_ModulDades.Rebut_TotalPAGADOR.Value := F_ModulDades.Rebut_Total_TempPAGADOR.Value;
                                                F_ModulDades.Rebut_Total.Post;
                                                F_ModulDades.Rebut_Total_Temp.Next;
                                        end;
                                end;

                                Showmessage('Fitxer Importat');
                        end
                        else
                        begin
                                ShowMessage('Fitxer NO importat');
                        end;
                finally
                        with BorraTemp do
                        begin
                                Close;
                                UnPrepare;
                                Sql.Text := 'DELETE FROM RE0006TOTALTEMP';
                                Prepare;
                                Open;
                        end;
                        F_Confirmacio.Free;
                end;

y este es el mensaje de error que se produce:

First chance exception at $75CEC42D. Exception class EIBInterBaseError with message
'Dynamic SQL Error
SQL error code = -303
arithmetic exception, numeric overflow, or string truncation'.
Process Rebuts.exe (1932)

Si alguien tiene alguna idea del porque me puede pasar pues será muy bienvenida su respuesta.

Saludos

Josep
Responder Con Cita
  #2  
Antiguo 21-05-2014
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 19
olbeup Va camino a la fama
Hola Jafera

El dato que esta cogiendo del fichero de texto no es un número o el número es demasiado grande, mira a ver en que línea se queda y comprueba el valor.

Un saludo.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.
Responder Con Cita
  #3  
Antiguo 21-05-2014
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 17
jafera Va por buen camino
Gracias por la respuesta.

He mirado el fichero txt generado asi como la estructura de la tabla de destino y cuadra todo.

No se como hacer para ver el resultado de la linea

Código Delphi [-]
F_Importa.IBSQLImporta.BatchInput(F);
que es la que me da el error, se debe hacer con un Add Watch?

No se estoy un poco (mucho) desorientado ya que este proceso lleva tiempo funcionando correctamente.

Saludos

Josep
Responder Con Cita
  #4  
Antiguo 21-05-2014
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
El error este se da también cuando el string que quieres importar es demasiado largo para el campo donde debe entrar.
Aparentemente tienes un archivo separado por el caracter ";"
Prueba primero importar una sola línea.
Si no funciona, seguramente hay un problema en el fichero y no reconoce bien el "corte" de cada columna

Si es funciona, prueba a importar 2 líneas.
Si no funciona, puede ser que no reconozca los saltos de línea.

Si funciona, has una búsqueda dicotómica en el fichero
- divide al medio el fichero
- importalo
- Si no hay error, el error se encuentra en la otra mitad. Si hay error está en la primera mitad.
- Vuelve a hacer la búsqueda con la mitad que falla.
Responder Con Cita
  #5  
Antiguo 21-05-2014
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 17
jafera Va por buen camino
Gracias por la respuesta.

He importado linea a linea y no me da ningun error.
Puede ser esto que comentas que no reconozca el salto de linea?
Si es así como puedo hacer que me reconozca el salto, en D6 no daba ningún error y funciono durante mucho tiempo hasta que he realizado la migración a XE5

Saludos

Josep

Edito: He probado otro proceso que tambien importa otro txt y me da el mismo error, ahora si que creo que no reconoce el salto de linea.

Última edición por jafera fecha: 21-05-2014 a las 15:46:09. Razón: Realizada comprobacion
Responder Con Cita
  #6  
Antiguo 21-05-2014
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Si no me equivoco, este componente también tiene un atributo "RowDelimiter".
Este sería el delimitador de siguiente línea
Mira qué es lo que tiene y modifícalo para que sea #13 o #13#10 por ejemplo.
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
DELPHI6 Importar fichero codificado UTF-8 a Dbase Jose Manuel Varios 0 16-05-2011 18:46:14
Importar fichero XML cincosoft OOP 1 08-02-2009 10:29:58
Importar fichero .dat desde cobol julian_ch Varios 0 08-08-2005 17:43:17
Error al importar dll mguixot Varios 2 08-07-2005 15:47:26
importar fichero consumo telefonica tonid Varios 3 11-09-2003 09:49:28


La franja horaria es GMT +2. Ahora son las 06:36:30.


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