PDA

Ver la Versión Completa : problema para refrescar DBgrid


alonso.esparza
05-11-2008, 22:50:01
Saludos ahi molestado de nuevo:

Tengo una aplicacion de altas y bajas, ya guarda y modifica y elimina y todo pero los datos no me los actualiza en el DBGrid:

1. Cuando Ejecuto la aplicacion en el db grid los datos de dos columnas no aparecen, pero (como tengo un evento que si le doy click al BDGrid me muestre los datos en unos edit box) cuando le doy click al DBGrid me aparecen todos los datos en los Editbox correctamente, y el DBGrid Sigue igual


2. Tengo mi boton de Modificar (Tengo tambien uno de guardar y de borrar y en los tres sucede lo mismo)

--Boton Modificar--

ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('UPDATE ListaDePrecios SET siniva = ' +(E_SinIva2.text) + ', descripcion = ' + QuotedStr(E_Des2.Text) +' , observacion = ' + QuotedStr(memo1.Lines.Text) + ' WHERE clave = '+ QuotedStr(E_Clave2.Text));
ADOQuery1.ExecSQL;

-- --
Si despues del ADOQuery1.ExecSQL; le pongo un ADOQuery1.CLOSE y luego OPEN, o si le pongo un ADOQuery1.ACTIVE:= FALSE y luego TRUE ,me manda un mensaje de error que dice que "el proveedor actual no admite que una unica ejecucion devuelva multiples recordsets"

Logicamente, como no le pongo nada de lo anterior, no me sale el mensaje de error, pero el DBGrid se queda en blanco(amenos que haga una busqueda)

Los cambios los hace perfectamente (Guarda Modifica y todo, es una tabla de Access) pero el DBGrid se queda en blanco.

Bueno por si no se entiende mi ChileVerdeConQueso (Es como decir ''a todo mi rollo reburujado que les escribi"), lo unico que quiero que haga mi DBGrid es que se ACTUALIZE cuando haga algun cambio. =)

Ayuda porfa

atte.
Sergio Alonso Esparza

Saludos

maeyanes
05-11-2008, 22:55:26
Hola...

Si luego de hacer ADOQuery1.ExecSQL haces un ADOQuery1.Open, es lógico que lo que obtengas es un error, ya que la propiedad SQL de ADOQuery1 todavía tiene la sentencia UPDATE ListaDePrecios......


Saludos...

BlueSteel
05-11-2008, 23:15:03
Hola

para que no te compliques tanto deberás utilizar 2 Query's..

1 para mostrar los datos en el DBGrid.... (Query_Selecciona), y
1 para realizar las modificaciones de los datos ...(Query_Actualiza)...

Lo que tienes que hacer tu proceso seria más o menos así...

1.- Ingresar al Form
2.- Seleccionar los datos para mostrar en el DBGrid (vinculados al Query_Selecciona)
3.- Modificar cualquier información que quieras de cualquier registro (pero lo tienes que realizar con el Query_Actualiza)
4.- Refrescar el Query_Selecciona... o ejecutar aquí el paso 2)... esto te debería actualizar la información de tu DBGrid...

salu2:p:D

alonso.esparza
05-11-2008, 23:29:18
Ok Gracias no habia pensado en eso BlueSteel, voy a modificar jeje.
Aunque lo de maeyanes lo senti un poco como regaño, =) sta bien siempre se aprende algo nuevo, te prometo que no lo vuelvo a hacer maeyanes


Gracias

Saludos

atte.
Sergio Alonso Esparza Perez

Caro
05-11-2008, 23:34:49
Hola , como te dice el amigo mayanes, tu Sql sigue con tu update, para que te salga el listado nuevmente tienes que volver a realizar el select en tu query


ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('UPDATE ListaDePrecios SET siniva = ' +(E_SinIva2.text) +
', descripcion = ' + QuotedStr(E_Des2.Text) +
' , observacion = ' + QuotedStr(memo1.Lines.Text) +
' WHERE clave = '+ QuotedStr(E_Clave2.Text));
ADOQuery1.ExecSQL;

ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM ListaDePrecios');
ADOQuery1.Open;


pero como te dice BlueSteel, lo mejor es usar 2 querys uno que sirva para hacer tus cambios y el otro para enlazarlo a tu DBGrid, así para actualizar haces solo un Close y un Open.

Saluditos

Neftali [Germán.Estévez]
06-11-2008, 11:33:16
1. Cuando Ejecuto la aplicacion en el db grid los datos de dos columnas no aparecen, pero (como tengo un evento que si le doy click al BDGrid me muestre los datos en unos edit box) cuando le doy click al DBGrid me aparecen todos los datos en los Editbox correctamente, y el DBGrid Sigue igual

Si despues del ADOQuery1.ExecSQL; le pongo un ADOQuery1.CLOSE y luego OPEN, o si le pongo un ADOQuery1.ACTIVE:= FALSE y luego TRUE ,me manda un mensaje de error que dice que "el proveedor actual no admite que una unica ejecucion devuelva multiples recordsets"



Elimina las columnas del DBGrid y vuelve a crearlas, a veces no aparecen porque han cambiado los nombres.

Los UPADET/INSERT/DELETE siempre con ExecSQL, no con Open ni Active.