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..
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
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:
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 (http://www.recursosvisualbasic.com.ar/htm/utilidades-codigo-fuente/formulario-abm-con-access-ado.htm)
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...
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 (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!
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