Un saludo para todos.
Al insertar datos en una tabla con sql y parámetros me da el error :'Assertion failure (c:\user\code\....\firebird.sql.pas, line 1004)'.
Lo que hago es :
1.-leer un fichero de texto plano con separador de campos('|').
2.-Separar cada campo para asignárselo a cada parámetro
3.- Insertarlo en la base de datos.
Código Delphi
[-]
Readln(f,slinea);
SQLInsertar.Close;
SQLInsertar.SQL.Clear;
SQLInsertar.SQL.Text := 'INSERT INTO AGENTES (AGENTE,NOM_AGENTE,DIR_AGENTE,POB_AGENTE,' +
'CPOS_AGENTE,TELEFONO1,FAX,PROVIN,OBSERVACIONES,POR_RETE,POR_COMIS, ' +
'CTA_SUPLIDOS,CTA_CLIENTE)' +
' VALUES (:IAGENTE,:INOM_AGENTE,:IDIR_AGENTE,:IPOB_AGENTE, ' +
':ICPOS_AGENTE,:ITELEFONO1,:IFAX,:IPROVIN,:IOBSERVAC,:IPOR_RETE,:IPOR_COMIS, ' +
':ICTA_SUPLIDOS,:ICTA_CLIENTE)';
SQLInsertar.ParamByName('IAGENTE').AsInteger := StrToInt(GetToken(slinea,'|',1));
SQLInsertar.ParamByName('INOM_AGENTE').AsString := StringReplace(getToken(slinea,'|',2),',',' ',[rfReplaceAll]);
SQLInsertar.ParamByName('IDIR_AGENTE').AsString := StringReplace(getToken(slinea,'|',3),',',' ',[rfReplaceAll]);
SQLInsertar.ParamByName('IPOB_AGENTE').AsString := StringReplace(getToken(slinea,'|',4),',',' ',[rfReplaceAll]);
SQLInsertar.ParamByName('ICPOS_AGENTE').AsInteger := StrToInt(getToken(slinea,'|',5));
SQLInsertar.ParamByName('ITELEFONO1').AsString := getToken(slinea,'|',6);
SQLInsertar.ParamByName('IFAX').AsString := getToken(slinea,'|',7);
SQLInsertar.ParamByName('IPROVIN').AsInteger := StrToInt(getToken(slinea,'|',8));
SQLInsertar.ParamByName('IOBSERVAC').AsString := getToken(slinea,'|',9);
SQLInsertar.ParamByName('IPOR_RETE').AsFloat := StrToFloat(getToken(slinea,'|',10));
SQLInsertar.ParamByName('IPOR_COMIS').AsFloat := StrToFloat(getToken(slinea,'|',11));
SQLInsertar.ParamByName('ICTA_SUPLIDOS').AsString := getToken(slinea,'|',12);
SQLInsertar.ParamByName('ICTA_CLIENTE').AsString := getToken(slinea,'|',13);
SQLInsertar.ExecSQL;
SQLInsertar.Close;
El error lo da al ejecutar la linea :SQLInserta.ExecSQL.
El tipo de parámetro (asinteger,..) es correcto( es decir coincide con el tipo de campo de la BD) y la separación de campos también lo hace bien.
GetToken es una función para separar campos.
Utilizo Dephi XE7 y Firebird 2.5 con Windows 10
Alguna idea?
Gracias por vuestro tiempo