Access - Error 3601

   
Vista:

Error 3601

Publicado por Luisa (4 intervenciones) el 25/03/2010 19:42:49
Hola a todos

Tengo el siguiente código, que me funciona perfectamente si lo coloco dentro de un botón, en el formulario principal, pero tengo que usarlo en un subformulario. Me falla la siguiente instrucción

Set rstNotas = dbsSeguimiento.OpenRecordset(strSQL)

cuando ejecuto el programa, me aparece este error:

Pocos parámetros. Se esperaba <número>. (Error 3061)
Esta consulta de parámetros requiere el número de parámetros especificado, que no suministró. Indique el número de parámetros esperado y vuelva a ejecutar la consulta.


Lo que hace este código es seleccionar en un subformulario, todos los registros que se correscondan con la clave primaria del formulario principal. Una vez seleccionados, pone en false todas las casillas de verificación. Al seleccionar una fecha, pone en true el registro en cuestión.

Gracias de antemano,
Luisa


Private Sub Fecha_Change()
Dim dbsSeguimiento As DAO.Database
Dim rstNotas As DAO.Recordset
Dim strSQL As String
Dim intI As Integer
Dim ClaveContacto As Integer

'On Error GoTo ErrorHandler

If Me.Fecha = Date Then
ClaveContacto = Me.IdContactos

Set dbsSeguimiento = CurrentDb

'Abre un recordset con todos los registros de tbSeguimiento
strSQL = "SELECT * FROM tbSeguimiento WHERE (((tbSeguimiento.IdContactos)=ClaveContacto));"

>>>> Set rstNotas = dbsSeguimiento.OpenRecordset(strSQL) <<<<

'Si el recrodset está vacío, exit.
If rstNotas.EOF Then Exit Sub
intI = 1
With rstNotas
Do Until .EOF
.Edit
![UltimoComentario] = False

.Update
.MoveNext
intI = intI + 1
Loop
End With

rstNotas.Close
dbsSeguimiento.Close

Set rstNotas = Nothing
Set dbsSeguimiento = Nothing

Exit Sub

'ErrorHandler:
'MsgBox "Error #: " & Err.Number & vbCrLf & vbCrLf & Err.Description

Me.Refresh

Me.UltimoComentario = True
End If
End Sub
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

RE:Error 3601

Publicado por Juan M. Afan de Ribera (16 intervenciones) el 29/03/2010 17:56:57
Hola,

debes de sacar el valor ClaveContacto "fuera" de la cadena SQL que contiene la consulta para abrir el recordset.

Por ejemplo, la cadena que se recibe para abrir el recordset es esta:

SELECT * FROM tbSeguimiento WHERE (((tbSeguimiento.IdContactos)=ClaveContacto));

y seguramente, tú lo que quieres que aparezca no es el valor "ClaveContacto", sino el valor numérico de la variable ClaveContacto, no?. Algo como:

(en el caso de que ClaveContacto tenga el valor 4)

SELECT * FROM tbSeguimiento WHERE (((tbSeguimiento.IdContactos)=4));

entonces, la cadena SQL la debes formar de la siguiente manera:

strSQL = "SELECT * FROM tbSeguimiento WHERE (((tbSeguimiento.IdContactos)= " & ClaveContacto & "));"

Imagino que eso es lo que está pasando. Prueba a ver si funciona de esta otra manera.

Juan M. Afan de Ribera
:-)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar