Retornar valor de un Procedimiento Almacenado (ADO)
Publicado por Luis (1 intervención) el 17/06/2016 20:16:16
Que tal, muy Buenas!
Verán tengo un programa echo en VB 6, el cual maneja un Inventario de productos! La cuestión es que tengo un método en el cual realizo varias operaciones hacia la BD en el mismo método.
Realizo procedimientos almacenados por cada inserción y actualización de datos, pero lo que quiero hacer ahora es comprobar que mi primer procedimiento de insertar funciona bien, para luego realizar la segunda inserción, y si esta inserción es correcta, realizar una tercera inserción y así hasta que termine todas las inserciones de mi método. Y si por algún motivo no funciona alguna de ellas, que mi método no inserte NADA; para realizar los métodos almacenados estoy utilizando: BeginTrans, Execute, RollbackTrans y CommitTrans.
Lo que investigue es que, "Execute RecordsAffected" me devuelve el valor de las filas afectadas -siempre y cuando este bien la función. Pero funciona bien para un Select, y yo quisiera hacer esto mismo pero para un Insert y un Update.
Adjunto el código para que se entienda mejor.
Que propiedad de ADO podría usar para saber si un procedimiento esta bien en un Update y un Insert? o de que forma podria hacerlo?
De antemano Gracias por la Ayuda!
Verán tengo un programa echo en VB 6, el cual maneja un Inventario de productos! La cuestión es que tengo un método en el cual realizo varias operaciones hacia la BD en el mismo método.
Realizo procedimientos almacenados por cada inserción y actualización de datos, pero lo que quiero hacer ahora es comprobar que mi primer procedimiento de insertar funciona bien, para luego realizar la segunda inserción, y si esta inserción es correcta, realizar una tercera inserción y así hasta que termine todas las inserciones de mi método. Y si por algún motivo no funciona alguna de ellas, que mi método no inserte NADA; para realizar los métodos almacenados estoy utilizando: BeginTrans, Execute, RollbackTrans y CommitTrans.
Lo que investigue es que, "Execute RecordsAffected" me devuelve el valor de las filas afectadas -siempre y cuando este bien la función. Pero funciona bien para un Select, y yo quisiera hacer esto mismo pero para un Insert y un Update.
Adjunto el código para que se entienda mejor.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Private Sub cmdsave_Click()
Dim local_connection As ADODB.Connection
Dim lngRecs As Long
Set local_connection = CreateObject("ADODB.Connection")
local_connection.Open "PROVIDER=MSDASQL;dsn=namedb;uid=user;pwd=password;"
local_connection.BeginTrans
sql1 = "insert into cylinder (no, date, date_string, "
sql1 = sql1 & " cus_no, req_no, mode, bill_items, status) values "
sql1 = sql1 & " ( " & Format(mdate, "yyyy-mm-dd") & "' , '" & CDate(mdate) & "', "
sql1 = sql1 & " '" & Format(mdate, "yyyy-mm-dd") & "', " & val(StatusBar1.Panels(3)) & ","
sql1 = sql1 & " " & val(SBar1(4).Text) & ", '" & SBar1.(6) & "','" & val(filled_grid.Rows) & "', 'PENDING')"
local_connection.Execute sql1, RecordsAffected := lngRecs '//Aca es donde retorna un 0 si afecto nada o el numero de filas que afecto
If lngRecs = 0 Then 'si no afecto ninguna fila
MsgBox "Cylider no created", vbExclamation, "Cylinder"
local_connection.RollbackTrans
Exit Sub
Else '//si funciono, seguir insertando
sql2 = "insert into cylinder2 (no, date, date_string, "
sql2 = sql2 & " cus_no, req_no, mode, bill_items, status) values "
sql2 = sql2 & " ( " & Format(mdate, "yyyy-mm-dd") & "' , '" & CDate(mdate) & "', "
sql2 = sql2 & " '" & Format(mdate, "yyyy-mm-dd") & "', " & val(StatusBar1.Panels(3)) & ","
sql2 = sql2 & " " & val(SBar1(4).Text) & ", '" & SBar1.(6) & "','" & val(filled_grid.Rows) & "', 'PENDING')"
local_connection.Execute sql2, RecordsAffected:=lngRecs '//Aca es donde retorna un 0 si afecto nada o el numero de filas que afecto
If lngRecs = 0 Then 'si no afecto ninguna fila
MsgBox "Cylider 2 no created", vbExclamation, "Cylinder"
local_connection.RollbackTrans
Exit Sub
Else
'// y asi sucesivamente hasta que termine de insertar todos mis datos
End If
End If
local_connection.CommitTrans
Set local_connection = NothingExit Sub
End Sub
Que propiedad de ADO podría usar para saber si un procedimiento esta bien en un Update y un Insert? o de que forma podria hacerlo?
De antemano Gracias por la Ayuda!
Valora esta pregunta


0