|
From: cpsaltis on 4 Jul 2008 13:41 I have nested queries that when run on a local table runs correctly. When I switch the first query to use ODBC tables I get query too complex. If I run the individual queries (in the nest) they work all the way to the very last one (that the report uses). Other than the ODBC connection the difference is local table is single table, ODBC is two linked tables. I've see here that there is a 64k compiled limit to the size of the query. Is there a way to identify the size? Is there a different limit when using and ODBC connection? Thanks in advance
From: louisjohnphillips on 4 Jul 2008 14:19 On Jul 4, 10:41 am, cpsaltis <cpsal...(a)discussions.microsoft.com> wrote: > I have nested queries that when run on a local table runs correctly. When I > switch the first query to use ODBC tables I get query too complex. If I run > the individual queries (in the nest) they work all the way to the very last > one (that the report uses). Other than the ODBC connection the difference is > local table is single table, ODBC is two linked tables. I've see here that > there is a 64k compiled limit to the size of the query. Is there a way to > identify the size? Is there a different limit when using and ODBC connection? > > Thanks in advance Can it be assumed that the ODBC connection is to a database that supports views? View seen by Access through an ODBC connection appear if they are tables. Rather than worry about the limit of the size of a query, try breaking the query into views that have performed most of the selection work. Use this technic to simplify the complex query.
From: cpsaltis on 4 Jul 2008 14:39 "louisjohnphillips(a)gmail.com" wrote: > On Jul 4, 10:41 am, cpsaltis <cpsal...(a)discussions.microsoft.com> > wrote: > > I have nested queries that when run on a local table runs correctly. When I > > switch the first query to use ODBC tables I get query too complex. If I run > > the individual queries (in the nest) they work all the way to the very last > > one (that the report uses). Other than the ODBC connection the difference is > > local table is single table, ODBC is two linked tables. I've see here that > > there is a 64k compiled limit to the size of the query. Is there a way to > > identify the size? Is there a different limit when using and ODBC connection? > > > > Thanks in advance > > Can it be assumed that the ODBC connection is to a database that > supports views? View seen by Access through an ODBC connection appear > if they are tables. > > Rather than worry about the limit of the size of a query, try breaking > the query into views that have performed most of the selection work. > Use this technic to simplify the complex query. > I don't quite understand your comments about views. The reason for nesting, other than some calculations etc, is to limit selections. The first 4 do most of the selction work. I've included the 2nd & 4th for example. The reason they are in different queries is to simplify. SELECT [qAR-1].* FROM [qAR-1] WHERE ((([qAR-1].cu_branch)=[Forms]![fARSelections]![BranchNum]) AND (([Forms]![fARSelections]![MonthNum])=DatePart("m",[ph_date]))) OR ((([qAR-1].cu_branch)=[Forms]![fARSelections]![BranchNum]) AND (([Forms]![fARSelections]![MonthNum]) Is Null)) OR ((([Forms]![fARSelections]![MonthNum])=DatePart("m",[ph_date])) AND (([Forms]![fARSelections]![BranchNum]) Is Null)) OR ((([Forms]![fARSelections]![MonthNum]) Is Null) AND (([Forms]![fARSelections]![BranchNum]) Is Null)); SELECT [qAR-3].* FROM [qAR-3] WHERE ((([Forms]![fARSelections]![CustType])=0 Or ([Forms]![fARSelections]![CustType])=-1)) OR ((([Forms]![fARSelections]![CustType])=1) AND (([qAR-3].cu_install)>(Date()-365))) OR ((([Forms]![fARSelections]![CustType])=2) AND (([qAR-3].cu_install)<=(Date()-365)));
From: louisjohnphillips on 4 Jul 2008 15:11 On Jul 4, 11:39 am, cpsaltis <cpsal...(a)discussions.microsoft.com> wrote: > "louisjohnphill...(a)gmail.com" wrote: > > On Jul 4, 10:41 am, cpsaltis <cpsal...(a)discussions.microsoft.com> > > wrote: > > > I have nested queries that when run on a local table runs correctly. When I > > > switch the first query to use ODBC tables I get query too complex. If I run > > > the individual queries (in the nest) they work all the way to the very last > > > one (that the report uses). Other than the ODBC connection the difference is > > > local table is single table, ODBC is two linked tables. I've see here that > > > there is a 64k compiled limit to the size of the query. Is there a way to > > > identify the size? Is there a different limit when using and ODBC connection? > > > > Thanks in advance > > > Can it be assumed that the ODBC connection is to a database that > > supports views? View seen by Access through an ODBC connection appear > > if they are tables. > > > Rather than worry about the limit of the size of a query, try breaking > > the query into views that have performed most of the selection work. > > Use this technic to simplify the complex query. > > I don't quite understand your comments about views. > > The reason for nesting, other than some calculations etc, is to limit > selections. The first 4 do most of the selction work. I've included the 2nd & > 4th for example. The reason they are in different queries is to simplify. > > SELECT [qAR-1].* > FROM [qAR-1] > WHERE ((([qAR-1].cu_branch)=[Forms]![fARSelections]![BranchNum]) AND > (([Forms]![fARSelections]![MonthNum])=DatePart("m",[ph_date]))) OR > ((([qAR-1].cu_branch)=[Forms]![fARSelections]![BranchNum]) AND > (([Forms]![fARSelections]![MonthNum]) Is Null)) OR > ((([Forms]![fARSelections]![MonthNum])=DatePart("m",[ph_date])) AND > (([Forms]![fARSelections]![BranchNum]) Is Null)) OR > ((([Forms]![fARSelections]![MonthNum]) Is Null) AND > (([Forms]![fARSelections]![BranchNum]) Is Null)); > > SELECT [qAR-3].* > FROM [qAR-3] > WHERE ((([Forms]![fARSelections]![CustType])=0 Or > ([Forms]![fARSelections]![CustType])=-1)) OR > ((([Forms]![fARSelections]![CustType])=1) AND > (([qAR-3].cu_install)>(Date()-365))) OR > ((([Forms]![fARSelections]![CustType])=2) AND > (([qAR-3].cu_install)<=(Date()-365)));- Hide quoted text - > > - Show quoted text - Am I misinterpreting this? SELECT all rows from qAR-3 if the customer type is 0 or -1 without restrictions based on install date. Add to that any customer type 1 if installation was over a year ago. Add to that any customer of type 2 with an installation date within the last year. SELECT [qAR-3].* FROM [qAR-3] WHERE ((([Forms]![fARSelections]![CustType])=0 Or ([Forms]! [fARSelections]![CustType])=-1)) OR ((([Forms]![fARSelections]![CustType])=1) AND (([qAR-3].cu_install)>(Date()-365))) OR ((([Forms]![fARSelections]![CustType])=2) AND (([qAR-3].cu_install)<=(Date()-365))); This appears to be selecting from itself. Would that be causing the nesting error?
From: cpsaltis on 4 Jul 2008 15:42
"louisjohnphillips(a)gmail.com" wrote: > On Jul 4, 11:39 am, cpsaltis <cpsal...(a)discussions.microsoft.com> > wrote: > > "louisjohnphill...(a)gmail.com" wrote: > > > On Jul 4, 10:41 am, cpsaltis <cpsal...(a)discussions.microsoft.com> > > > wrote: > > > > I have nested queries that when run on a local table runs correctly. When I > > > > switch the first query to use ODBC tables I get query too complex. If I run > > > > the individual queries (in the nest) they work all the way to the very last > > > > one (that the report uses). Other than the ODBC connection the difference is > > > > local table is single table, ODBC is two linked tables. I've see here that > > > > there is a 64k compiled limit to the size of the query. Is there a way to > > > > identify the size? Is there a different limit when using and ODBC connection? > > > > > > Thanks in advance > > > > > Can it be assumed that the ODBC connection is to a database that > > > supports views? View seen by Access through an ODBC connection appear > > > if they are tables. > > > > > Rather than worry about the limit of the size of a query, try breaking > > > the query into views that have performed most of the selection work. > > > Use this technic to simplify the complex query. > > > > I don't quite understand your comments about views. > > > > The reason for nesting, other than some calculations etc, is to limit > > selections. The first 4 do most of the selction work. I've included the 2nd & > > 4th for example. The reason they are in different queries is to simplify. > > > > SELECT [qAR-1].* > > FROM [qAR-1] > > WHERE ((([qAR-1].cu_branch)=[Forms]![fARSelections]![BranchNum]) AND > > (([Forms]![fARSelections]![MonthNum])=DatePart("m",[ph_date]))) OR > > ((([qAR-1].cu_branch)=[Forms]![fARSelections]![BranchNum]) AND > > (([Forms]![fARSelections]![MonthNum]) Is Null)) OR > > ((([Forms]![fARSelections]![MonthNum])=DatePart("m",[ph_date])) AND > > (([Forms]![fARSelections]![BranchNum]) Is Null)) OR > > ((([Forms]![fARSelections]![MonthNum]) Is Null) AND > > (([Forms]![fARSelections]![BranchNum]) Is Null)); > > > > SELECT [qAR-3].* > > FROM [qAR-3] > > WHERE ((([Forms]![fARSelections]![CustType])=0 Or > > ([Forms]![fARSelections]![CustType])=-1)) OR > > ((([Forms]![fARSelections]![CustType])=1) AND > > (([qAR-3].cu_install)>(Date()-365))) OR > > ((([Forms]![fARSelections]![CustType])=2) AND > > (([qAR-3].cu_install)<=(Date()-365)));- Hide quoted text - > > > > - Show quoted text - > > Am I misinterpreting this? > > SELECT all rows from qAR-3 if the customer type is 0 or -1 without > restrictions based on install date. > Add to that any customer type 1 if installation was over a year ago. > Add to that any customer of type 2 with an installation date within > the last year. > > SELECT [qAR-3].* > FROM [qAR-3] > WHERE ((([Forms]![fARSelections]![CustType])=0 Or ([Forms]! > [fARSelections]![CustType])=-1)) > OR > ((([Forms]![fARSelections]![CustType])=1) AND > (([qAR-3].cu_install)>(Date()-365))) > OR > ((([Forms]![fARSelections]![CustType])=2) AND > (([qAR-3].cu_install)<=(Date()-365))); > > This appears to be selecting from itself. Would that be causing the > nesting error? > Yes, you misinterpreted the statement. I should have been clearer. The user enters into the form a selection parameter if they want "all records", "only customers over a year old", or "only customers less than a year old". Based upon their request the type value is set on the form. If they entered a type 1 then it tests the cu_install date. The queries works as designed when working with a local table. It only fails when bouncing against an ODBC table(s). I ran another test and had qAR-6 pull data from qAR-1 (eliminating all the conditionals) and it also works. I'd hate to do all the conditionals in VB and dynamically create the query. |