Ver Mensaje Individual
  #10 (permalink)  
Antiguo 24/06/2005, 05:50
jorevale
Invitado
 
Mensajes: n/a
Puntos:
Sigo trabado con esto. A ver si me podéis ayudar.

Lo que quiero lograr es lo siguiente:
- aplicación VB6/Access97
- pantalla que filtra la información (según lo que seleccione el usuario) hacia una ADO con un recordsource where Campo1='Variable1'
- existe un commandbutton modificar que está activo.
(supongamos que el usuario ha encontrado lo que buscaba y quiere modificarlo)
- al presionar sobre cmdmodificar, pretendo que el recordset recupere su estado original ("select * from Tabla1", sin where), pero que el cursor se mantenga con el registro activo para que el usuario lo pueda modificar.
- hay un CampoID que me parece debería servir para ello. Supongamos que existe una variable VID de tipo integer, de modo que yo puedo establecer (antes de desplazar)
VID=recordset!CampoID
para luego de restaurar el recordset original, moverme hacia ese registro, donde CampoID=VID, pero no me sale.
también he intentado emplear la propiedad AbsolutePosition del recordset, llevándola a varible, pero tampoco me sale, pues me toma la AbsolutePosition del recordset filtrado, y no la del original.

He buscado en MSDN online (no tengo otro), pero no encuentro lo que me pueda servir.

La respuesta que me da el amigo Reel, sobre el método move del ADO, donde:
recordset.Move NumRecords, Start
no sé como emplearlo, pues - en tiempo de ejecución - no sé como controlar el numero de records que debe desplazarse el recordset... uff...!!

Podrían ayudarme, porfa?

Bueno, aquí escribo el código completo del commandbutton, por si sirve de algo (estaba intentando sacarlo por el AbsolutePosition, como ya comenté)

y de uno de los DataCombos mediante los que hace el usuario su selección

Private Sub DC_Ope_MouseUp(Index As Integer, Button As Integer, shift As Integer, X As Single, Y As Single)
If VSelect = True Then 'Estamos en un filtro
VOpe = fAvi.DC_Ope(19).Text
'Bloqueando el resto de los commandbuttons
'que pueden ser filtrados
'(para que no me hagan filtros múltiples)
With fAvi 'Todos menos Operarios
'Estableciendo fondo y letra a DC que se filtran
.DC_Loca(17).BackColor = &HFF00&
.DC_Tra(18).BackColor = &HFF00&
.DC_Inc(20).BackColor = &H80000005
.DC_Loca(17).ForeColor = &HFF0000
.DC_Tra(18).ForeColor = &HFF0000
.DC_Inc(20).ForeColor = &HFF0000
'Deshabilitando DC que se filtran
.DC_Loca(17).Locked = True
.DC_Tra(18).Locked = True
.DC_Inc(20).Locked = True
'Seteando las variables de búsquedas a EMPTY
VLoca = ""
VTra = ""
VInc = ""
End With
datPrimaryRS.RecordSource = "Select * from AVISOS where Operarios='" & VOpe & "'"
datPrimaryRS.Refresh
End If
End Sub


Private Sub cEdit_Click()
'Si estoy en un filtro
If VSelect = True Then
'Pasos incluídos por el filtro
'Determinando la posición en el recordset
VAbsolutePosition = datPrimaryRS.Recordset.AbsolutePosition
'Estableciendo estado inicial de los commandbuttons
cNew.Enabled = True
cEdit.Enabled = True
cSelect.Enabled = True
cEnd.Enabled = True
cRefresh.Enabled = True
With fAvi
'Colores de los textbox iniciales
.tID_Aviso(2).BackColor = &HFFFFFF
.tID_Aviso(3).BackColor = &HFFFFFF
.tFilial(4).BackColor = &HFFFFFF
.tID_Aviso(3).Text = "MOVIMIENTO"
'Estableciendo fondo y letra a DC que se filtran
.DC_Loca(17).BackColor = &HFF00&
.DC_Tra(18).BackColor = &HFF00&
.DC_Inc(20).BackColor = &H80000005
.DC_Ope(19).BackColor = &H80000005
.DC_Loca(17).ForeColor = &HFF0000
.DC_Tra(18).ForeColor = &HFF0000
.DC_Inc(20).ForeColor = &HFF0000
.DC_Ope(19).ForeColor = &HFF&
'Deshabilitando DC que se filtran
.DC_Loca(17).Locked = True
.DC_Tra(18).Locked = True
.DC_Inc(20).Locked = True
.DC_Ope(19).Locked = True
End With
'Seteando las variables de búsquedas a EMPTY
VOpe = ""
VLoca = ""
VTra = ""
VInc = ""
'Vacío el filtro
datPrimaryRS.RecordSource = ""
'Establezco el nuevo recordset
datPrimaryRS.RecordSource = "Select * from AVISOS Order by ID_AVISO"
'Refresco la pantalla
datPrimaryRS.Refresh
' datPrimaryRS.Recordset.AbsolutePosition = VAbsolutePosition

'*****Procedimiento normal (no filtrado)*****
VEM = "M"
On Error GoTo AddErr
Entra_En_Modificación
fAvi.tObs(6).SetFocus
Else
'Procedimiento normal (no filtrado)
VEM = "M"
On Error GoTo AddErr
Entra_En_Modificación
fAvi.tObs(6).SetFocus
End If
'Seteando VSelect a False
VSelect = False
Exit Sub
AddErr:
MsgBox Err.Description
End Sub