RE:fallo codigo con filtro
hola enrique, estoy intentando hacer una Agenda comercial
tengo un formulario principal llamado "Gestion" y dentro de el 2 subformularios uno llamado "subtarea" y otro llamado "Acciones". El formulario "Gestion" es el principal que siempre esta abierto y desde el que hacemos todas las gestiones, no esta pensado para introducir datos sino que es el que muestra todas las agendas de los comerciales.
Tanto desde el propio formuario"Gestion" como el subformulario "subtares" lo tengo configurado en Tecla vista rapida a SI y en el evento press Key ejecuto el siguiente codigo:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
On Error GoTo Err_KeyDown
Dim ControlActivo As Control
Set ControlActivo = Screen.ActiveControl
If ControlActivo.ControlType = acTextBox Then
Dim stLinkCriteria As String
Dim stDocName As String
'aquí tu codigo
If KeyCode = 114 Then
DoCmd.OpenForm "Tareas", acNormal, "", "", acAdd, acNormal
Forms!TAREAS.Caption = "DANDO DE ALTA UNA TAREA"
End If
If KeyCode = 115 Then
stDocName = "Tareas"
stLinkCriteria = "[Id_Tarea]=" & Me![Id_Tarea]
DoCmd.OpenForm stDocName, , , stLinkCriteria
Forms!TAREAS.Caption = "MODIFICANDO ALBARAN" & " Nº " & Me.[Texto152]
End If
If KeyCode = 116 Then
stDocName = "Tareas1"
stLinkCriteria = "[Id_Tarea]=" & Me![Id_Tarea]
DoCmd.OpenForm "Tareas1", acNormal, "", "", acAdd, acNormal
Forms!tareas1.Caption = "ALTA LINEAS DE TRABAJO"
End If
End If
Err_KeyDown:
End Sub
Como veras abro el formulario "Tareas" que es el que utilizo para la modificacion de una Tarea como el dar una de alta nueva, y es estos datos son los que se muestran el el subformulario "subtarea".
El codigo que ejecuto en el Formulario "Tareas" es el siguiente
En el boton
Private Sub Comando72_Click()
On Error GoTo Err_Comando72_Click
Dim rs As Recordset
If Me.Texto116 > 1 And Me.Cod_Local_Tarea <> 0 And Me.Cod_Local_Tarea <> 1 Then
MsgBox "ESTE LOCAL YA TIENE UNA TAREA ACTIVA", vbCritical, "DUPLICADOS"
Me.Undo
DoCmd.Close
Set ControlActivo = Screen.ActiveControl
DoCmd.SelectObject acForm, "GESTION", False
DoCmd.GoToControl "Texto137"
DoCmd.Requery "subtarea"
DoCmd.GoToControl "subtarea"
Set rs = CurrentDb.OpenRecordset("Tareas")
rs.Close
Set rs = Nothing
Err_Comando72_Click:
End Sub
-----Ejemplo de Trabajo----
Abro el formulario "Gestion" y me muevo al subformulario Subtarea donde tengo todas las visitas pendientes de realizar por mis comerciales que son 9 y entonces supongamos que tengo 80 o 90 registros (a proposito los subformularos son en hoja de Datos y ademas cuando muevo el foco de un registro a otro hago esto para que el registro activo este seleccionado:DoCmd.RunCommand acCmdSelectRecord) entonces imaginemos que estoy en el registro 32 y desde el presonamos el {F3} para dar de alta una terea nueva, entonces unavez dada la terea de alta cierro el formulario
con el Comando72_Click y vuelvo al Formulario "Gestion"Subformulario"subtarea" y el registro activo del subformulario "subtarea" sigue en el registro 32 ,hasta aqui correcto
PREO MI PROBLEMA EMPIEZA CUANDO........
viene un comercial a liquidar su agenda entonces en el formulario "Gestion" tengo un combo para filtrar al comercial en cuestion con el siguiente codigo:
Private Sub Cuadro_combinado124_Change()
On Error GoTo Err_Change
If Me.Cuadro_combinado124 <> "0" Then
Me.Cuadro_combinado163.Visible = True
Me.subtarea.Form.Filter = "Ruta_Cial=" & Me.Cuadro_combinado124.Text
Me.subtarea.Form.FilterOn = True
Me.subtarea.Form.Recalc
DoCmd.RunCommand acCmdSelectRecord
End If
If Me.Cuadro_combinado124.Value = "0" Or Null Then
Me.Cuadro_combinado163.Visible = False
Me.subtarea.SetFocus
DoCmd.RunCommand acCmdRemoveFilterSort
DoCmd.RunCommand acCmdSelectRecord
End If
Me.Cuadro_combinado163.Requery
Me.Cuadro_combinado163.Value = ""
DoCmd.Requery "subtarea"
DoCmd.GoToControl "subtarea"
DoCmd.RunCommand acCmdSelectRecord
Err_Change:
End Sub
es aqui donde falla ya que cuando efectuo los mismos pasos que te explico anteriormente es cuando el cursor se posiciona en el registro 1 y no en el que tenia acttivo y me esta volviendo loco ya que en cada momento tengo que estar buscando el registro del que estabamos hablando
Espero haberme explicado bien y quiero agradecerte de antemano tu interes en ayudarme