Error 3061. Pocos parámetros. Se esperaba 1

Estoy haciendo cambios en la web, y me encuentro con este problema en los desplegables:

Esto es donde falla:

Estoy revisando y haciendo pruebas, pero no doy con el error. He leído que puede ser que el campo no exista, pero he comprado ese campo, y sí existe.

Si hay alguien que me pueda echar un cable, y necesita más información, que me diga.

2 respuestas

Respuesta
2

Diego, con lo que muestras es imposible saber qué está fallando, porque no sabemos el valor que toma la variable miRowSce ni en qué línea de código se genera.

Como sugerencia, para esta y otros errores que tengas, es que te acostumbres a usar las herramientas que incorpora el editor de VBA para depurar el código, como la "ejecución paso a paso", que te permite ir ejecutando el código línea a línea y ver si todo va como debe, analizando si las variables que manejas toman los valores correctos o no...(con dejar el cursor encima de ellas te muestra el valor que tengan en ese momento), la ventana inmediato, donde puedes imprimir el valor de las variables que tengan un valor muy largo (como este caso) ...

A lo que voy, si antes de la línea marcada en amarillo pones:

Debug. Print miRowSce

Y abres la ventana inmediato (con Ctrl+G), verás la SQL que crea tu código y verás si te falla algo (como alguna variable que no cogió el valor adecuado...)

Solucionado. Tenía que cambiar:

[Forms].[03-E Dialogo IVA repercutido (Clientes)].[apcc].[value]

por:

'" & apcc.Value & "'

Y lo mismo para cc y acc.

Mil gracias.

Respuesta
1
Option Compare Database
Public cmbCategoria As New FindAsYouTypeCombo
Public cmbCliente As New FindAsYouTypeCombo
Public cmbAno As New FindAsYouTypeCombo
Public cmbTrimestre As New FindAsYouTypeCombo
Private Sub Form_Load()
cmbCategoria.InitalizeFilterCombo Me.cc, "Categoría", FromBeginning, True, True
cmbCliente.InitalizeFilterCombo Me.apcc, "Cliente", FromBeginning, True, True
cmbAno.InitalizeFilterCombo Me.acc, "Año", FromBeginning, True, True
cmbTrimestre.InitalizeFilterCombo Me.tcc, "Expr1", FromBeginning, True, True
End Sub
Private Sub Etiqueta30_Click()
Dim MiApro As String
Dim MiCategoría As String
Dim MiAño As String
Dim MiTrimestre As String
Dim miFiltro As String
Dim MiArgumento As String
Dim MisOpciones As String
miFiltro = "" 'Inicializamos el filtro
If Me.Apro.Value <> 1 Then
    If IsNull(Me.apcc.Value) Then
        MsgBox "Debe seleccionar el proveedor", vbCritical, "ERROR"
        Exit Sub
    End If
        MiApro = Me.apcc.Value
        miFiltro = miFiltro & " AND " & "[Código2]='" & MiApro & "'"
End If
If Me.Categoría.Value <> 1 Then
    If IsNull(Me.cc.Value) Then
        MsgBox "Debe seleccionar la categoría", vbCritical, "ERROR"
        Exit Sub
    End If
        MiCategoría = Me.cc.Value
        miFiltro = miFiltro & " AND " & "[Código1]='" & MiCategoría & "'"
End If
If Me.Año.Value <> 1 Then
    If IsNull(Me.acc.Value) Then
        MsgBox "Debe seleccionar el año", vbCritical, "ERROR"
        Exit Sub
    End If
    MiAño = Me.acc.Value
    miFiltro = miFiltro & " AND " & "[Año]='" & MiAño & "'"
End If
If Me.Trimestre.Value <> 1 Then
    If IsNull(Me.tcc.Value) Then
        MsgBox "Debe seleccionar el trimestre", vbCritical, "ERROR"
        Exit Sub
    End If
    MiTrimestre = Me.tcc.Value
    miFiltro = miFiltro & " AND " & "[Trimestre]='" & MiTrimestre & "'"
End If
'------------ CAPTION DEL INFORME -----------------------------------------
MiArgumento = " - "
If Me.Año.Value = 2 Then
    MiArgumento = MiArgumento & Me.acc & " "
    MisOpciones = MisOpciones & "a"
End If
If Me.Trimestre.Value = 2 Then
    MiArgumento = MiArgumento & "T" & Me.tcc & " "
    MisOpciones = MisOpciones & "t"
End If
If Me.Categoría.Value = 2 Then
    MiArgumento = MiArgumento & DLookup("Categoría", "01-A Categorías", "[Código de la categoría]='" & Me.cc.Value & "'") & " "
    MisOpciones = MisOpciones & "c"
