Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Excepción en codigo SQL, UDATE, Delphi 7 (https://www.clubdelphi.com/foros/showthread.php?t=61285)

alonso.esparza 02-11-2008 22:10:37

Excepción en codigo SQL, UDATE, Delphi 7
 
Buenas:

Pues aqui comentandoles haber si me pueden ayudar, soy nuevo en esto del Delphi (estoy manejando el 7), tengo una aplicación de altas y bajas a una BD de Access y hago la conexion y la consulta, todo bien, solo que quiero , despues de haber hecho una consulta y que me muestre los datos en unos EditBox (No en DBEditBox), yo pueda modificar los EditBox y despues de darle click al boton, me actualize y YA todos felices......Este es el codigo SQL:

procedure TForm1.Button1Click(Sender: TObject);

begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('UPDATE Tprueba SET campo1 = :' + edit2.Text +', campo2 = ' + edit3.Text + ' WHERE Id = '+ Edit1.Text);
ADOQuery1.Open;
end;

Pero OO mi sorpresa cuando lo ejecuto y le doy click me aparece una ventana de "Debugger Exception Notification" la cual dice " Proyect ..blabla ..class EOleException with message 'Objeto Parameter mal definido. Se proporciono informacion incompleta o incoherente' ....bla blaa

O tambien me salia que "El parametro (Lo que haya tecleado en el edit2) no tiene un valor predeterminado"

Una Ayuda Porfa


Saludos
Sergio Alonso Esparza, Chihuahua,Chihuahua,Mex.

Caro 02-11-2008 22:21:42

Hola alonso.esparza, cuando haces modificacines sobre la BD tienes que utilizar ExecSQL y cuando haces solo consulta Open, ahí esta tu primer error, ahora tu consulta así como esta no necesita los : ya que le estas pasando directamente los parametros.

Debería quedar así:

Código Delphi [-]
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('UPDATE Tprueba SET campo1 = ' +edit2.Text+', campo2 = ' + edit3.Text + ' WHERE Id = '+ Edit1.Text);
ADOQuery1.ExecSQL;

Si tu campo es entero no necesita comillas pero sino si necesitas ponerle comillas, para ello puedes utilizar QuotedStr.

Saluditos

Caral 02-11-2008 22:23:01

Hola
Deberias de indicarnos los tipos de campo, pero bueno, ahí va la primera prueba.
Código Delphi [-]
begin
ADOQuery1.Close;
ADOQuery1.SQL.Text:= 'UPDATE Tprueba SET campo1 = '+edit2.Text+', campo2 = '+edit3.Text+' WHERE Id = '+Edit1.Text);
ADOQuery1.Open;
end;
Saludos

alonso.esparza 02-11-2008 22:44:12

Gracias a los dos ya me funcionó de hecho quedo así:

ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('UPDATE Tprueba SET campo1 = ' + QuotedStr(edit2.Text) +', campo2 = ' + QuotedStr(edit3.Text) + ' WHERE Id = '+ Edit1.Text);
ADOQuery1.ExecSQL;

Jajajaja, ya me iba a dar de topes con la pared jaja, Oigan y abusando de su amabilidad
tengo un DBGrid en la forma, y quiero que en cuanto modifique se muestre el cambio en el DBGrid, jjeeje

GRACIAS Deveras

Saludos
atte
Sergio Alonso Esparza

Caro 02-11-2008 22:47:28

Cita:

Empezado por alonso.esparza (Mensaje 323809)
Oigan y abusando de su amabilidad
tengo un DBGrid en la forma, y quiero que en cuanto modifique se muestre el cambio en el DBGrid,

Al Query que esta enlazado a tu DbGrid le Close y luego un Open.

Código Delphi [-]
 Query.Close;
 Query.Open;

Saluditos

alonso.esparza 02-11-2008 23:00:47

Gracias, ya funciona =)

Saludos


La franja horaria es GMT +2. Ahora son las 09:49:40.

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