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)
-   -   actualizar (https://www.clubdelphi.com/foros/showthread.php?t=10709)

fabriciof 27-05-2004 01:50:40

actualizar
 
hola amigos , como siempre agardeciendo su ayuda , recurrinedo ilimitadamente a su buena voluntad.

realice una aplicacion en bases de datos , pero cuiando ago una modificacion , la base de datos no se actualiza , los registros de una detrminada columna se muestras en un listbox, y alseleccionar algun nombre de , me muestar sus caracteristicas dentro de unos edit's, pero cuando corrijo algun valor de la base de datos y vuelvo a seleccionar el nombre los edits me aparecen todos en blanco , cierro la aplicacion , slecciono el item modificado y me muestra los cambios , como puedo solucionar este problema , use refresh , pero me aprece un mensaje de error.

el codigo es el siguiente :

with adoquery1 do
begin
connectionstring:=strconection;
adoquery1.active:=true;
close;
sql.clear;
connectionstring:=strconection;
sql.Add('select * from crop');
open;
listbox1.clear;
while not adoquery1.eof do
begin
listbox1.items.add(fields[1].asstring);
next;
end;
end;
end;
procedure TForm1.ListBox1Click(Sender: TObject);
begin
with adoquery1 do
begin
close;
sql.clear;
sql.add('select * from crop where cropname='''+listbox1.items[listbox1.itemindex]+'''');
open;
edit2.text:=fields[0].asstring;
edit1.text:=fields[1].asstring;
edit3.text:=fields[2].asstring;
edit4.text:=fields[3].asstring;
edit5.text:=fields[4].asstring;
edit6.text:=fields[5].asstring;
end;
end;
procedure TForm1.Edit3Change(Sender: TObject);
begin
{ adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('update crop set blai='''+edit3.text+''' where cropname='''+listbox1.items[listbox1.itemindex]+'''');
adoquery1.open;}
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
connectionstring:=strconection;
adoquery1.close;
adoquery1.sql.clear;

adoquery1.sql.add('update crop set cropname='''+edit2.text+''',cpnm='''+edit1.text+''', blai='''+edit3.text+''',chtmx='''+edit4.text+''',cnyld='''+edit5.text+''',ov_n='''+edit6.text+''' where cropname='''+listbox1.items[listbox1.itemindex]+'''');
adoquery1.execsql;
adoquery1.close;

end;
end.

gracias por su ayuda.

jachguate 27-05-2004 03:11:05

Hilo movido al foro de conexión con bases de datos, desde el foro de SQL por no corresponder con la temática del mismo.

Por cierto, te recomiendo el uso de la etiqueta [ delphi ] para publicar trozos de código. Al inicio de cada foro hay un mensaje que te indica cual es la forma de uso.

Hasta luego.

;)

Nelet 27-05-2004 09:52:28

Buenas fabriciof:
Según creo ver en el código estás utilizando el mismo componente ADOQuery para todos los los eventos. Debido a esto, después del evento Button1Click la query desde la que quieres rellenar los Edits tendra en la propiedad SQL el "update crop........".
Para mi la solución está en utilizar dos ADOQuery, una para rellenar el grid y otra para los updates.
O bien, en el evento Button1Click, después del update, volver a rellenar el grid.

Espero te sirva de ayuda.

fabriciof 27-05-2004 14:58:56

gracias , nunca intente eso , pero lo pondre a prueba en seguida , gracias por tu tiempo.


La franja horaria es GMT +2. Ahora son las 06:30:35.

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