End If
If Me.Apro.Value = 2 Then
    If Me.Categoría.Value = 2 Then
        MiArgumento = MiArgumento & "/ " & DLookup("Cliente", "01-B Clientes", "ID_Cliente='" & Me.apcc.Value & "'") & " "
    Else
        MiArgumento = MiArgumento & DLookup("Cliente", "01-B Clientes", "ID_Cliente='" & Me.apcc.Value & "'") & " "
    End If
    MisOpciones = MisOpciones & "p"
End If
MiArgumento = MiArgumento & MisOpciones & Len(MisOpciones)
'---------------------------------------------------------------------------
If Len(miFiltro) > 0 Then
        miFiltro = Right(miFiltro, Len(miFiltro) - 4)
End If
If miFiltro = "" Then
        DoCmd.OpenReport "04-A Ingresos", acViewPreview
Else
        DoCmd.OpenReport "04-A Ingresos", acViewPreview, , miFiltro, , MiArgumento
End If
DoCmd.Close acForm, Me.Name
End Sub
Private Sub Categoría_AfterUpdate()
    Select Case Me.Categoría.Value
        Case 1
            Me.cc.Visible = False
        Case 2
            Me.cc.Visible = True
    End Select
    Me.cc.Value = ""
End Sub
Private Sub cc_AfterUpdate()
Me.apcc.Value = ""
Me.apcc.Requery
Me.apcc.Visible = False
Me.Apro.Value = 1
Me.acc.Value = ""
Me.acc.Requery
Me.acc.Visible = False
Me.Año.Value = 1
Me.tcc.Value = ""
Me.tcc.Requery
Me.tcc.Visible = False
Me.Trimestre.Value = 1
End Sub
Private Sub Apro_AfterUpdate()
    Dim miRowSce As String
    If Me.Apro = 1 Then
        Me.apcc.Visible = False
    Else
        Me.apcc.Visible = True
        Me.apcc = Null 'No es necesario, pero si haces pruebas a lo loco agradecerás que te vaya borrando el valor seleccionado.
        If Me.Categoría = 1 Then
            miRowSce = "SELECT [02- Diálogo IVA repercutido].Cliente, [02- Diálogo IVA repercutido].ID_Cliente" _
                & " FROM [02- Diálogo IVA repercutido]" _
                & " GROUP BY [02- Diálogo IVA repercutido].Cliente, [02- Diálogo IVA repercutido].ID_Cliente"
        Else
            miRowSce = "SELECT [02- Diálogo IVA repercutido].Cliente, [02- Diálogo IVA repercutido].ID_Cliente, [02- Diálogo IVA repercutido].[Código de la categoría]" _
                & " FROM [02- Diálogo IVA repercutido]" _
                & " GROUP BY [02- Diálogo IVA repercutido].Cliente, [02- Diálogo IVA repercutido].Id_Cliente," _
                & " [02- Diálogo IVA repercutido].[Código de la categoría]" _
                & " HAVING ((([02- Diálogo IVA repercutido].[Código de la categoría])=[Forms].[03-E Dialogo IVA repercutido (Clientes)].[cc].[value]))"
        End If
    End If
    Me.apcc.RowSource = miRowSce
    Me.apcc.Requery
    cmbCliente.RowSource = miRowSce
End Sub
Private Sub apcc_AfterUpdate()
Me.acc.Value = ""
Me.acc.Requery
Me.acc.Visible = False
Me.Año.Value = 1
Me.tcc.Value = ""
Me.tcc.Requery
Me.tcc.Visible = False
Me.Trimestre.Value = 1
End Sub
Private Sub Año_AfterUpdate()
    Dim miRowSce As String
    If Me.Año = 1 Then
        Me.acc.Visible = False
    Else
        Me.acc.Visible = True
        Me.acc = Null 'No es necesario, pero si haces pruebas a lo loco agradecerás que te vaya borrando el valor seleccionado.
        If Me.Categoría = 1 And Me.Apro = 1 Then
            miRowSce = "SELECT Year([Fecha de la factura]) AS Año " _
                & "FROM [01-E Compras] " _
                & " GROUP BY Year([Fecha de la factura]);"
        End If
        If Me.Categoría = 2 And Me.Apro = 1 Then
            miRowSce = "SELECT Year([Fecha de la factura]) AS Año, [01-E Compras].Código " _
                & "FROM [01-E Compras]" _
                & "GROUP BY Year([Fecha de la factura]), [01-E Compras].Código" _
                & " HAVING ((([01-E Compras].Código)=[Forms].[03-E Dialogo IVA repercutido (Clientes)].[cc].[Value]));"
        End If
        If Me.Categoría = 1 And Me.Apro = 2 Then
            miRowSce = "SELECT Year([Fecha de la factura]) AS Año, [01-E Compras].ID_Cliente " _
                & "FROM [01-E Compras]" _
                & "GROUP BY Year([Fecha de la factura]), [01-E Compras].ID_Cliente" _
                & " HAVING ((([01-E Compras].ID_Cliente)=[Forms].[03-E Dialogo IVA repercutido (Clientes)].[apcc].[value]));"
        End If
        If Me.Categoría = 2 And Me.Apro = 2 Then
            miRowSce = "SELECT Year([Fecha de la factura]) AS Año, [01-E Compras].ID_Cliente, [01-E Compras].Código " _
                & "FROM [01-E Compras]" _
                & "GROUP BY Year([Fecha de la factura]), [01-E Compras].ID_Cliente, [01-E Compras].Código" _
                & " HAVING ((([01-E Compras].ID_Cliente)=[Forms].[03-E Dialogo IVA repercutido (Clientes)].[apcc].[Value]) AND (([01-E Compras].Código)=[Forms].[03-E Dialogo IVA repercutido (Clientes)].[cc].[Value]));"
        End If
    End If
    Me.acc.RowSource = miRowSce
    Me.acc.Requery
    cmbAno.RowSource = miRowSce
