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)
-   -   couldn't perform the edit (mysql + d6) (https://www.clubdelphi.com/foros/showthread.php?t=39925)

Byfed 02-02-2007 01:17:47

couldn't perform the edit (mysql + d6)
 
Hola a todos,

Es mi primer mensaje en el foro, así que antes que nada, un saludo a todos y agradecer vuestras aportaciones, que tantas veces me han sacado de los entuertos en los que me meto.

Estoy haciendo una aplicación en Delphi 6 que conecta vía ODBC con una base de datos mysql. Utilizo un DBGrid, un DBNavigator para mostrar los listados y después controles DBEdit para mostrar los campos del registro activo. Cuando le doy a añadir en el DBNavigator he conseguido que funcione sin problemas, pero si edito un registro, me dice que otro usuario ha cambiado el registro y no puede hacer el edit.

He probado a capturar el clic sobre el DBNavigator y comprobar si el boton es el de edit. En ese caso, cerrar la tabla, volverla a abrir y hacer un locate para volver al registro que estaba y entonces poner la tabla en modo edición, pero sigue dando lo mismo.

En la zona en que muestro los campos de cada registro, hay unos campos que podrían estar causando el problema. Veréis: Tengo unos DBlookupComboBox que muestran opciones de otra tabla. El keyField es la clave primaria de esa otra tabla. El caso es que el cliente quiere poder teclear el código, cuando se lo sepa y cuando no, seleccionarlo del combo.
Se me ocurrió hacer lo siguiente:
- Poner un campo edit normal. Cuando salgo del campo Edit lo que hago es, compruebo si la tabla está en modo edición o inserción y en ese caso escribo directamente en el registro el código tecleado.
- Al hacerlo, como el combo está enlazado a la tabla, muestra la opción deseada como si lo hubiera desplegado.
- Además, si el usuario ignora el campo edit y escoge directamente del combo, al salir de ese control actualizo el edit (más que nada para que el usuario vea el código, como si lo hubiera escrito).

Pues bien, al implementar mi "apaño", me ha empezado a suceder lo que os describía en el título. Si doy a editar en el DBNavigator y cambio algún campo, cuando hago el post me sale el mensaje de que otro usuario ha cambiado el registro... y no hay manera.

¿Alguien tiene idea de cómo puedo solucionar el problema? ¿Hay alguna forma de desactivar ese control que hace sobre modificaciones de otros usuarios? (el programa se va a ejecutar desde un solo puesto y me da igual que no haga un control riguroso).

Estaba planteándome reconstruir toda la aplicación utilizando querys y haciendolo todo por código, porque es lo que al final tuvo que hacer un compañero que le sucedió lo mismo... pero ufff... es muy laborioso. Preferiría encontar una solución y aprovechar lo que ya tengo hecho.

Gracias de antemano y un saludo.


La franja horaria es GMT +2. Ahora son las 08:19:30.

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