Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Modificar & borrar desde delphi (https://www.clubdelphi.com/foros/showthread.php?t=75928)

learning_delphi 28-09-2011 05:26:50

Modificar & borrar desde delphi
 
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.
Código Delphi [-]
 
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 (si no lo has echo ya ;) ).
Encerré tu código Delphi entre las etiquetas [delphi] [/delphi], notarás que le dá mucha más legibilidad. El uso de las mismas lo encontrás aquí.

En cuanto a tu problema, creo que está en las líneas donde asignas el contenido a los parámetros:
Código Delphi [-]
  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í:
Código Delphi [-]
  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 :
Código Delphi [-]
 
  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
Código Delphi [-]
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

Cita:

Empezado por learning_delphi (Mensaje 413793)
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


La franja horaria es GMT +2. Ahora son las 11:49:08.

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