English version Russian version

'SAMPLE OF PURPOSE OF 'STD_EXEC_CALL' property
Sub sample_8_3()
 Dim cn As New ADODB.Connection
 cn.Provider = "LCPI.IBProvider"
 cn.Open "data source=main:e:\database\employee.gdb", "gamer", "vermut"
 
 cn.BeginTrans
 
 'table with customers
 Dim customers As New ADODB.Recordset
 
 'opening with support of bi-directional access (adOpenKeyset)
 customers.Open "customer", cn, adOpenKeyset, adLockReadOnly
  
 'command for execute STORED PROCEDURE MAIL_LABEL
 Dim cmd As New ADODB.Command
 cmd.ActiveConnection = cn
 
 'std_exec_sp=true ----------------------------------------------------
 'translate SQL 'exec SP(...)' to 'execute procedure SP(...)'
 'reception of result through OUT-parameters
 
 Debug.Print "STD_EXEC_SP=TRUE"
 
 cmd.Properties("std_exec_sp") = True
 cmd.CommandText = "exec MAIL_LABEL(:cust_no)"
 
 'goto to first row
 customers.MoveFirst
 
 While (Not customers.EOF)
  cmd("cust_no") = customers("cust_no")
  cmd.Execute
  
  'print result
  Debug.Print "cust_no:" & customers("cust_no") & " - " & customers("customer")
  
  Debug.Print "-----------------------"
  
  'OUT-parameters
  Debug.Print "line 1:" & cmd("line1")
  Debug.Print "line 2:" & cmd("line2")
  Debug.Print "line 3:" & cmd("line3")
  Debug.Print "line 4:" & cmd("line4")
  Debug.Print "line 5:" & cmd("line5")
  Debug.Print "line 6:" & cmd("line6")
  
  Debug.Print "--------------------------------------"
  
  customers.MoveNext
 Wend 'NOT customers.EOF
 
 'std_exec_sp=false -----------------------------------------------------
 'translate Sql 'exec SP(...)' to 'select * from SP(...)'
 'reception of result through recordset
 
 Debug.Print "STD_EXEC_SP=FALSE"
 
 cmd.CommandText = "" 'reset ADODB.Command
 
 cmd.Properties("std_exec_sp") = False
 cmd.CommandText = "exec MAIL_LABEL(:cust_no)"
 cmd.Parameters.Refresh
 
 'goto to first row
 customers.MoveFirst
 
 'recordset for processing rows from SP
 Dim mail_label_rs As ADODB.Recordset
 
 While (Not customers.EOF)
  cmd("cust_no") = customers("cust_no")
  
  Set mail_label_rs = cmd.Execute
  
  'print result
  Debug.Print "cust_no:" & customers("cust_no") & " - " & customers("customer")
  
  While (Not mail_label_rs.EOF)
   Debug.Print "-----------------------"
  
   'COLUMNS
   Debug.Print "line 1:" & mail_label_rs("line1")
   Debug.Print "line 2:" & mail_label_rs("line2")
   Debug.Print "line 3:" & mail_label_rs("line3")
   Debug.Print "line 4:" & mail_label_rs("line4")
   Debug.Print "line 5:" & mail_label_rs("line5")
   Debug.Print "line 6:" & mail_label_rs("line6")
   
   mail_label_rs.MoveNext
  Wend
  
  Debug.Print "--------------------------------------"
  
  mail_label_rs.Close
  customers.MoveNext
 Wend 'NOT customers.EOF
 
 cn.CommitTrans
End Sub 'sample8_3


Назад Вперед