My idea would be to: Create a field in the CLIENT file that contains a list of all users that can see that client.
Create an i-descriptor in the file that you're reporting on that pulls that field across. Use a WHEN or WITH (can never remember which) to only pick records where that user's id appears in that field. (Or create a subroutine which returns an "allow" or "deny" field and only select "allow"ed records.) Cheers, Wol -----Original Message----- From: owner-u2-us...@listserver.u2ug.org [mailto:owner-u2-us...@listserver.u2ug.org] On Behalf Of David A. Green Sent: 30 January 2009 12:49 To: u2-users@listserver.u2ug.org Subject: RE: [U2] UniData LIMITs Bill, I would create a CLIENT Type field that you can lump the CLIENTS together and use the Type field for your selections. Thanks, David A. Green www.dagconsulting.com (480) 813-1725 -----Original Message----- From: owner-u2-us...@listserver.u2ug.org [mailto:owner-u2-us...@listserver.u2ug.org] On Behalf Of Bill Haskett Sent: Thursday, January 29, 2009 12:44 PM To: U2 Mail List Subject: [U2] UniData LIMITs We have a report writer that allows users to select the client they want to print any report for. This subroutine builds a list of clients available to any particular user and uses this list to either compare against the clients entered or of all clients are selected then the entire list is used. When this list is placed in an ECL query and executed, e.g.... SELECT CUSTOMERS WITH CLIENTNO = "1""2""3""4"..... ...all has been fine for years. We picked up a new customer who has over 300 clients. When a user tries to run a report for all clients accessible by them the query aborts with... WITH condition stack overflow A quick look at "LIMIT" shows: :LIMIT U_MAXFNAME: File name limit = 198. U_NAMESZ: Record id(key) size = 126. U_SELEMAX: Number of select list = 10. U_MAXDATA: Number of DATA statement = 500. U_HEADSZ: HEADER/FOOTER length = 2120. U_MAXHASHTYPES: Number of hash functions = 3. U_MAXSORT: Number of sort fields(BY...) in LIST = 20. U_MAXWITH: WITH stack size = 256. U_MAXWHEN: WHEN stack size = 60. U_MAXCAL: Number of SUM+AVG+PCT+CAL in LIST = 54. U_MAXBREAK: Number of BREAK.ON+BREAK.SUP in LIST = 15. U_MAXLIST: Number of attribute names in LIST = 999. U_LINESZ: Page width in printing = 272. U_PARASIZE: Paragraph name and its parameter size = 256. U_LPCMD: System spooler name = NT Spooler. U_MAXPROMPT: Number of prompts allowed in paragraph = 60. U_FSIZE: Dictionary field name size = 31. U_MAXVALUE: Number of values WHEN can handle = 10240. U_MAXBYEXPVAL: Number of values BY.EXP can handle = 10240. U_SENTLEN: Maximum sentence length = 9247. U_PROCBUFSZ: Proc buffer size = 8191. U_NIDES: Maximum number of virtual fields in query= 256 ...which indicates there's a limit of data allowed in the "WITH" clause(s) of 256. The UniData documentation says these parameters are __NOT__ configurable. How in the world are other people overcoming this limitation? Doesn't anyone want data for more than 256 somethings? Is it possible for me to overcome this limitation without going into 1,000 programs to split large numbers of ECL queries? Or am I forced to count the "somethings" available to submit to any query and abort if its more than 250? Am I forced to split up A/P check runs (and many other processes) into two or more runs to accommodate this limitation? Any experience, or thoughts, on this will be appreciated. Bill ------- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/ ------- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/ ------- u2-users mailing list u2-users@listserver.u2ug.org To unsubscribe please visit http://listserver.u2ug.org/