PDA

Ver la Versión Completa : Error Al Eliminar Registro


webmasterplc
09-11-2012, 13:22:53
Buenas, estoy tratando de ejecutar una consulta para eliminar unos registros y me da el siguiente error

https://www.dropbox.com/s/nteegq0k1zh9g1u/error11949.jpg

el código que uso es este.

procedure TFormEliminarPago.btn1Click(Sender: TObject);
var
codigo,factura,sqleliminar1,tipo:string;
begin
codigo:='0000';
factura:='100';
tipo:='54';
sqleliminar1:= 'delete * from Scuentasxcobrar where FCC_CODIGO= :fcccodigo and FCC_TIPOTRANSACCION=:fcctipo and FCC_NUMERO2=:fccnumero2';
if messagedlg ('Usted Va a Eliminar Los Registros de Pagos Relacionados Con ' +
'esta factura. Este Procedimiento no se puede revertir, y tiene que registrar el Pago nuevamente desde cuentas por cobrar.. ¿Esta Usted Seguro?',mtconfirmation,[mbok,mbcancel],0)=mrok then
with datos.SQcxc do
begin
DatabaseName:='a2Utilitario';
SQL.Clear;
SQL.Text := sqleliminar1;
ParamByName('fcccodigo').AsString:=codigo;
ParamByName('fccnumero2').AsString:=factura;
ParamByName('fcctipo').AsString:=tipo;
Open;
end;


end;

Uso Base de Datos DBISAM

Casimiro Notevi
09-11-2012, 13:39:26
El open es para los select, debes usar execsql
Además de que te sobra el asterisco (*)

No estaría de más que echaras un vistazo a un simple tutorial de lenguaje sql.

webmasterplc
10-11-2012, 03:22:09
Ya lo revise se me habia pasado pero me da este error
https://www.dropbox.com/s/5kfxg8h6lj5ydwv/errordbisam.jpg

El open es para los select, debes usar execsql
Además de que te sobra el asterisco (*)

No estaría de más que echaras un vistazo a un simple tutorial de lenguaje sql.

webmasterplc
10-11-2012, 04:08:01
si la coloco hasta aqui correo bien
with datos.SQcxc do
begin
DatabaseName:='a2Utilitario';
SQL.Clear;
SQL.Add('DELETE FROM Scuentasxcobrar');
SQL.Add('where FCC_CODIGO=:fcccodigo');
ParamByName('fcccodigo').AsString:=codigo;
ExecSQL;
end;

Pero al agrgarle otra condicio me da el error
with datos.SQcxc do
begin
DatabaseName:='a2Utilitario';
SQL.Clear;
SQL.Add('DELETE FROM Scuentasxcobrar');
SQL.Add('where FCC_CODIGO=:fcccodigo');
SQL.Add('and FCC_TIPOTRANSACCION=:fcctipo');
ParamByName('fcccodigo').AsString:=codigo;
ParamByName('fcctipo').AsString:=tipo;
ExecSQL;
end;

ecfisa
10-11-2012, 06:22:42
Hola webmasterplc.

En el soporte técnico de la página, encontre TDBISAMParam (http://www.elevatesoft.com/manual?action=viewcomp&id=dbisam4&product=rsdelphi&version=2009&comp=TDBISAMParam), revisando el enlace AsString dice:

Use the AsString property to access or specify the current value of the parameter as a String type.
Setting the value of the parameter using the AsString method will set the DataType property to ftString.

Yo probaría cambiando la propiedad AsString por la que corresponda al tipo del campo FCC_TIPOTRANSACCION (si este fuera de un tipo diferente a ftString). Pero estoy dando palos a ciegas por que no conozco en absoluto esos componentes.

Por otro lado no pude encontrar un error significativamente semejante al que comentas usando esos componentes y tampoco hay mucho material:

View Incident Report (http://www.elevatesoft.com/incident?action=viewaddr&category=dbisam&release=4.34&incident=3626)
Support Forum (http://www.elevatesoft.com/forums?action=view&category=dbisam&id=dbisam_sql&msg=14428&page=3)

Como último recurso podés comunicarte con el Soporte Técnico (http://www.elevatesoft.com/support) via emáil o telefónica.

Saludos.

webmasterplc
10-11-2012, 13:11:36
Muchas Gracias era que le estaba pasando un String a un Integer saludos