Visual Basic - Transacciones y SQL Server

Life is soft - evento anual de software empresarial
 
Vista:

Transacciones y SQL Server

Publicado por Larisa (1 intervención) el 30/12/2005 18:12:57
Hola a todos:

En el siguiente código estoy confrontando problemas con las transacciones, el cual arroja el siguiente error específicamente en el segundo SELECT, arroja lo siguiente
"NO SE PUEDE CREAR UNA NUEVA CONEXIÓN PORQUE ESTÁ EN MODO DE TRANSACCIÓN MANUAL O DISTRIBUIDA". Al parecer es el SQL Server, puesto que con acces funciona bien. Esto se produce desde de emigre de acces a SQL Server.

Mientras utilice solo INSERT todo esta bien, pero desde que aparece más de un SELECT en un misma transacción viene el problema.

Si elimino las transacciones, funciona bien.

Espero alguien me pueda ayudar, ya que he buscado en muchos sitios y no encuentro nada.

FELIZ AÑO NUEVO A TODOS.

LARISA

·"·"·"·"·"·"·"·"·"·"·"·"·"·"·"
con.BeginTrans

con.Execute "DELETE FROM stock_reporte"

SQL = "SELECT tanques.c_tanque, tanques.d_tanque, tanques.capacidad, unidades_medida.Abreviatura FROM tanques, unidades_medida WHERE tanques.c_tanque = tanques.c_tanque AND tanques.c_unidades_C = unidades_medida.c_unidad AND tanques.cod_grupo_tanque = 'TT01' AND c_tanque <> 'T29' ORDER BY tanques.c_tanque"
'SQL = "SELECT tanques.c_tanque, tanques.d_tanque FROM tanques"

Set rss = con.Execute(SQL)

Do While Not rss.EOF

tanque = rss!c_tanque
capacidad = rss!capacidad
d_tanque = rss!d_tanque
abrv = rss!abreviatura

'Escogiendo el tanque
SQL = "SELECT SUM(stock_alcohol.volumen_actual) as vol, SUM(stock_alcohol.grad_corregido) as corre, SUM (stock_alcohol.lap) as la FROM stock_alcohol WHERE stock_alcohol.c_tanque = '" & tanque & "' "
Set rsa = con.Execute(SQL)


If rsa!vol > 0 Then
grad = (rsa!la / rsa!vol) * 100
grad = Format(grad, "###,##.00")

'Si hay producto en el tanque

SQL = "SELECT grupo_de_productos.d_grupo_producto, productos.iniciales FROM stock_alcohol, grupo_de_productos, productos WHERE stock_alcohol.c_tanque = '" & tanque & "' AND stock_alcohol.grupo_producto = grupo_de_productos.c_grupo_producto AND stock_alcohol.tipo_producto = productos.c_producto "
Set rsaa = con.Execute(SQL)

grupo = " "
productos = " "

Do While Not rsaa.EOF

grupo = rsaa!d_grupo_producto
productos = (productos) + rsaa!iniciales

rsaa.MoveNext
Loop


Set NewItem = ListView2.ListItems.Add(, , d_tanque)
grad = Format(grad, "#,#.0")
la = Format(rsa!la, "#,#.00")

NewItem.SubItems(1) = capacidad
NewItem.SubItems(2) = abrv
NewItem.SubItems(3) = rsa!vol
NewItem.SubItems(4) = grad
NewItem.SubItems(5) = la
NewItem.SubItems(6) = productos
NewItem.SubItems(7) = grupo



blanco = " "
SQL = "INSERT INTO stock_reporte (tanque, capacidad, medida, volumen, grado,lap, producto, grupo, cliente)"

SQL = SQL & " VALUES ("
SQL = SQL & "'" & d_tanque & "',"
SQL = SQL & "'" & capacidad & "',"
SQL = SQL & "'" & abrv & "',"
SQL = SQL & "'" & rsa!vol & "',"
SQL = SQL & "'" & grad & "',"
SQL = SQL & "'" & rsa!la & "',"
SQL = SQL & "'" & productos & "',"
SQL = SQL & "'" & grupo & "',"
SQL = SQL & "'" & blanco & "')"

con.Execute (SQL)

Else
'Si no hay producto en el tanque

Set NewItem = ListView2.ListItems.Add(, , d_tanque)

NewItem.SubItems(1) = capacidad
NewItem.SubItems(2) = abrv
NewItem.SubItems(3) = " 0 "
NewItem.SubItems(4) = " 0 "
NewItem.SubItems(5) = " 0 "
NewItem.SubItems(6) = " "
NewItem.SubItems(7) = " "



blanco = " "
SQL = "INSERT INTO stock_reporte (tanque, capacidad, medida, volumen, grado,lap, producto, grupo, cliente)"

SQL = SQL & " VALUES ("
SQL = SQL & "'" & d_tanque & "',"
SQL = SQL & "'" & capacidad & "',"
SQL = SQL & "'" & abrv & "',"
SQL = SQL & "'0',"
SQL = SQL & "'0',"
SQL = SQL & "'0',"
SQL = SQL & "' ',"
SQL = SQL & "' ',"
SQL = SQL & "' ')"

con.Execute (SQL)

End If
rss.MoveNext
Loop

rsa.Close
Set rsa = Nothing

con.CommitTrans

Exit Sub
Atrapada:
con.RollbackTrans
MsgBox Err.Description, vbOKOnly + vbInformation, "Error 00163"
Err.Clear
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder