Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-07-2004
marial marial is offline
Miembro
 
Registrado: may 2004
Posts: 26
Poder: 0
marial Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 23-07-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
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.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #3  
Antiguo 23-07-2004
Avatar de marto
marto marto is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona, Catalunya
Posts: 882
Poder: 22
marto Va por buen camino
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
__________________
E pur si muove
Responder Con Cita
  #4  
Antiguo 23-07-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
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.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #5  
Antiguo 23-07-2004
Avatar de marto
marto marto is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona, Catalunya
Posts: 882
Poder: 22
marto Va por buen camino
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.
__________________
E pur si muove
Responder Con Cita
  #6  
Antiguo 23-07-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
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.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #7  
Antiguo 24-07-2004
Avatar de marto
marto marto is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona, Catalunya
Posts: 882
Poder: 22
marto Va por buen camino
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 no lo leí bien
__________________
E pur si muove
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 18:28:02.


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
Copyright 1996-2007 Club Delphi