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)
-   -   Updates en sql server. (https://www.clubdelphi.com/foros/showthread.php?t=12666)

marial 23-07-2004 14:41:55

Updates en sql server.
 
Hola a todos!
Voy a formular la pregunta de nuevo, y a intentar dar más información:

Trabajo con delphi 7, con sql server 7. Y los componentes que utilizo son:

SQLConnection, SimpleDataset y Datasource.

Estoy haciendo un programa para actualizar una tabla. La visualizo en varios DBEdit, y al intentar hacer las modificaciones me da el siguiente error:

"No se puede crear una nueva transacción, se excedió la capacidad".

Este mensaje me sale cuando pulso el botón que contiene el siguiente código:

SimpleDataset.Edit;
SimpleDataset.Post;
Simpledataset.ApplyUpdates(-1);
Simpledataset.Refresh;

Y el error me da en la linea de apply updates.

¿Qué puedo hacer?

Muchas gracias.

guillotmarc 23-07-2004 17:37:02

Hola.

¿ Estás seguro que tienes lás ultimas actualizacions para Delphi 7 ?. Creo recordar que el driver dbExpress de SQL Server tenia algunos problemas que se resolvian con el Update 1 para Delphi 7.

Saludos.

marto 23-07-2004 17:59:40

Wop!

¿Qué drivers usas para conectar con SQLServer?
Lo pregunto porque OleDB no permitía tener más de un comando a la vez en la misma conexión (de hecho en ADO.NET tambien tienes esa limitación). ADO (el clásico), en cambio, pese a que es una capa sobre OleDB, te encapsula la caché de conexiones.

Aclaro que esto lo digo porque he leído bastante teoría sobre el tema, pero nunca he trabajado con OleDB ;)

guillotmarc 23-07-2004 18:23:42

Hola.

Utiliza dbExpress (TSqlConnection + TSimpleDataset). Aunque no he usado esa conexión con SQL Server, teóricamente permite abrir varias transacciones simultaneas. Así que el problema parece ser el driver dbExpress (que recuerdo que tenia algunos problemas en Delphi 7.0).

NOTA: Yo pensaba que la librería que no permitía más de una transacción por conexión era la DbLib (la librería anterior a cuando OleDb fué el acceso nativo a SQL Server).

Saludos.

marto 23-07-2004 18:57:11

Cita:

Empezado por guillotmarc
Así que el problema parece ser el driver dbExpress (que recuerdo que tenia algunos problemas en Delphi 7.0).

¿Y el driver de DbExpress para SQLServer es nativo? ¿No corre sobre ADO/DbExpress/ODBC...? Yo pensaba que sí....

Cita:

Empezado por guillotmarc
NOTA: Yo pensaba que la librería que no permitía más de una transacción por conexión era la DbLib (la librería anterior a cuando OleDb fué el acceso nativo a SQL Server).

No me he explicado bien. El problema no es tener varias conexiones, sino varios cursores. Según se explica en "La cara oculta de C#", OleDB no solo permitía tener un cursor por conexión. ADO se creó para facilitar la vida a los programadores, y una de las cosas que mejoró fue crear una caché de conexiones encapsuldada: al programador le parece que tiene 7 cursores con una conexión, pero ADO, en realidad, abré 7 (conexiones) contra SQlServer.

guillotmarc 23-07-2004 19:11:31

Hola.

Cita:

Empezado por marto
¿Y el driver de DbExpress para SQLServer es nativo? ¿No corre sobre ADO/DbExpress/ODBC...? Yo pensaba que sí....

No estoy del todo seguro, pero yo también soy de la opinión que debe basarse en OleDb.

Cita:

Empezado por marto
No me he explicado bien. El problema no es tener varias conexiones, sino varios cursores. Según se explica en "La cara oculta de C#", OleDB no solo permitía tener un cursor por conexión. ADO se creó para facilitar la vida a los programadores, y una de las cosas que mejoró fue crear una caché de conexiones encapsuldada: al programador le parece que tiene 7 cursores con una conexión, pero ADO, en realidad, abré 7 (conexiones) contra SQlServer.

Hace tiempo que leí esto, pero yo pensaba que el problema lo tenía la antigua DbLib. Debo estar confundido.

En todo caso este no es el problema que tiene el usuario. Puesto que el error le indica que no le permite abrir una nueva transacción. Recuerdo haber leído en la cara oculta de Delphi 6, que el driver dbExpress para SQL Server está preparado para varias transacciones simultaneas (creo que el único driver dbExpress que no lo permite es el de MySQL).

Saludos.

marto 24-07-2004 01:01:39

Cita:

Empezado por guillotmarc
En todo caso este no es el problema que tiene el usuario. Puesto que el error le indica que no le permite abrir una nueva transacción.

Pues va aser que tienes razón :o no lo leí bien


La franja horaria es GMT +2. Ahora son las 20:41:37.

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