Results 1 to 10 of 10
  1. #1
    Join Date
    Jul 2009
    Posts
    7

    Unanswered: Error Too few parameters. Expected 2

    Hi!

    I'm writing a code to fill a sub form with the data from my db...but when i select any of the filters I got the error msg: Too few parameters. Expected 2, when it tries to execute .OpenRecordset()

    Could you please help me...I'll put the code here

    This is the sql:

    strSQL_Transf = "" & " TRANSFORM Sum([SaldoDevedorIni]) AS SomaSaldoDevedorIni " & ""
    strSQL_Select = "" & "SELECT DADOS_ACUMULADOS.Faixa_Risco, Sum(DADOS_ACUMULADOS.SaldoDevedorIni) AS Total" & ""
    strVisaoSaldoSQL = strSQL_Transf _
    & strSQL_Select _
    & " FROM DADOS_ACUMULADOS LEFT JOIN De_Para_MesRef ON DADOS_ACUMULADOS.Mes_Ref = De_Para_MesRef.Mes_Ref " _
    & " WHERE(((De_Para_MesRef.Mes) Like " & Me!CMes.Value _
    & ")" _
    & strSQL_Canal _
    & strSQL_Pessoa _
    & strSQL_Autos _
    & ")" _
    & " GROUP BY DADOS_ACUMULADOS.Faixa_Risco " _
    & " PIVOT DADOS_ACUMULADOS.Faixa_Atraso In(" & """02 De 1 a 30 dias""" & "," & """03 De 31 a 60 dias""" & "," & """04 De 61 a 90 dias""" & "," & """05 De 91 a 120 dias""" & "," & """06 De 121 a 150 dias""" & "," & """07 De 151 a 180 dias""" & "," & """08 Mais de 180 dias""" & "," & """09 Prejuízo""" & ")" & ""

    The code to fill the sub form:

    Set dbsCurrent = CurrentDb 'Acesso a base de Dados Acumulados

    Set qryAux = dbsCurrent.CreateQueryDef("", strVisaoSaldoSQL)

    With qryAux

    'Abrir a var rstEfic

    Set rstSaldo = .OpenRecordset()

    With rstSaldo


    .MoveLast
    .FindFirst "Faixa_Atraso = '02 De 1 a 30 dias'"
    If .NoMatch = False Then
    [Form_Sumário de Recuperação - Risco Cliente].[Sumário Recuperação - CarteiraSaldo2].Form!S_1a30_Efic.Value = rstSaldo!SomaSaldoDevedorIni
    Else
    [Form_Sumário de Recuperação - Risco Cliente].[Sumário Recuperação - CarteiraSaldo2].Form!S_1a30_Efic.Value = ""
    End If

    .FindFirst "Faixa_Atraso = '03 De 31 a 60 dias'"
    If .NoMatch = False Then
    [Form_Sumário de Recuperação - Risco Cliente].[Sumário Recuperação - CarteiraSaldo2].Form!S_31a60_Efic.Value = rstSaldo!SomaSaldoDevedorIni
    Else
    [Form_Sumário de Recuperação - Risco Cliente].[Sumário Recuperação - CarteiraSaldo2].Form!S_31a60_Efic.Value = ""
    End If

    .FindFirst "Faixa_Atraso = '04 De 61 a 90 dias'"
    If .NoMatch = False Then
    [Form_Sumário de Recuperação - Risco Cliente].[Sumário Recuperação - CarteiraSaldo2].Form!S_61a90_Efic.Value = rstSaldo!SomaSaldoDevedorIni
    Else
    [Form_Sumário de Recuperação - Risco Cliente].[Sumário Recuperação - CarteiraSaldo2].Form!S_61a90_Efic.Value = ""
    End If

    .FindFirst "Faixa_Atraso = '05 De 91 a 120 dias'"
    If .NoMatch = False Then
    [Form_Sumário de Recuperação - Risco Cliente].[Sumário Recuperação - CarteiraSaldo2].Form!S_91a120_Efic.Value = rstSaldo!SomaSaldoDevedorIni
    Else
    [Form_Sumário de Recuperação - Risco Cliente].[Sumário Recuperação - CarteiraSaldo2].Form!S_91a120_Efic.Value = ""
    End If

    .FindFirst "Faixa_Atraso = '06 De 121 a 150 dias'"
    If .NoMatch = False Then
    [Form_Sumário de Recuperação - Risco Cliente].[Sumário Recuperação - CarteiraSaldo2].Form!S_121a150_Efic.Value = rstSaldo!SomaSaldoDevedorIni
    Else
    [Form_Sumário de Recuperação - Risco Cliente].[Sumário Recuperação - CarteiraSaldo2].Form!S_121a150_Efic.Value = ""
    End If

    .FindFirst "Faixa_Atraso = '07 De 151 a 180 dias'"
    If .NoMatch = False Then
    [Form_Sumário de Recuperação - Risco Cliente].[Sumário Recuperação - CarteiraSaldo2].Form!S_151a180_Efic.Value = rstSaldo!SomaSaldoDevedorIni
    Else
    [Form_Sumário de Recuperação - Risco Cliente].[Sumário Recuperação - CarteiraSaldo2].Form!S_151a180_Efic.Value = ""
    End If

    .FindFirst "Faixa_Atraso = '08 Mais de 180 dias'"
    If .NoMatch = False Then
    [Form_Sumário de Recuperação - Risco Cliente].[Sumário Recuperação - CarteiraSaldo2].Form!S_M180_Efic.Value = rstSaldo!SomaSaldoDevedorIni
    Else
    [Form_Sumário de Recuperação - Risco Cliente].[Sumário Recuperação - CarteiraSaldo2].Form!S_M180_Efic.Value = ""
    End If

    .FindFirst "Faixa_Atraso = '09 Prejuízo'"
    If .NoMatch = False Then
    [Form_Sumário de Recuperação - Risco Cliente].[Sumário Recuperação - CarteiraSaldo2].Form!S_Prejuizo_Efic.Value = rstSaldo!SomaSaldoDevedorIni
    Else
    [Form_Sumário de Recuperação - Risco Cliente].[Sumário Recuperação - CarteiraSaldo2].Form!S_Prejuizo_Efic.Value = ""
    End If
    End With
    End With

  2. #2
    Join Date
    Feb 2004
    Location
    One Flump in One Place
    Posts
    14,912
    Always, always, always check the SQL you have created dynamically. You can't debug this sort of stuff without that string. It's more important than all the rest of the code.

    What does strVisaoSaldoSQL contain at the point of execution?
    Testimonial:
    pootle flump
    ur codings are working excelent.

  3. #3
    Join Date
    Jul 2009
    Posts
    7
    it contains:

    strSQL_Canal; strSQL_Pessoa; strSQL_Autos

    and the code for them are

    If [Form_Sumário de Recuperação - Filtros]!C10dias.Value = "Não" Then

    strSQL_Canal = "" & " And( CanalCobIni <> 'Banco(1 a 10 dias)' & [Form_Sumário de Recuperação - Filtros]!CCanal.Value)" & ""

    Else

    strSQL_Canal = "" & " And( CanalCobIni & Canal) " & ""

    End If


    If [Form_Sumário de Recuperação - Filtros]!CPessoa.Value = [Form_Sumário de Recuperação - Filtros]!CPessoa.DefaultValue Then

    strSQL_Pessoa = Empty '& " Segmento_Agrupado " & ""

    Else
    If [Form_Sumário de Recuperação - Filtros]!CPessoa.Value = "PF" Then
    strSQL_Pessoa = "" & " And(Segmento_Agrupado Like " & [Form_Sumário de Recuperação - Filtros]!CPessoa.Value & ")" & ""
    Else
    strSQL_Pessoa = "" & " And(Segmento_Agrupado Like " & [Form_Sumário de Recuperação - Filtros]!CPessoa.Value & ")" & ""
    End If
    End If

    If [Form_Sumário de Recuperação - Filtros]!CAutos.Value = [Form_Sumário de Recuperação - Filtros]!CAutos.DefaultValue Then

    strSQL_Autos = Empty '"" & " NOME_FAM_AGRUPADO " & ""

    Else
    If [Form_Sumário de Recuperação - Filtros]!CAutos.Value = "Sim" Then
    strSQL_Autos = "" & "And (NOME_FAM_AGRUPADO & 'AUTOS - CANAL EXTERNO') " & ""
    Else
    strSQL_Autos = "" & "And (NOME_FAM_AGRUPADO <> 'AUTOS - CANAL EXTERNO') " & ""
    End If
    End If

    I really don't know where i'm making a mistake...

    Hope you can help me...thank you

  4. #4
    Join Date
    Feb 2004
    Location
    One Flump in One Place
    Posts
    14,912
    I mean what is the value of strVisaoSaldoSQL? The code used to build it is very little help at this point. The value of strVisaoSaldoSQL at the point of execution is the single most important thing you want to concentrate on.
    Testimonial:
    pootle flump
    ur codings are working excelent.

  5. #5
    Join Date
    Nov 2004
    Location
    out on a limb
    Posts
    13,692
    Provided Answers: 59
    what Pootle is trying to suggest is that you actaully examine the SQL string that you have built

    eg
    Code:
    ....
    If [Form_Sum&#225;rio de Recupera&#231;&#227;o - Filtros]!CAutos.Value = "Sim" Then
    strSQL_Autos = "" & "And (NOME_FAM_AGRUPADO & 'AUTOS - CANAL EXTERNO') " & ""
    Else
    strSQL_Autos = "" & "And (NOME_FAM_AGRUPADO <> 'AUTOS - CANAL EXTERNO') " & ""
    End If
    End If
    msgbox ("My SQL is:" & vbcrlf & strSQL)
    I'd rather be riding on the Tiger 800 or the Norton

  6. #6
    Join Date
    May 2009
    Posts
    258
    A good way to check it would be to insert the following line before the code to fill the subform:
    Code:
    Debug.Print strVisaoSaldoSQL
    You can then copy it out of the Immediate window, test it, post it here, etc.

  7. #7
    Join Date
    Feb 2004
    Location
    One Flump in One Place
    Posts
    14,912
    Quote Originally Posted by healdem
    what Pootle is trying to suggest....
    Aw - I thought I was suggesting it
    Testimonial:
    pootle flump
    ur codings are working excelent.

  8. #8
    Join Date
    Jul 2009
    Posts
    7
    I realized that my code was considering variables as table fields...i corrected that but i still get a msg error...now it says that it can't find the table field "Faixa_Atraso" but I'm sure this field is in my db.

    this is my sql printed in the immediate window:

    TRANSFORM Sum([SaldoDevedorIni]) AS SomaSaldoDevedorIni SELECT DADOS_ACUMULADOS.Faixa_Risco, Sum(DADOS_ACUMULADOS.SaldoDevedorIni) AS Total FROM DADOS_ACUMULADOS LEFT JOIN De_Para_MesRef ON DADOS_ACUMULADOS.Mes_Ref = De_Para_MesRef.Mes_Ref WHERE(((De_Para_MesRef.Mes) Like "Janeiro/2009") And( CanalCobIni Like "Rede") And(Segmento_Agrupado Like "PF")) GROUP BY DADOS_ACUMULADOS.Faixa_Risco PIVOT DADOS_ACUMULADOS.Faixa_Atraso In("02 De 1 a 30 dias","03 De 31 a 60 dias","04 De 61 a 90 dias","05 De 91 a 120 dias","06 De 121 a 150 dias","07 De 151 a 180 dias","08 Mais de 180 dias","09 Prejuízo")

    Any suggestions?

    Thanks for the help =)

  9. #9
    Join Date
    Nov 2004
    Location
    out on a limb
    Posts
    13,692
    Provided Answers: 59
    well its fairly safe to say that if you are not certain if Faixa_Atraso is a column in one of the tables, then its absolutely certain we don't know.

    check the spelling to make sure it is defined
    you may need to qualify the column name with the table

    eg
    mytable.Faixa_Atraso

    just looking briefly at your SQL I fear that you may have a table design issue, it has symptoms of non normalised design... but lets not go there
    I'd rather be riding on the Tiger 800 or the Norton

  10. #10
    Join Date
    Jul 2009
    Posts
    7
    Thanks people for everything ...the column name was wrong , i corrected it and now my code is working just fine...

    Sorry for bothering you and sorry for my poor english!


Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •