![]() |
Actualizacion query
Buenas a todos: resulta que usamos un programa que accede a los datos de una tabla compartida. Como pueden acceder varias personas simultaneamente y para evitar problemas, he hecho que el acceso sea sobre un query de esa tabla y no sobre la tabla directamente. El problema que se me plantea es el siguiente. Cada vez que se va a añadir un nuevo registro, se abre la tabla, se añade el registro y se vuelve a cerrar y a continuación se vuelve a hacer el query sobre la tabla. El problema es que el nuevo registro no aparece en el query. Sin embargo abro la tabla con el Database Desktop y el registro si está.
Supongo que el fallo está en la memoria intermedia o en el buffer de escritura, pero no se como atacarlo. Me pueden ayudar? Graaaacias. Alf |
en el evento AfterPost de la Tabla pon
Tabla.FlushBuffers Esto forzara la grabacion de los datos a disco |
Hola. He querido continuar este hilo por que a mí me suceden algunas cosas "extrañas" muy parecidas.
En mi módulo de datos trabajo con dos componentes TIBTransaction, uno se llama IBTran, y el otro TIBTranLiq. Tengo un TIBQuery llamado IBQ1 cuyo componente de transacción por defecto es IBTran, y un TIBQuery llamado IBEmpleados. Voy a eliminar un empleado, pero antes necesito eliminar las referencias en otra tabla llamada "Afiliaciones". Ahora hago lo siguiente: Código:
CodigoEmpleado = IBEmpleados.FieldByName('Codigo').AsString; Código:
DELETE FROM "Afiliaciones" WHERE "Empleado" = '12345' Alguien podría ayudarme? Muchas gracias. PD. 1. La sentencia FluchBuffers es como ejecutar Commit? 2. Cuando un Commit en una transacción no se muestran los resultados en la otra (después de ejecutar los commits correspondientes). Qué puedo hacer en este caso? |
Bueno, no te funciona porque te falta cerrar las comillas, es decir, tienes que hacer la sentencia asi
Código:
IBQ1.SQL.Clear; Despues de realizar un Commit, para ver esos cambios desde otra transaccion, necesitas hacer un Close y un Open del Dataset. Por otra parte, si tienes que borrar registros de una tabla "ligados" al borrado de otra, te recomiendo que crees claves foraneas que te lo gestionen ellas mismas y asi te despreocupas (o bien un trigger que vendria a ser lo mismo) Bueno, espero te sirva |
La franja horaria es GMT +2. Ahora son las 01:51:51. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi