PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2024 → Duda con update
Duda con update
Iniciado por Lourdes Herrero, 10,mar. 2008 14:13 - 3 respuestas
Publicado el 10,marzo 2008 - 14:13
Hola,
estoy intentando hacer un update sobre una tabla y no entiendo por qué no se me actualizan los datos. Estoy haciendo algo mal y no sé que es. He realizado muchas pruebas pero no entiendo qué está pasando. Mi problema es el siguiente:

Tengo un consulta (select) sobre varias tablas de mi base de datos (acceso nativo a MySQL). El resultado de esta consulta lo muestro en pantalla sobre una tabla. Yo quiero que cuando el usuario modifique uno de los campos (check box) se modifique también en la tabla correspondiente de la base de datos y muestre el cambio en la pantalla. Por tanto, lo que hago es cuando se produce esa modificación en la columna de la tabla (en el check box) se ejecute un Update que modificará la tabla de la base de datos y luego vuelvo a llamar a la select para que se refresque la pantalla. Pero esto último no sucede, es decir, vuelve a mostrarme los datos tal y como estaban antes de realizar el update. ¿Qué estoy haciendo mal? ¿Alguien puede ayudarme?

Muchas gracias de antemano
Publicado el 12,marzo 2008 - 00:34
Hola Lourdes, soy Salvador, te cuento que probablemente no puedas actualizar la tabla por que se trata de unsa consulta en la que intervienen varias tablas y una vista no es actualizable automáticamente, tienes que hacerlo de forma manual.
utiliza el evento ENTRY o EXIT de la columna que tenga el campo que quieres actualizar
y realiza la programación de la actualizacion manualmente:
Supongo que sera algo parecido a:

tabla.campo=COL_Modificada
screentofile()
HModify(tabla)

supongo que tambien pofras utilizar:

TableModify(Tabla,Nombre de la columna,Valor)

Si me envias más información vere si puedo decirte el código que debes utilizar.
Publicado el 12,marzo 2008 - 14:51
Hola Salvador,
gracias por tu ayuda, ya pensaba que nadie me iba a contestar!!!!
Pues como decía en el mensaje anterior, estoy intentando que al modificar un campo en una tabla de la pantalla (es un check box), se modifique en su tabla correspondiente de la base de datos. Es decir, en una tabla de la ventana muestro los datos que se obtienen de la Select que cruza dos tablas de la base de datos. Uno de estos datos se muestra en forma de check box y será modificable por el usuario. Por tanto, esta select se ejecutará en el evento de inicialización de la ventana.
Como ya he dicho, el usuario podrá chequear o deschequear el check box (valga la redundancia) pero esta información partía de la base de datos, así que, yo quiero conseguir, por ejemplo, que si deschequea escriba un 0 en el campo de la tabla correspondiente de la base de datos. Para ello, en el evento "Whenever modify" de la columna del check box ejecuto lo siguiente HExecuteQuery (nombre_update_creado,hModifyFile, Tabla.COL_UiVisible..Value, otro_parametro) que llamará a una query que me he creado. Esta query es un update que modifica dicho campo en la tabla correspondiente de la bd y se le pasan 2 parámetros. Una vez hecho esto vuelvo a llamar a la select para que se recargue, pero vuelve a sacarme los mismos datos del principio, sin tener en cuenta la modificacion.
Tu me indicas que llame a HModify pero cuando intento llamarlo me salta error diciéndome que no se puede utilizar con el acceso nativo a las tablas.
Espero que puedas ayudarme
Muchas gracias
Publicado el 12,marzo 2008 - 22:25
Hola, he utilizado una base de datos MySql de la que he selecionado dos tablas seguidamente he creado una consulta del tipo:


SELECT
autor.nombre AS nombre,
articulos.titulo AS titulo,
articulos.subtitulo AS subtitulo,
articulos.presentar AS presentar,
articulos.id_autor AS id_autor,
autor.id_autor AS id_autor_au,
articulos.id_articulo as id_articulo
FROM
autor,
articulos
WHERE
autor.id_autor = articulos.id_autor

y se la he asignado como fuente de datos de una rejilla, pero no me permite realizar ningún tipo de actualización, aún es más si intento realizar alguna modificación me da un error.

Tal como te indique anteriormente creo que una consulta en la que selecionas campos de varias tablas no es actualizable.

Siento no poderte ser de más ayuda.

Saludos
Salvador