Page 1 of 2 12 LastLast
Results 1 to 15 of 24
  1. #1
    diegomarino is offline Competent Performer
    Windows 10 Access 2016
    Join Date
    Feb 2018
    Posts
    434

    error 2176 - too long

    hi, i have a chart that the rowsource is this sql:



    Code:
    SELECT Portafoglio.TrattativaID, Sum(Portafoglio.Gestito) AS SommaDiGestito, IIf(IsNull([sommadigestito]),0,FormatNumber([sommadigestito]/[totale],3)) AS Valore, "Gestito" as Investimento, Sum(Nz([gestito])+Nz([assicurativo])+Nz([gestioni patrimoniali])+Nz([amministrato])+Nz([certificati])+Nz([portafoglio]![liquidità])) AS Totale FROM Trattative INNER JOIN (Candidati INNER JOIN Portafoglio ON Candidati.IDcandidato = Portafoglio.CandidatoID) ON Trattative.IDtrattativa = Portafoglio.TrattativaID
    GROUP BY Portafoglio.TrattativaID 
    HAVING (((Portafoglio.TrattativaID)=442244486458333)) 
    UNION SELECT Portafoglio.TrattativaID, Sum(Portafoglio.Assicurativo) AS SommaDiAssicurativo, IIf(IsNull([sommadiassicurativo]),0,FormatNumber([sommadiassicurativo]/[totale],3)) AS Valore, "Assicurativo" as Investimento,  Sum(Nz([gestito])+Nz([assicurativo])+Nz([gestioni patrimoniali])+Nz([amministrato])+Nz([certificati])+Nz([portafoglio]![liquidità])) AS Totale 
    FROM Trattative INNER JOIN (Candidati INNER JOIN Portafoglio ON Candidati.IDcandidato = Portafoglio.CandidatoID) ON Trattative.IDtrattativa = Portafoglio.TrattativaID 
    GROUP BY Portafoglio.TrattativaID
    HAVING (((Portafoglio.TrattativaID)=442244486458333)) 
    UNION SELECT Portafoglio.TrattativaID, Sum(Portafoglio.[Gestioni patrimoniali]) AS [SommaDiGestioni patrimoniali], IIf(IsNull([sommadigestioni patrimoniali]),0,FormatNumber([sommadigestioni patrimoniali]/[totale],3)) AS Valore, "Gestioni patrimoniali" as Investimento,Sum(Nz([gestito])+Nz([assicurativo])+Nz([gestioni patrimoniali])+Nz([amministrato])+Nz([certificati])+Nz([portafoglio]![liquidità])) AS Totale 
    FROM Trattative INNER JOIN (Candidati INNER JOIN Portafoglio ON Candidati.IDcandidato = Portafoglio.CandidatoID) ON Trattative.IDtrattativa = Portafoglio.TrattativaID
    GROUP BY Portafoglio.TrattativaID
    HAVING (((Portafoglio.TrattativaID)=442244486458333)) 
    UNION SELECT Portafoglio.TrattativaID, Sum(Portafoglio.Amministrato) AS SommaDiAmministrato, IIf(IsNull([sommadiamministrato]),0,FormatNumber([sommadiamministrato]/[totale],3)) AS Valore, "Amministrato" as Investimento, Sum(Nz([gestito])+Nz([assicurativo])+Nz([gestioni patrimoniali])+Nz([amministrato])+Nz([certificati])+Nz([portafoglio]![liquidità])) AS Totale 
    FROM Trattative INNER JOIN (Candidati INNER JOIN Portafoglio ON Candidati.IDcandidato = Portafoglio.CandidatoID) ON Trattative.IDtrattativa = Portafoglio.TrattativaID
    GROUP BY Portafoglio.TrattativaID 
    HAVING (((Portafoglio.TrattativaID)=442244486458333)) 
    UNION SELECT Portafoglio.TrattativaID, Sum(Portafoglio.Certificati) AS SommaDiCertificati, IIf(IsNull([sommadicertificati]),0,FormatNumber([sommadicertificati]/[totale],3)) AS Valore, "Certificati" as Investimento, Sum(Nz([gestito])+Nz([assicurativo])+Nz([gestioni patrimoniali])+Nz([amministrato])+Nz([certificati])+Nz([portafoglio]![liquidità])) AS Totale 
    FROM Trattative INNER JOIN (Candidati INNER JOIN Portafoglio ON Candidati.IDcandidato = Portafoglio.CandidatoID) ON Trattative.IDtrattativa = Portafoglio.TrattativaID 
    GROUP BY Portafoglio.TrattativaID
    HAVING (((Portafoglio.TrattativaID)=442244486458333)) 
    UNION SELECT Portafoglio.TrattativaID, Sum(Portafoglio.Liquidità) AS SommaDiLiquidità, IIf(IsNull([sommadiliquidità]),0,FormatNumber([sommadiliquidità]/[totale],3)) AS Valore, "Liquidità" as Investimento, Sum(Nz([gestito])+Nz([assicurativo])+Nz([gestioni patrimoniali])+Nz([amministrato])+Nz([certificati])+Nz([portafoglio]![liquidità])) AS Totale
    FROM Trattative INNER JOIN (Candidati INNER JOIN Portafoglio ON Candidati.IDcandidato = Portafoglio.CandidatoID) ON Trattative.IDtrattativa = Portafoglio.TrattativaID 
    GROUP BY Portafoglio.TrattativaID 
    HAVING (((Portafoglio.TrattativaID)=442244486458333));
    when i open the report containing the chart i got the "error 2176" cause the setting is too long

    i tried to concatenate pieces of sql but got the same problem
    as stand alone query it works.

    someone can help me?

  2. #2
    ranman256's Avatar
    ranman256 is offline VIP
    Windows Vista Access 2010 32bit
    Join Date
    Apr 2014
    Location
    Kentucky
    Posts
    9,550
    put each segment into its own query , then the union is:
    select * from Q1
    union
    select * from Q2
    union
    select * from Q3

  3. #3
    Micron is offline Very Inert Person
    Windows 10 Access 2016
    Join Date
    Jun 2014
    Location
    Ontario, Canada
    Posts
    13,423
    Make the rowsource the query name and not a War and Peace length of sql? That's about 3,700 characters.
    The more we hear silence, the more we begin to think about our value in this universe.
    Paraphrase of Professor Brian Cox.

  4. #4
    diegomarino is offline Competent Performer
    Windows 10 Access 2016
    Join Date
    Feb 2018
    Posts
    434
    this do not work unfortunely

  5. #5
    Micron is offline Very Inert Person
    Windows 10 Access 2016
    Join Date
    Jun 2014
    Location
    Ontario, Canada
    Posts
    13,423
    My mind reading hat is in the repair shop. "this do not work unfortunely" is in response to whom?
    The more we hear silence, the more we begin to think about our value in this universe.
    Paraphrase of Professor Brian Cox.

  6. #6
    diegomarino is offline Competent Performer
    Windows 10 Access 2016
    Join Date
    Feb 2018
    Posts
    434
    with "own query" what do you mean? to use a query def?

    ps sorry i wrongly pressed "reply" instead of "reply with quote"

    i'm triyng not to have query in my objects to make the database smaller, but i like to set recordsource and rowsource to the sql code

  7. #7
    Minty is offline VIP
    Windows 10 Office 365
    Join Date
    Sep 2017
    Location
    UK - Wiltshire
    Posts
    3,157
    If you are concatenating that using

    & _

    You can't exceed 15 or 16 lines from memory.

    Use

    strSql = " SELECT blah blah "
    strSql = strSql & " More query goes in here "
    strSql = strSql & " Etc etc "

    However query objects take up tiny amounts of space so I don't understand your concern?
    DLookup Syntax and others http://access.mvps.org/access/general/gen0018.htm
    Please use the star below the post to say thanks if we have helped !
    ↓↓ It's down here ↓↓

  8. #8
    diegomarino is offline Competent Performer
    Windows 10 Access 2016
    Join Date
    Feb 2018
    Posts
    434
    thank you very much, i made this

    Code:
      qry = "SELECT Portafoglio.TrattativaID, Sum(Portafoglio.Gestito) AS SommaDiGestito, IIf(IsNull([sommadigestito]),0,FormatNumber([sommadigestito]/[totale],3)) AS Valore, ""Gestito"" as Investimento, Sum(Nz([gestito])+Nz([assicurativo])+Nz([gestioni patrimoniali])+Nz([amministrato])+Nz([certificati])+Nz([portafoglio]![liquidità])) AS Totale " & vbCrLf & _         "FROM Trattative INNER JOIN (Candidati INNER JOIN Portafoglio ON Candidati.IDcandidato = Portafoglio.CandidatoID) ON Trattative.IDtrattativa = Portafoglio.TrattativaID " & vbCrLf & _
             "GROUP BY Portafoglio.TrattativaID " & vbCrLf & _
             "HAVING (((Portafoglio.TrattativaID)=442244486458333)) "
       qry = qry & "UNION SELECT Portafoglio.TrattativaID, Sum(Portafoglio.Assicurativo) AS SommaDiAssicurativo, IIf(IsNull([sommadiassicurativo]),0,FormatNumber([sommadiassicurativo]/[totale],3)) AS Valore, ""Assicurativo"" as Investimento,  Sum(Nz([gestito])+Nz([assicurativo])+Nz([gestioni patrimoniali])+Nz([amministrato])+Nz([certificati])+Nz([portafoglio]![liquidità])) AS Totale " & vbCrLf & _
                    "FROM Trattative INNER JOIN (Candidati INNER JOIN Portafoglio ON Candidati.IDcandidato = Portafoglio.CandidatoID) ON Trattative.IDtrattativa = Portafoglio.TrattativaID " & vbCrLf & _
                    "GROUP BY Portafoglio.TrattativaID " & vbCrLf & _
                    "HAVING (((Portafoglio.TrattativaID)=442244486458333)) "
       qry = qry & "UNION SELECT Portafoglio.TrattativaID, Sum(Portafoglio.[Gestioni patrimoniali]) AS [SommaDiGestioni patrimoniali], IIf(IsNull([sommadigestioni patrimoniali]),0,FormatNumber([sommadigestioni patrimoniali]/[totale],3)) AS Valore, ""Gestioni patrimoniali"" as Investimento,Sum(Nz([gestito])+Nz([assicurativo])+Nz([gestioni patrimoniali])+Nz([amministrato])+Nz([certificati])+Nz([portafoglio]![liquidità])) AS Totale " & vbCrLf & _
                   "FROM Trattative INNER JOIN (Candidati INNER JOIN Portafoglio ON Candidati.IDcandidato = Portafoglio.CandidatoID) ON Trattative.IDtrattativa = Portafoglio.TrattativaID " & vbCrLf & _
                   "GROUP BY Portafoglio.TrattativaID " & vbCrLf & _
                   "HAVING (((Portafoglio.TrattativaID)=442244486458333)) "
    '   qry = qry & "UNION SELECT Portafoglio.TrattativaID, Sum(Portafoglio.Amministrato) AS SommaDiAmministrato, IIf(IsNull([sommadiamministrato]),0,FormatNumber([sommadiamministrato]/[totale],3)) AS Valore, ""Amministrato"" as Investimento, Sum(Nz([gestito])+Nz([assicurativo])+Nz([gestioni patrimoniali])+Nz([amministrato])+Nz([certificati])+Nz([portafoglio]![liquidità])) AS Totale " & vbCrLf & _
    '               "FROM Trattative INNER JOIN (Candidati INNER JOIN Portafoglio ON Candidati.IDcandidato = Portafoglio.CandidatoID) ON Trattative.IDtrattativa = Portafoglio.TrattativaID " & vbCrLf & _
    '               "GROUP BY Portafoglio.TrattativaID " & vbCrLf & _
    '               "HAVING (((Portafoglio.TrattativaID)=442244486458333)) "
    '   qry = qry & "UNION SELECT Portafoglio.TrattativaID, Sum(Portafoglio.Certificati) AS SommaDiCertificati, IIf(IsNull([sommadicertificati]),0,FormatNumber([sommadicertificati]/[totale],3)) AS Valore, ""Certificati"" as Investimento, Sum(Nz([gestito])+Nz([assicurativo])+Nz([gestioni patrimoniali])+Nz([amministrato])+Nz([certificati])+Nz([portafoglio]![liquidità])) AS Totale " & vbCrLf & _
    '               "FROM Trattative INNER JOIN (Candidati INNER JOIN Portafoglio ON Candidati.IDcandidato = Portafoglio.CandidatoID) ON Trattative.IDtrattativa = Portafoglio.TrattativaID " & vbCrLf & _
    '               "GROUP BY Portafoglio.TrattativaID " & vbCrLf & _
    '               "HAVING (((Portafoglio.TrattativaID)=442244486458333)) "
    '   qry = qry & "UNION SELECT Portafoglio.TrattativaID, Sum(Portafoglio.Liquidità) AS SommaDiLiquidità, IIf(IsNull([sommadiliquidità]),0,FormatNumber([sommadiliquidità]/[totale],3)) AS Valore, ""Liquidità"" as Investimento, Sum(Nz([gestito])+Nz([assicurativo])+Nz([gestioni patrimoniali])+Nz([amministrato])+Nz([certificati])+Nz([portafoglio]![liquidità])) AS Totale " & vbCrLf & _
    '               "FROM Trattative INNER JOIN (Candidati INNER JOIN Portafoglio ON Candidati.IDcandidato = Portafoglio.CandidatoID) ON Trattative.IDtrattativa = Portafoglio.TrattativaID " & vbCrLf & _
    '               "GROUP BY Portafoglio.TrattativaID " & vbCrLf & _
    '               "HAVING (((Portafoglio.TrattativaID)=442244486458333));"

    but it gets only the not commented parts, the whole thing give me the same error..

  9. #9
    Join Date
    Jan 2017
    Location
    Swansea,South Wales,UK
    Posts
    6,560
    Why can you not try Ranman256's suggestion?

    You could try aliases as well?

    Also I personally do not understand

    Code:
    SELECT Portafoglio.TrattativaID ... FROM Trattative
    normally that would be

    Code:
    SELECT Portafoglio.TrattativaID ... FROM Portafoglio
    Please use # icon on toolbar when posting code snippets.
    Cross Posting: https://www.excelguru.ca/content.php?184
    Debugging Access: https://www.youtube.com/results?sear...bug+access+vba

  10. #10
    diegomarino is offline Competent Performer
    Windows 10 Access 2016
    Join Date
    Feb 2018
    Posts
    434
    Quote Originally Posted by Welshgasman View Post
    Why can you not try Ranman256's suggestion?
    i didn't understand what "q1","q2" is...if a string variable or something else

    [QUOTE=You could try aliases as well?[/QUOTE]

    aliases?

    Quote Originally Posted by Welshgasman View Post
    Also I personally do not understand


    Code:
    SELECT Portafoglio.TrattativaID ... FROM Trattative
    normally that would be

    Code:
    SELECT Portafoglio.TrattativaID ... FROM Portafoglio
    i give a better look

  11. #11
    accesstos's Avatar
    accesstos is offline Expert
    Windows XP Access 2007
    Join Date
    Dec 2018
    Location
    Greece
    Posts
    551
    Quote Originally Posted by Micron View Post
    Make the rowsource the query name and not a War and Peace length of sql?

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~

    Diego,

    Leave the Record Source blank and put the code below in report's module:
    Code:
    Option Compare Database
    Option Explicit
    
    Private Const cstrQName As String = "qryTemp" 'The name of the temporary query
    '
    
    Private Sub Report_Open(Cancel As Integer)
        Dim qdef As DAO.QueryDef    'The temporary query
        
        On Error Resume Next
        With CurrentDb
            'Try to delete the temp query
            .QueryDefs.Delete cstrQName
            'Create the temp query
            Set qdef = .CreateQueryDef(cstrQName, MyRecordSource)
        End With
        'Set the recordsource of the report to the temp query
        Me.RecordSource = cstrQName
    End Sub
    
    Private Sub Report_Close()
        'Delete the temp query
        On Error Resume Next
        CurrentDb.QueryDefs.Delete cstrQName
    End Sub
    
    Private Function MyRecordSource() As String
        Dim qry As String
    
        qry = "SELECT Portafoglio.TrattativaID, Sum(Portafoglio.Gestito) AS SommaDiGestito, IIf(IsNull([sommadigestito]),0,FormatNumber([sommadigestito]/[totale],3)) AS Valore, ""Gestito"" as Investimento, Sum(Nz([gestito])+Nz([assicurativo])+Nz([gestioni patrimoniali])+Nz([amministrato])+Nz([certificati])+Nz([portafoglio]![liquidita])) AS Totale " & vbCrLf & "FROM Trattative INNER JOIN (Candidati INNER JOIN Portafoglio ON Candidati.IDcandidato = Portafoglio.CandidatoID) ON Trattative.IDtrattativa = Portafoglio.TrattativaID " & vbCrLf & _
              "GROUP BY Portafoglio.TrattativaID " & vbCrLf & _
              "HAVING (((Portafoglio.TrattativaID)=442244486458333)) "
        qry = qry & "UNION SELECT Portafoglio.TrattativaID, Sum(Portafoglio.Assicurativo) AS SommaDiAssicurativo, IIf(IsNull([sommadiassicurativo]),0,FormatNumber([sommadiassicurativo]/[totale],3)) AS Valore, ""Assicurativo"" as Investimento,  Sum(Nz([gestito])+Nz([assicurativo])+Nz([gestioni patrimoniali])+Nz([amministrato])+Nz([certificati])+Nz([portafoglio]![liquidita])) AS Totale " & vbCrLf & _
              "FROM Trattative INNER JOIN (Candidati INNER JOIN Portafoglio ON Candidati.IDcandidato = Portafoglio.CandidatoID) ON Trattative.IDtrattativa = Portafoglio.TrattativaID " & vbCrLf & _
              "GROUP BY Portafoglio.TrattativaID " & vbCrLf & _
              "HAVING (((Portafoglio.TrattativaID)=442244486458333)) "
        qry = qry & "UNION SELECT Portafoglio.TrattativaID, Sum(Portafoglio.[Gestioni patrimoniali]) AS [SommaDiGestioni patrimoniali], IIf(IsNull([sommadigestioni patrimoniali]),0,FormatNumber([sommadigestioni patrimoniali]/[totale],3)) AS Valore, ""Gestioni patrimoniali"" as Investimento,Sum(Nz([gestito])+Nz([assicurativo])+Nz([gestioni patrimoniali])+Nz([amministrato])+Nz([certificati])+Nz([portafoglio]![liquidita])) AS Totale " & vbCrLf & _
              "FROM Trattative INNER JOIN (Candidati INNER JOIN Portafoglio ON Candidati.IDcandidato = Portafoglio.CandidatoID) ON Trattative.IDtrattativa = Portafoglio.TrattativaID " & vbCrLf & _
              "GROUP BY Portafoglio.TrattativaID " & vbCrLf & _
              "HAVING (((Portafoglio.TrattativaID)=442244486458333)) "
        qry = qry & "UNION SELECT Portafoglio.TrattativaID, Sum(Portafoglio.Amministrato) AS SommaDiAmministrato, IIf(IsNull([sommadiamministrato]),0,FormatNumber([sommadiamministrato]/[totale],3)) AS Valore, ""Amministrato"" as Investimento, Sum(Nz([gestito])+Nz([assicurativo])+Nz([gestioni patrimoniali])+Nz([amministrato])+Nz([certificati])+Nz([portafoglio]![liquidita])) AS Totale " & vbCrLf & _
              "FROM Trattative INNER JOIN (Candidati INNER JOIN Portafoglio ON Candidati.IDcandidato = Portafoglio.CandidatoID) ON Trattative.IDtrattativa = Portafoglio.TrattativaID " & vbCrLf & _
              "GROUP BY Portafoglio.TrattativaID " & vbCrLf & _
              "HAVING (((Portafoglio.TrattativaID)=442244486458333)) "
        qry = qry & "UNION SELECT Portafoglio.TrattativaID, Sum(Portafoglio.Certificati) AS SommaDiCertificati, IIf(IsNull([sommadicertificati]),0,FormatNumber([sommadicertificati]/[totale],3)) AS Valore, ""Certificati"" as Investimento, Sum(Nz([gestito])+Nz([assicurativo])+Nz([gestioni patrimoniali])+Nz([amministrato])+Nz([certificati])+Nz([portafoglio]![liquidita])) AS Totale " & vbCrLf & _
              "FROM Trattative INNER JOIN (Candidati INNER JOIN Portafoglio ON Candidati.IDcandidato = Portafoglio.CandidatoID) ON Trattative.IDtrattativa = Portafoglio.TrattativaID " & vbCrLf & _
              "GROUP BY Portafoglio.TrattativaID " & vbCrLf & _
              "HAVING (((Portafoglio.TrattativaID)=442244486458333)) "
        qry = qry & "UNION SELECT Portafoglio.TrattativaID, Sum(Portafoglio.Liquidita) AS SommaDiLiquidita, IIf(IsNull([sommadiliquidita]),0,FormatNumber([sommadiliquidita]/[totale],3)) AS Valore, ""Liquidita"" as Investimento, Sum(Nz([gestito])+Nz([assicurativo])+Nz([gestioni patrimoniali])+Nz([amministrato])+Nz([certificati])+Nz([portafoglio]![liquidita])) AS Totale " & vbCrLf & _
              "FROM Trattative INNER JOIN (Candidati INNER JOIN Portafoglio ON Candidati.IDcandidato = Portafoglio.CandidatoID) ON Trattative.IDtrattativa = Portafoglio.TrattativaID " & vbCrLf & _
              "GROUP BY Portafoglio.TrattativaID " & vbCrLf & _
              "HAVING (((Portafoglio.TrattativaID)=442244486458333));"
        'Return the SQL text
        MyRecordSource = qry
    End Function
    That creates a temporary query for the Recordsource as long as report running.
    But, keep in mind that the burden of the queries in a db is very small, thus, very small is the gain of your attempt as well.

    Cheers,
    John

  12. #12
    diegomarino is offline Competent Performer
    Windows 10 Access 2016
    Join Date
    Feb 2018
    Posts
    434
    thanks very much, don't ask why i'm doing something complicated for a little gain, i'm italian we are known for that
    however, i was avoiding to use query def, and the real reason i want to have everything in vba was that once some queries went corrupted.

    maybe it's impossible to run the query just in vba unfortunely..

  13. #13
    accesstos's Avatar
    accesstos is offline Expert
    Windows XP Access 2007
    Join Date
    Dec 2018
    Location
    Greece
    Posts
    551
    Quote Originally Posted by diegomarino View Post
    thanks very much, don't ask why i'm doing something complicated for a little gain, i'm italian we are known for that
    Greeks are better on this (una faccia una razza).

    Quote Originally Posted by diegomarino View Post
    maybe it's impossible to run the query just in vba unfortunely..
    Did you test my suggestion? Maybe the issue is due to something else.

  14. #14
    diegomarino is offline Competent Performer
    Windows 10 Access 2016
    Join Date
    Feb 2018
    Posts
    434
    Quote Originally Posted by accesstos View Post
    Greeks are better on this (una faccia una razza).


    Did you test my suggestion? Maybe the issue is due to something else.


    i just made a simple query def using the sql code (and yes, the FROM was just "porfatoglio"), and it works fine. When i close the report i delete the query
    thanks

  15. #15
    Micron is offline Very Inert Person
    Windows 10 Access 2016
    Join Date
    Jun 2014
    Location
    Ontario, Canada
    Posts
    13,423
    FYI if you just create the query def with no name ("") it is truly temporary as it only exists in memory. When the procedure ends, it's gone. Not sure if that is of any interest.
    Dim qdf As DAO.QueryDef
    Dim strSql As String

    strSql = "SELECT..."
    Set qdf = CurrentDb.CreateQueryDef("",strSql)
    The more we hear silence, the more we begin to think about our value in this universe.
    Paraphrase of Professor Brian Cox.

Page 1 of 2 12 LastLast
Please reply to this thread with any new information or opinions.

Similar Threads

  1. Replies: 2
    Last Post: 02-28-2019, 06:58 AM
  2. Replies: 1
    Last Post: 02-25-2015, 04:40 PM
  3. Replies: 13
    Last Post: 01-11-2012, 09:44 PM
  4. Replies: 3
    Last Post: 10-14-2011, 04:50 PM
  5. Text too long, error message
    By taylormotm in forum Access
    Replies: 13
    Last Post: 06-18-2009, 07:24 PM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Other Forums: Microsoft Office Forums