End Sub
Private Sub acc_AfterUpdate()
Me.tcc.Value = ""
Me.tcc.Requery
Me.tcc.Visible = False
Me.Trimestre.Value = 1
End Sub
Private Sub Trimestre_AfterUpdate()
    Dim miRowSce As String
    If Me.Trimestre = 1 Then
        Me.tcc.Visible = False
    Else
        Me.tcc.Visible = True
        Me.tcc = Null 'No es necesario, pero si haces pruebas a lo loco agradecerás que te vaya borrando el valor seleccionado.
        If Me.Categoría = 1 And Me.Apro = 1 And Me.Año = 1 Then
            miRowSce = "SELECT [01-D Trimestres].Trimestre & ' trimeste' AS Expr1," _
                & " [01-D Trimestres].[Código del trimestre] FROM [01-D Trimestres] INNER JOIN [01-E Compras]" _
                & " ON [01-D Trimestres].[Código del trimestre] = [01-E Compras].Trimestre" _
                & " GROUP BY [01-D Trimestres].Trimestre & ' trimeste', [01-D Trimestres].[Código del trimestre]" _
                & " ORDER BY [01-D Trimestres].[Código del trimestre]"
        End If
        If Me.Categoría = 2 And Me.Apro = 1 And Me.Año = 1 Then
            miRowSce = "SELECT [01-D Trimestres].Trimestre & ' trimeste' AS Expr1," _
                & " [01-D Trimestres].[Código del trimestre] FROM [01-D Trimestres] INNER JOIN [01-E Compras]" _
                & " ON [01-D Trimestres].[Código del trimestre] = [01-E Compras].Trimestre" _
                & " WHERE ((([01-E Compras].Código)=[Forms].[03-E Dialogo IVA repercutido (Clientes)].[cc].[Value]))" _
                & " GROUP BY [01-D Trimestres].Trimestre & ' trimeste', [01-D Trimestres].[Código del trimestre]" _
                & " ORDER BY [01-D Trimestres].[Código del trimestre]"
        End If
        If Me.Categoría = 1 And Me.Apro = 2 And Me.Año = 1 Then
            miRowSce = "SELECT [01-D Trimestres].Trimestre & ' trimeste' AS Expr1," _
                & " [01-D Trimestres].[Código del trimestre] FROM [01-D Trimestres] INNER JOIN [01-E Compras]" _
                & " ON [01-D Trimestres].[Código del trimestre] = [01-E Compras].Trimestre" _
                & " WHERE ((([01-E Compras].ID_Cliente)=[Forms].[03-E Dialogo IVA repercutido (Clientes)].[apcc].[Value]))" _
                & " GROUP BY [01-D Trimestres].Trimestre & ' trimeste', [01-D Trimestres].[Código del trimestre]" _
                & " ORDER BY [01-D Trimestres].[Código del trimestre]"
        End If
        If Me.Categoría = 2 And Me.Apro = 2 And Me.Año = 1 Then
            miRowSce = "SELECT [01-D Trimestres].Trimestre & ' trimeste' AS Expr1," _
                & " [01-D Trimestres].[Código del trimestre] FROM [01-D Trimestres] INNER JOIN [01-E Compras]" _
                & " ON [01-D Trimestres].[Código del trimestre] = [01-E Compras].Trimestre" _
                & " WHERE ((([01-E Compras].ID_Cliente)=[Forms].[03-E Dialogo IVA repercutido (Clientes)].[apcc].[Value]) AND (([01-E Compras].Código)=[Forms].[03-E Dialogo IVA repercutido (Clientes)].[cc].[Value]))" _
                & " GROUP BY [01-D Trimestres].Trimestre & ' trimeste', [01-D Trimestres].[Código del trimestre]" _
                & " ORDER BY [01-D Trimestres].[Código del trimestre]"
        End If
        If Me.Categoría = 1 And Me.Apro = 1 And Me.Año = 2 Then
            miRowSce = "SELECT [02-B Trimestre & Repercutido].Expr1," _
                & " [02-B Trimestre & Repercutido].[Código del trimestre], Year([Fecha de la factura]) AS Expr2" _
                & " FROM [02-B Trimestre & Repercutido]" _
                & " GROUP BY [02-B Trimestre & Repercutido].Expr1, [02-B Trimestre & Repercutido].[Código del trimestre]," _
                & " Year([Fecha de la factura])" _
                & " HAVING (((Year([Fecha de la factura]))=[Forms].[03-E Dialogo IVA repercutido (Clientes)].[acc].[Value]))" _
                & "ORDER BY [02-B Trimestre & Repercutido].[Código del trimestre], Year([Fecha de la factura]);"
        End If
        If Me.Categoría = 2 And Me.Apro = 1 And Me.Año = 2 Then
            miRowSce = "SELECT [01-D Trimestres].[Trimestre] & ' trimeste'" _
                & " AS Expr1, [01-D Trimestres].[Código del trimestre], Year([Fecha de la factura]) AS Año" _
                & " FROM [01-D Trimestres] INNER JOIN [01-E Compras]" _
                & " ON [01-D Trimestres].[Código del trimestre] = [01-E Compras].Trimestre" _
                & " WHERE ((([01-E Compras].Código)=[Forms].[03-E Dialogo IVA repercutido (Clientes)].[cc].[Value]))" _
                & " GROUP BY [01-D Trimestres].[Trimestre] & ' trimeste'," _
                & " [01-D Trimestres].[Código del trimestre], Year([Fecha de la factura])" _
                & " HAVING (((Year([Fecha de la factura]))=[Forms].[03-E Dialogo IVA repercutido (Clientes)].[acc].[Value]))" _
                & " ORDER BY [01-D Trimestres].[Código del trimestre], Year([Fecha de la factura]);"
        End If
        If Me.Categoría = 1 And Me.Apro = 2 And Me.Año = 2 Then
            miRowSce = "SELECT [01-D Trimestres].[Trimestre] & ' trimeste'" _
                & " AS Expr1, [01-D Trimestres].[Código del trimestre], Year([Fecha de la factura]) AS Año" _
                & " FROM [01-D Trimestres] INNER JOIN [01-E Compras]" _
                & " ON [01-D Trimestres].[Código del trimestre] = [01-E Compras].Trimestre" _
                & " WHERE ((([01-E Compras].ID_Cliente)=[Forms].[03-E Dialogo IVA repercutido (Clientes)].[apcc].[Value]))" _
                & " GROUP BY [01-D Trimestres].[Trimestre] & ' trimeste'," _
                & " [01-D Trimestres].[Código del trimestre], Year([Fecha de la factura])" _
                & " HAVING (((Year([Fecha de la factura]))=[Forms].[03-E Dialogo IVA repercutido (Clientes)].[acc].[Value]))" _
                & " ORDER BY [01-D Trimestres].[Código del trimestre], Year([Fecha de la factura]);"
        End If
        If Me.Categoría = 2 And Me.Apro = 2 And Me.Año = 2 Then
            miRowSce = "SELECT [01-D Trimestres].[Trimestre] & ' trimeste'" _
                & " AS Expr1, [01-D Trimestres].[Código del trimestre], Year([Fecha de la factura]) AS Año" _
                & " FROM [01-D Trimestres] INNER JOIN [01-E Compras]" _
                & " ON [01-D Trimestres].[Código del trimestre] = [01-E Compras].Trimestre" _
                & " WHERE ((([01-E Compras].ID_Cliente)=[Forms].[03-E Dialogo IVA repercutido (Clientes)].[apcc].[Value]) AND (([01-E Compras].Código)=[Forms].[03-E Dialogo IVA repercutido (Clientes)].[cc].[Value]))" _
                & " GROUP BY [01-D Trimestres].[Trimestre] & ' trimeste'," _
                & " [01-D Trimestres].[Código del trimestre], Year([Fecha de la factura])" _
                & " HAVING (((Year([Fecha de la factura]))=[Forms].[03-E Dialogo IVA repercutido (Clientes)].[acc].[Value]))" _
                & " ORDER BY [01-D Trimestres].[Código del trimestre], Year([Fecha de la factura]);"
        End If
    End If
    Me.tcc.RowSource = miRowSce
    Me.tcc.Requery
    cmbTrimestre.RowSource = miRowSce
End Sub
La pregunta no admite más respuestas

Más respuestas relacionadas