PDA

Ver la Versión Completa : Modificar & borrar desde delphi


learning_delphi
28-09-2011, 05:26:50
Buen dia a todos, tengo una aplicacion hecha con delpi conectada con firebird,
por medio de una tabla creada en IBexpert.

Tengo un grid en el cual m muestra los campos en 2 DBedit,
el problema es q no se como ingresar el codigo y en donde para poder modificar los datos q registro en mi base de datos . Este es el codigo q uso, pero no m funciona. AYUDA PLS! gracias ^^ .salu2.

begin
form1.q1.Close;
form1.q1.SQL.text:='UPDATE ZONAS SET NOMZONA=:p1 where ZONA=:p2)';
form1.q1.ParamByName('p1').asString:=form3.DBedit2;
form1.q1.ParamByName('p2').aSSmallInt:=form3.DBedit1;
form1.q1.execsql;
showmessage('¡modificacion realizada!');
form1.DB1.Connected:=false;
form1.T1.Active:=true;
end;
end.

ecfisa
28-09-2011, 06:30:45
Hola learning_delphi y bienvenido a los foros de Club Delphi. :)

Como es costumbre con los recién llegados, te invito a que leas la Guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php) (si no lo has echo ya ;) ).
Encerré tu código Delphi entre las etiquetas , notarás que le dá mucha más legibilidad. El uso de las mismas lo encontrás aquí (http://www.clubdelphi.com/foros/showthread.php?t=10004).

En cuanto a tu problema, creo que está en las líneas donde asignas el contenido a los parámetros:

form1.q1.ParamByName('p1').asString:=form3.DBedit2;
form1.q1.ParamByName('p2').aSSmallInt:=form3.DBedit1;

Ya que parece que tu intención es enviár el contenido de los DBEdit's como valores de los parámetros, deberías especificar la propiedad Text de los mismos, es decir algo así:

with Form1.q1 do
begin
Close;
SQL.Text:= 'UPDATE ZONAS SET NOMZONA = :P1 WHERE ZONA = :P2';
ParamByName('P1').AsString:= Form3.DBEdit2.Text;
ParamByName('P2').AsString:= Form3.DBEdit1.Text;
ExcecSQL;
...
end;


Un saludo.

learning_delphi
28-09-2011, 20:35:25
Intente hacerlo de esa manera poniendo en las lineas :

form1.q1.ParamByName('p1').asSmallInt:=form3.DBedit1.text;
form1.q1.ParamByName('p2').asString:=form3.DBedit2.text;

....
Funciona en la linea con tipo de dato String ,
pero me envia el siguiente error en la sigueinte linea:
form1.q1.ParamByName('p1').asSmallInt:=form3.DBedit1.text;

[Error] Unit3.pas(45): Incompatible types: 'Integer' and 'TMaskedText'

'se por que es el error , pero no se como solucionarlo :s, de q manera puedo ingresar datos DBedit.text a mis parametros .Integer . muchas gracias por su amable respuesta ^^ Saludos.

RONPABLO
28-09-2011, 21:07:22
Usa StrToInt, como el hay otros, como StrToFloat, StrToDate

form1.q1.ParamByName('p2').aSSmallInt:=StrToInt(form3.DBedit1.text);

ecfisa
28-09-2011, 21:21:08
Hola learning_delphi.

Como bién te dice RONPABLO, debes respetar el tipo de dato del campo involucrado para asignarle el valor al parámetro.
Es decir si le indicás un tipo (en este caso AsSmallInt) y le enviás otro (como Text de tipo TMaskedText), primeramente tenes que convertirlo con alguna de las funciones que te indica Pablo.

Un saludo.

learning_delphi
28-09-2011, 21:53:27
Muchas gracias por el consejo de ambos, lo he puesto en practica pero .. me sigue arrojando error; el programa corre pero a la hora de efectuar modificaciones a los registros existentes m pone este mensaje:

proyect1.exe raised exception class EIBInterbaseError with message' Dynamic SQL Error
SQL error code=-104
Token unknown -line1,column 40
)'.Process stopped. Use Step or Run to continue

todo funciona bien, me guarda datos, me los borra, pero a la hora de modificar ocurre esto... :s gracias , spero puedan ayudarme agradesco infinitamente .

learning_delphi
28-09-2011, 21:58:30
Muchas gracias por el consejo de ambos, lo he puesto en practica pero .. me sigue arrojando error; el programa corre pero a la hora de efectuar modificaciones a los registros existentes m pone este mensaje:

proyect1.exe raised exception class EIBInterbaseError with message' Dynamic SQL Error
SQL error code=-104
Token unknown -line1,column 40
)'.Process stopped. Use Step or Run to continue

todo funciona bien, me guarda datos, me los borra, pero a la hora de modificar ocurre esto... :s gracias , spero puedan ayudarme agradesco infinitamente .


Eternas disuculpaaas!! ya encontre el error! agradesco mucho por su ayuda y comprension ^^ , tenia un error con un parentesis que no iba ahi jeje.
muy amables. saludos