PDA

Ver la Versión Completa : Bloqueos en SQL Server y BDE


risu
18-02-2005, 01:30:57
Tengo un problema muy importante con bloqueos en tablas, y es crucial que lo resuelva pq la aplicación ya está funcionando.



Es una aplicación sobre SQL SERVER 7, cliente-servidor con BDE para la conexión.

En la tabla de la BBDD hay unos 10000 registros importados directamente por el SQL Server desde ACCESS. Si intento modificar uno de estos registros, no hay problema y realiza la modificación.

El problema surge, con los nuevos registros insertados desde la aplicación de Builder, que ahora mismo serán unos 20. Los registros los inserta correctamente (uso para la inserción un Append y un Post directamente sobre la tabla), pero si intento editar uno de estos registros, me sale el famoso mensaje de BDE “Couldn’t perform the edit because another user changed the record” o algo así.



Para la modificación y moverme por los registros, uso el evento “On Data Change” del DataSource correspondiente a la tabla.



try{ if (((Field)!=NULL)&&((Field->FieldName)!="Clave_pr"))) //Si no hay cambio es navegación por los registros y no entra en la condición.

{

if(MessageDlg("Se ha modificado el campo: " + (Field->FieldName) + ". ¿Seguro que desea modificar el campo?",

mtCustom, mbOKCancel << mbOK, 0)!=mbOK)

{ Productor->cambio_Gprod=true; //Variable para diferenciar si es una nueva inserción o es una edición

sour_Productor->DataSet->UpdateRecord();

sour_Productor->DataSet->Post();

}



else {sour_Productor->DataSet->Cancel();

sour_Productor->DataSet->Open() ;}

}



}



catch(...){}

}



He estado mirando el servidor SQL Server, y cuando paro la aplicación, no quedan bloqueos. He reiniciado el servidor y tampoco. Pero si he visto que cuando inicio la aplicación genera una serie de bloqueos sobre la tabla, que no entiendo bien. Parece como si los nuevos registros que se insertan, lo hubieran hecho en modo “solo lectura”.



No se me ocurre que pueda ser. He visto algo de transacciones, pero no sabría como modificar mi código (que sería bastante) para ponerlo, y si funcionaría sin problemas. Alguna ayuda por favor???? Es muy urgente.



Gracias

roman
18-02-2005, 06:32:57
Además de éste has abierto otros tres hilos con la misma pregunta

http://www.clubdelphi.com/foros/showthread.php?t=18640
http://www.clubdelphi.com/foros/showthread.php?t=18639
http://www.clubdelphi.com/foros/showthread.php?t=18638

mismo que he cerrado. Te sugiero leas la guía de estilo.

// Saludos

lgarcia
18-02-2005, 14:31:34
Hola

Te recomiendo que si estas trabajando con SQL 7 renuncies a la BDE y te conectes con ADO es mas directa y puedes aprovechar mejor la potencialidad de los procedimientos almacenados de SQL y veras que resolveras todos esos problemas que tienes.

Saludos
Luis Garcia

risu
21-02-2005, 13:38:41
Además de éste has abierto otros tres hilos con la misma pregunta

http://www.clubdelphi.com/foros/showthread.php?t=18640
http://www.clubdelphi.com/foros/showthread.php?t=18639
http://www.clubdelphi.com/foros/showthread.php?t=18638

mismo que he cerrado. Te sugiero leas la guía de estilo.

// Saludos

Siento mucho haber mandado el hilo en 3 foros, pero estaba y estoy muy desesperado, y no estaba seguro de en que foro enviarlo. Me leeré la guía de estilo.

Gracias.



Y volviendo sobre mi problema, he descubierto que es del BDE y el SQL SERVER, pq si directamente inserto e intento editar un registro desde el SQL Explorer (la herramienta de Borland que utiliza el BDE para acceder a los datos) me surge el mismo problema.

Alguien tiene el BDE y el SQL SERVER 7 funcionando sin problemas??? O si se los dió, como lo arreglaron?

Es que si tengo que modificar todo el códico a ADO o DBExpress, puede ser un "infierno".

Gracias a todos.

vani
25-02-2005, 18:04:22
Hola.

Pues yo tuve un problema parecido hace un par de años y la solución fue rehacer la aplicación con ADO, porque con el BDE no habia manera.

Un saludo.