
leer un archivo de texto delimitado por | e insertar en una tabla en sql
#21
Escrito 11 julio 2013 - 09:49
access violation at adress 00404B98 in module project.exe. write of adress 00000000
#22
Escrito 11 julio 2013 - 09:51
access violation at adress 00404B98 in module project.exe. write of adress 00000000
#23
Escrito 11 julio 2013 - 11:51
begin
Close;
SQL.Add('insert into ejemplo1(idsuc,id,nombre,tel)values(:idsuc,:id,:nombre,:tel)');
ADOQuery1.Parameters.ParamByName('idsuc').Value:=Datos[0];
ADOQuery1.Parameters.ParamByName('id').Value:=Datos[1];
ADOQuery1.Parameters.ParamByName('nombre').Value:=Datos[2];
ADOQuery1.Parameters.ParamByName('tel').Value:=Datos[3];
ExecSQL;
end;
#24
Escrito 11 julio 2013 - 07:46
mensaje de error (La aplicacion utiliza un valor de tipo no valido)
begin
Close;
SQL.Add('insert into ejemplo1(idsuc,id,nombre,tel)values(:idsuc,:id,:nombre,:tel)');
ADOQuery1.Parameters.ParamByName('idsuc').Value:=Datos[0];
ADOQuery1.Parameters.ParamByName('id').Value:=Datos[1];
ADOQuery1.Parameters.ParamByName('nombre').Value:=Datos[2];
ADOQuery1.Parameters.ParamByName('tel').Value:=Datos[3];
ExecSQL;
end;
Amigo, llevo pocos días con Delphi, pero ese error (creo) es porque no le estas especificando el tipo del valor del parametro. Por ejemplo:
{ Insertar en un campo string, un string } ADOQuery1.Parameters.ParamByName('paramString').AsString := unString { Insertar en un campo integer, un integer } ADOQuery1.Parameters.ParamByName('paramInt').AsInteger:= unInteger
Ojo, nunca use Ado, he usado Interbase y dbExpress. En estos últimos es como te comento arriba.
Fijate !. Saludos.
#25
Escrito 11 julio 2013 - 08:31
1) Indicarle el tipo de dato esperado, y
2) Pasar el dato propiamente
Esto se hace como bien han indicado los compañeros:
ComponenteADOUtilizado.Paramaters.ParamByName(NombreParametro).DataType := ftXXX; ComponenteADOUtilizado.Paramaters.ParamByName(NombreParametro).Value := DatoAPasar;
Ahora bien, el error Access Violation generalmente se presenta cuando se intenta hacer uso de un objeto liberado o no instanciado. Es posible que el componente ADO sobre cual intentas hacer uso lo hayas liberado previamente.
De todas formas va a requerir un examen minucioso porque justamente el error indica que se está intentando hacer uso de una memoria no reservada, y si no es el componente ADO es posible que se trate de algún otro.
¿Que pasos o procesos realizas justo antes de ejecutar esto? Cuanto más nos puedas decir al respecto más fácil será hallar el problema real y proponerte la solución.
Saludos,
Saludos,
#26
Escrito 13 julio 2013 - 09:56
#27
Escrito 13 julio 2013 - 01:19
No estaría demás que compartieras con nosostros la solución a la que llegaste. Podría ser de utilidad para otros con igual o similares problemas.
Saludos,