Andre’s Weblog

OBJETO COMMAND- VB6

Posteado por: andre223 en: Noviembre 4, 2008

ADO te permite resolver el problema de manera sencilla, para eso tiernes que utilizar el objeto Command para la manipulación de procedimientos almacenados (Se puede hacer con cualquier otro objeto, como son connection o recordset, pero no ofrecen tanta funcionalidad cmo command para los procemientos almacenados, en especial para el uso de parametros).
Dim conn As ADODB.Connection
Dim cmd As ADODB.Command
Dim rs As ADODB.Recordset
Private Sub Command1_Click()
Dim constring As String
connstring = “Provider=SQLOLEDB;Data Source=localhost;User Id=sa;Password=;Connect Timeout=3;network library=dbmssocn;”
Set conn = New ADODB.Connection
conn.ConnectionString = connstring
conn.Open

Set cmd = New ADODB.Command
cmd.ActiveConnection = conn
cmd.CommandType = adCmdStoredProc
cmd.CommandText = “sp_server_info”
Set rs = cmd.Execute
While Not rs.EOF
Debug.Print rs.Fields(0) & Chr(9) & rs.Fields(1) & Chr(9) & rs.Fields(2)
rs.MoveNext
Wend

‘Para trabajar con parametros creas un objeto Parameter y lo atachas al Command actual.
Set prm1 = cmd.CreateParameter(“dbname”, adBSTR, adParamInput, 10, “master”)
cmd.Parameters.Append prm1
cmd.CommandText = “sp_helpdb”
Set rs = cmd.Execute
While Not rs.EOF
Debug.Print rs.Fields(0) & Chr(9) & rs.Fields(1) & Chr(9) & rs.Fields(2)
rs.MoveNext
Wend
End Sub

Método Find, solo acepta 1 parámetro

Posteado por: andre223 en: Octubre 3, 2008

Utilice la propiedad de filtro de ADO y el método de clonación. Así, se puede encontrar el marcador correcto en el clon sin que ello afecte a las filas que están visibles en el conjunto de registros.

Un ejemplo de código que muestra este método siguiente:

      Dim cn As ADODB.Connection
      Dim rs As ADODB.Recordset

      'Create a variable for the Cloned Recordset.
      Dim clone_rs As ADODB.Recordset

      Set cn = CreateObject("ADODB.Connection")
      Set rs = CreateObject("ADODB.Recordset")

      With cn
       .ConnectionString = "PROVIDER=SQLOLEDB;" & _
                           "DATA SOURCE=<server>;" & _
                           "USER ID=<uid>;" & _
                           "PASSWORD=<pwd>;" & _
                           "INITIAL CATALOG=<init_cat>"
       .Open
      End With

      With rs
       .CursorLocation = adUseClient
       .CursorType = adOpenStatic
       .LockType = adLockBatchOptimistic
       .ActiveConnection = cn
       .Open "select * from authors"
      End With

      'A clone recordset has some benefits :
      ' - Very little overhead, it is only an object variable containning a
      '   reference to the original recordset.
      ' - It does not require another round trip to the server.
      ' - It maintains separate but shareable bookmarks with the original.
      ' - Closing and filtering clones does not affect the original or
      '   other clones.

      'Create a clone of the recordset.
      Set clone_rs = Rs.Clone
      'Apply a filter to the clone using the criteria passed in.
      clone_rs.Filter = "state = 'CA' AND city = 'Oakland'"

      If clone_rs.EOF Or clone_rs.BOF Then
      'If criteria not found move to EOF; just as ADO's Find
       rs.MoveLast
       rs.MoveNext
      Else
      'If found, move the Recordset's bookmark to the same location as the
      'clone's bookmark.
      rs.Bookmark = clone_rs.Bookmark
      End If

      clone_rs.Close
      Set clone_rs = Nothing

      rs.Close
      cn.Close

      Set rs = Nothing
      Set cn = Nothing

      End Sub

fuente: http://support.microsoft.com/kb/195222/es

Definición del tipo de Cerrojo

Posteado por: andre223 en: Octubre 2, 2008

Definición del tipo de Cerrojo

Entendemos como cerrojo el tipo de bloqueo que efectuaremos en la base de datos cuando modifiquemos un recordset, a fin de evitar que dos o mas usuarios accedan a modificar un mismo registro a la vez.

El tipo de cerrojo lo definiremos mediante la propiedad LockType, los posibles valores son:

Denominación valor Caracteristicas
adLockReadOnly 1 Es el defecto; no permite al usuario modificar los datos de la tabla.
dLockPessimistic 2 Cuando se abra la tabla nadie mas podrá hacerlo, este modo nos asegura la plena integridad de los datos.
adLockOptimistic 3 Cierra la tabla a los demás usuarios cuando se invoque al método Update del objeto recordset; de este modo la Base de datos quedará bloqueada menos tiempo que con el método anterior.