Problema de sintaxis

Tengo un problema para buscar un registro en base a dos campos de un formulario (IdAsunto y Año). Me funcionaba cuando lo buscaba por un solo registro (IdAsunto) pero añadí Dim Año_seleccionado, Año_seleccionado = Me [Año] y utilicé la búsqueda por dos campos con esto:
Private Sub BUSCAR_ASUNTO_Click()
On Error GoTo NASUNTO_Err
Dim stdocname As String
Dim ASUN_seleccionados As String
Dim Año_seleccionados As String
ASUN_seleccionados = Me![IdAsunto]
Año_seleccionado = Me![Año]
DoCmd.OpenForm "Asunto_Nuevo"
DoCmd.ShowAllRecords   'elimino filtro del data entry cuando se añade una nueva empresa
  Dim rsMyrs As Recordset
  Set rsMyrs = Forms![Asunto_Nuevo].RecordsetClone
  'busqueda por un campo
  'rsMyrs.FindFirst "[IdAsunto]=" & ASUN_seleccionados
  ' busqueda por dos campos
  rsMyrs.FindFirst "(" & "[" & IdAsunto & "]='" & ASUN_seleccionados & "'" _
  & " AND " & "[" & Año & "]='" & Año_seleccionado & "'" & ")"
  If rsMyrs.NoMatch = False Then
  Forms![Asunto_Nuevo].Bookmark = rsMyrs.Bookmark 'orienta el formulario segun marcador de memoria encontrado
  Else
  MsgBox "Registro no encontrado"
  DoCmd.RunMacro "ultimo"
End If
rsMyrs.Close
Forms![Asunto_Nuevo].SetFocus
Forms![Asunto_Nuevo]![IdDiligencia].SetFocus
NASUNTO_Err:
    Dim Mensaje1, Estilo, Respuesta
    Mensaje1 = "INTRODUCIR NÚMERO"    ' Define el mensaje.
       Estilo = vbOKOnly   ' Define los botones.
        Select Case Err.Number
        Case 94       ' ya hay una carpeta de ese asunto.
           Respuesta = MsgBox(Mensaje1, Estilo)
        End Select
End Sub
No me funciona y creo que el error es de sintaxis en:
rsMyrs.FindFirst "(" & "[" & IdAsunto & "]='" & ASUN_seleccionados & "'" _
  & " AND " & "[" & Año & "]='" & Año_seleccionado & "'" & ")"
¿Me podéis ayudar? ¿O darme una opción alternativa? Gracias.

1 Respuesta

Respuesta
1
Estas 'sacando' el nombre del campo de filtro.
Tienes tantas comillas y concatenadores que se hace un poco difícil de entender, pero aquí va una forma de hacerlo.
rsMyrs.FindFirst "([IdAsunto]='" & ASUN_seleccionados & "' AND [Año]='" & Año_seleccionado & "')"
Ojo, según ese código, Año es un campo de tipo texto. SI no lo fuera hazlo así (he quitado los apostrofes que delimitan el valor de Año_seleccionado):
rsMyrs.FindFirst "([IdAsunto]='" & ASUN_seleccionados & "' AND [Año]=" & Año_seleccionado & ")"
Xavi
Bien, perfecto!
Solo he tenido que quitar las dos comillas sueltas que tenía la expresión para texto tipo número, quedando así:
rsMyrs.FindFirst "([IdAsunto]=" & ASUN_seleccionados & " AND [Año]=" & Año_seleccionado & ")"
Muchas gracias, de nuevo Xavi

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas