Visual Basic - Problema sincronizando TreeView con base de datos

Life is soft - evento anual de software empresarial
 
Vista:

Problema sincronizando TreeView con base de datos

Publicado por Jose (1 intervención) el 10/10/2007 12:54:33
Hola, tengo el siguiente problema: Quiero sincronizar un TreeView con una base de datos, y para ello quiero que, al modificar un registro de la base de datos, de una tabla con la información de los nodos, el programa modifique automáticamente dicho nodo en el TreeView (lo añada, lo borre, le cambie el texto...). Es decir, que primero se actualice la base de datos y que ante una actualización de ésta, salte la rutina que modifica el TreeView.

Lo intento hacer de este modo: Utilizando un recordset con WithEvents, modifico el recordset con la nueva información y luego hago Update para actualizar los datos en la base de datos, y luego con el evento RecordChangeComplete trato de que después de realizarse el Update se ejecute la rutina que actualice el TreeView (la cual funciona utilizando un nuevo recordset que lee la base de datos).

Si queréis más detalles, viene a ser esto:

Set mrsNodes = New ADODB.Recordset
mrsNodes.Open mcmdNode, , adOpenForwardOnly, adLockPessimistic

mrsNodes.AddNew Array("Node", "Text", "Type", "Parent", "Indent", "Order"), _
Array(iNewId, Text, XType, Parent, iParentIndent + 1, iChildren + 1)

mrsNodes.Update

Private Sub mrsNodes_RecordChangeComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal cRecords As Long, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
If adReason = adRsnUpdate Then
UpdateNodes
End If
End Sub

Sin embargo la cosa no funciona, porque al ejecutarse mi rutina para actualizar el TreeView (UpdateNodes en el ejemplo) se ve que la base de datos aún no ha sido completamente actualizada y aún no contiene los nuevos datos, y deben pasar unos segundos para que la rutina UpdateNodes si que actualice la base de datos correctamente.

¿Alguien me puede ayudar? Cómo puedo hacer que mi rutina UpdateNodes salte ya cuando la base de datos haya sido completamente actualizada.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder