Ejecutar dos sentecias SQL

27/08/2007 - 11:20 por [Juanjo] | Informe spam
Hola grupo:

Necesito hacer un select (para calcular un valor) y un insert (donde uso
el valor calculado)
sobre una tabla de una base de datos SQL Server, de modo que si se empieza a
ejecutar este
"proceso", "nadie" mas pueda ejecutar dicho proceso hasta que termine (para
que no usen el
mismo valor calculado en el select).

Lo que necesito es bloquear la tabla mientras un usuario ejecuta las
consultas, pero no se como
hacerlo con TableAdapter.

Muchas gracias.

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
27/08/2007 - 13:19 | Informe spam
"[Juanjo]" wrote in message
news:
Necesito hacer un select (para calcular un valor) y un insert (donde
uso el valor calculado)
sobre una tabla de una base de datos SQL Server, de modo que si se empieza
a ejecutar este
"proceso", "nadie" mas pueda ejecutar dicho proceso hasta que termine
(para que no usen el
mismo valor calculado en el select).

Lo que necesito es bloquear la tabla mientras un usuario ejecuta las
consultas, pero no se como
hacerlo con TableAdapter.



Con un servidor de base de datos, la forma de "bloquear una tabla"
consiste en ejecutar todo el proceso dentro de una transacción: Inicias
transacción, realizas el Select, realizas el Insert, y haces el Commit de la
transacción.
Con ado.net, la forma de usar transacciones consiste en llamar al método
BeginTransaction de la conexión, que te devuelve un objeto de tipo
SqlTransaction, asignar ese objecto a la propiedad Transaction de todos los
Command que se usen durante la transacción, y finalmente llamar al método
Commit del objeto Transaction. Nunca lo he hecho con un TableAdapter, pero
seguro que tiene alguna propiedad para asignarle el objeto Transaction.
Respuesta Responder a este mensaje
#2 [Juanjo]
28/08/2007 - 12:16 | Informe spam
Muchas gracias por al informacion. Sin los DataAdapter lo hacia asi, pero
con los DataAdapter
las propiedad transaccion no esta disponible, por lo que he tenido que
ingeniarmelas para usar
las transacciones.

Muchas gracias

"Alberto Poblacion"
escribió en el mensaje news:
"[Juanjo]" wrote in message
news:
Necesito hacer un select (para calcular un valor) y un insert (donde
uso el valor calculado)
sobre una tabla de una base de datos SQL Server, de modo que si se
empieza a ejecutar este
"proceso", "nadie" mas pueda ejecutar dicho proceso hasta que termine
(para que no usen el
mismo valor calculado en el select).

Lo que necesito es bloquear la tabla mientras un usuario ejecuta las
consultas, pero no se como
hacerlo con TableAdapter.



Con un servidor de base de datos, la forma de "bloquear una tabla"
consiste en ejecutar todo el proceso dentro de una transacción: Inicias
transacción, realizas el Select, realizas el Insert, y haces el Commit de
la transacción.
Con ado.net, la forma de usar transacciones consiste en llamar al método
BeginTransaction de la conexión, que te devuelve un objeto de tipo
SqlTransaction, asignar ese objecto a la propiedad Transaction de todos
los Command que se usen durante la transacción, y finalmente llamar al
método Commit del objeto Transaction. Nunca lo he hecho con un
TableAdapter, pero seguro que tiene alguna propiedad para asignarle el
objeto Transaction.

Respuesta Responder a este mensaje
#3 Alberto Poblacion
28/08/2007 - 12:17 | Informe spam
"[Juanjo]" wrote in message
news:utG%
Muchas gracias por al informacion. Sin los DataAdapter lo hacia asi, pero
con los DataAdapter
las propiedad transaccion no esta disponible



Sí, con los DataAdapter sí que está disponible: Símplemente le asignas el
SqlTransaction a la propiadad Transaction del SelectCommand y del
InsertCommand que hay dentro del DataAdapter.
Respuesta Responder a este mensaje
#4 [Juanjo]
28/08/2007 - 18:23 | Informe spam
Perdon, me confundi, utilizo TableAdapter, no DataAdapter, precisamente he
resuelto
el problema usando DataAdater.

Muchas gracias.

"Alberto Poblacion"
escribió en el mensaje news:
"[Juanjo]" wrote in message
news:utG%
Muchas gracias por al informacion. Sin los DataAdapter lo hacia asi, pero
con los DataAdapter
las propiedad transaccion no esta disponible



Sí, con los DataAdapter sí que está disponible: Símplemente le asignas
el SqlTransaction a la propiadad Transaction del SelectCommand y del
InsertCommand que hay dentro del DataAdapter.



Respuesta Responder a este mensaje
#5 Alfredo Novoa
29/08/2007 - 13:12 | Informe spam
Hola Juanjo,

On Mon, 27 Aug 2007 11:20:47 +0200, "[Juanjo]"
wrote:

Necesito hacer un select (para calcular un valor) y un insert (donde uso
el valor calculado)



Sería mucho mejor que metieses el select dentro del insert.


Saludos
Alfredo
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida