VB 6.0 ADODC y EVENTOS Recordset

Iniciado por Partel, 18 Enero 2013, 21:04 PM

0 Miembros y 2 Visitantes están viendo este tema.

Partel

Estoy tratando de trabajar con adodc y eventos, para poder conocer cuando un registro cambia de posición y el motivo.

Un poco del código..

Código (vb) [Seleccionar]


Public Sub Abrir_BD()

 
    sBase = "C:\BaseDatos" & "\BD_97.mdb"


    Set rstTrab = Nothing
    Set cnn = Nothing

    Set cnn = New Adodb.Connection
    Set rstTrab = New Adodb.Recordset

    cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & sBase
    rstTrab.Open ConsulTrab, cnn, adOpenKeyset, adLockBatchOptimistic

    If rstTrab.EOF And rstTrab.BOF Then
        Cuantos = 0
        Beep
    Else
        Beep
    End If
    Cuantos = rstTrab.RecordCount
   

End Sub



Private Sub rstTrab_MoveComplete(ByVal adReason As Adodb.EventReasonEnum, ByVal pError As Adodb.Error, adStatus As Adodb.EventStatusEnum, ByVal pRecordset As Adodb.Recordset)
On Local Error Resume Next
   
    Adodc1.Caption = pRecordset.AbsolutePosition & " de " & pRecordset.RecordCount
end sub

Private Sub rstTrab_WillChangeField(ByVal cFields As Long, ByVal Fields As Variant, adStatus As Adodb.EventStatusEnum, ByVal pRecordset As Adodb.Recordset)

end sub

Private Sub rstTrab_WillChangeRecord(ByVal adReason As Adodb.EventReasonEnum, ByVal cRecords As Long, adStatus As Adodb.EventStatusEnum, ByVal pRecordset As Adodb.Recordset)

end sub


Intento conocer el valor de adReason, etc  para poder tomar decisiones de que ha ocurrido y que hacer a continuación.
Por ejemplo UpdateBatch o CancelBatch..

Pero no tengo claro los valores que pueden devolverme esas variables.

Pretendo que si hay cambios en el registro, antes de grabarlos solicitar que el usuario conteste a un textbox con YES.


Podeis encenderme una LUZ???


Saludos






seba123neo

te recomiendo no trabajar con el control adodc, esta en desuso y obsoleto, lo que tenes que usar es ADO, pero desde codigo, el objeto adodc no es mas que la representacion de un recodset, esos recordset los podes declarar directamente desde el codigo haciendo algo como:

Código (vb) [Seleccionar]
Dim vRs AS ADODB.Recordset

mira este ejmplo de ABM simple, usa ADO, pero desde codigo, sin controles y una grilla para mostrar los registros, eso de usar flechitas para pasar de un registro a otro no se usa mas.

Formulario ABM con Access y Ado
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

Partel

Gracias, por responder y de una forma rapida.

Es un buen ejemplo..

En mi caso utilizar un listview, lo convertiría en casi una hoja excell, con muchos campos, tengo 48. y me daría una visión poco conpacta. Es muy buena idéa para una visión general.

Lo he planificado como una FICHA (form) por" trabajo" dividido el form en dos partes
En la superior :Datos generales descriptivos del Trabajo
En la inferior   :del Form ( la mitad +/- y hasta abajo) he colocado un SSTab con 3 pestañas,
1 Fechas, 2 Datos Económicos, 3 Link a ficheros.

El adodc1, solo lo utilizo para poder desplazar de reg en reg.
Por código le asigo el source a mi rsttrab y este a mi conexión.
Así cada vez que me desplazo a un nuevo REG del recordset, me presenta todos los datos de cada trabajo. ¿me explico?.

No veo la diferencia entre el ADODC y el ADO, que me comentas..
¿donde me ilustro??

Saludos...

MCKSys Argentina

La diferencia esta en que el ADODC es un control y ADODB es una lib.

El control no se ha actualizado y ya es obsoleto (http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.compatibility.vb6.adodc.aspx), en cambio ADODB si lo ha hecho.

En resumen: empezaron juntos, pero el segundo sigue vigente, el otro no.

Al menos eso es lo que me queda claro luego de googlear un rato...  :P

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


Partel


La conex y el rst los hago Adodb.

    Set cnn = New Adodb.Connection
   Set rstTrab = New Adodb.Recordset

   cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & sBase
   rstTrab.Open ConsulTrab, cnn, adOpenKeyset, adLockBatchOptimistic

Luego  utilizo esto  Set Adodc1.Recordset = rst
Y por codigo enlazo los text y campos del rst.

Así me desplazo por los registros..

Entiendo por la respuesta que NO debo utilizar el ADODC.

¿ ¿ que utilizo entonces?

Data List Control 6.0  msdatlst.ocx ???

Gracias, Saludos