HalloweenWeed
Member
- Local time
- Today, 05:15
- Joined
- Apr 8, 2020
- Messages
- 220
Thank you for all your replies. I appreciate ALL your suggestions and comments, and do take them seriously.
Regarding the "never ending IIf()": After Access tries to create the table, and fails with the "Access has stopped working" error, when reopening the db I have a properly completed table with the correct values in all fields, but incomplete records. The IIf() is working properly. However, when I delete all the records in the table, and compact and repair the db afterward (or vice-versa), the db has grown permanently by over 7MB - I no longer trust that it remains stable, so I restore it from backup. All the records that were shown in the logfile were written properly.
@arnelgp this is a new database file that only I have access to, no one else can open it. All the data comes from Sharepoint, and the table data linked to the Excel file is static at runtime, only I can access that Excel file too. But I don't really understand how Sharepoint tables are presented directly to Access when a query is run. What's more what I did read is that those "complex data", "type2/object" data type fields actually are linked to tables hidden in Access, I have looked for them (hidden tables turned on) and cannot find them. It may be that they only exist at query run time, and are not saved as they are linked. I also read that the "Long Text" fields are actually "pages" of memory. This would only apply to the items from the recordset "tblLngTxt" at the bottom of "MakeIR_tbl()". Already I have plans to remove all but 3 of those (the 3 using Log Text fields), but it involves changing the Excel linked table Query .iqy, so I haven't gotten around to that yet. This Sharepoint table is used by many users, multiple times daily, so it is not only possible that their locking is affecting it, but likely that a user will be editing a record at the time of query. This is a large institution, and there are literally hundreds of users of that table, and over a thousand records made per year (so multiple per day). I am under the impression that Sharepoint is now used as a tool for this because it handles the multi-user aspect of this better than Access can, I do not know the implementation methods involved, and am not allowed access to "Sharepoint Designer" - the administration and creation tool, nor do I have Admin privileges to the design of the Sharepoint table.
The problem with Sharepoint is, the data is not represented in a way that the Manager of the Sharepoint database (not to be confused with Administrator) can easily find entry errors for correction. First, we can only see 30 records at a time, and cannot jump to any given record without using a filter to do so, meaning if scrolling through the list, you can only go 30 at a time, and must scroll all the way to the bottom to get the "next" set of records, meaning if you stop during the process (likely), that you have to use a lot of time just to get back to where you were (this also times out when idle, requiring a refresh of the website to continue). If a filter is used, the only record(s) seen is what meets that single criterion. Then there is a lot of scrolling both ways involved to see the raw data as a table, with lots of blank space. The user can select which fields to look at, by creating a "view," but then still to jump to a particular record without entering a specific filter (a sningle number or date), it takes time to scroll and then wait for the next 30 to load. My job is to streamline that process, and also produce statistics, in multiple ways, each with variable date ranges.
I have tried using the DB.OpenRecordset(tblDocName, dbOpenSnapshot, dbReadOnly) method for the linked Sharepoint table, but it does not work (throws an error), tried it with IMEX=1 (read only), but that also doesn't work either. I can only use IMEX=2 and DB.OpenRecordset(tblDocName, dbOpenDynaset) I have not tried other values in the LockEdit parameter with dbOpenDynaset (other than dbInconsistent).
I'm going to try making a MakeTable query out of the TblSQL string now. When I first started making this a month ago I couldn't do this because I was originally using a date range from a form, and it wouldn't work when the Access Query was called by vba. Now that I have eliminated that, for a couple of reasons, I can try it. I can try it a couple of ways, with and without the logic processing, I can do the logic processing changes in vba, and I'll find out which is faster. I'll let you know how it goes.
Regarding the "never ending IIf()": After Access tries to create the table, and fails with the "Access has stopped working" error, when reopening the db I have a properly completed table with the correct values in all fields, but incomplete records. The IIf() is working properly. However, when I delete all the records in the table, and compact and repair the db afterward (or vice-versa), the db has grown permanently by over 7MB - I no longer trust that it remains stable, so I restore it from backup. All the records that were shown in the logfile were written properly.
@arnelgp this is a new database file that only I have access to, no one else can open it. All the data comes from Sharepoint, and the table data linked to the Excel file is static at runtime, only I can access that Excel file too. But I don't really understand how Sharepoint tables are presented directly to Access when a query is run. What's more what I did read is that those "complex data", "type2/object" data type fields actually are linked to tables hidden in Access, I have looked for them (hidden tables turned on) and cannot find them. It may be that they only exist at query run time, and are not saved as they are linked. I also read that the "Long Text" fields are actually "pages" of memory. This would only apply to the items from the recordset "tblLngTxt" at the bottom of "MakeIR_tbl()". Already I have plans to remove all but 3 of those (the 3 using Log Text fields), but it involves changing the Excel linked table Query .iqy, so I haven't gotten around to that yet. This Sharepoint table is used by many users, multiple times daily, so it is not only possible that their locking is affecting it, but likely that a user will be editing a record at the time of query. This is a large institution, and there are literally hundreds of users of that table, and over a thousand records made per year (so multiple per day). I am under the impression that Sharepoint is now used as a tool for this because it handles the multi-user aspect of this better than Access can, I do not know the implementation methods involved, and am not allowed access to "Sharepoint Designer" - the administration and creation tool, nor do I have Admin privileges to the design of the Sharepoint table.
The problem with Sharepoint is, the data is not represented in a way that the Manager of the Sharepoint database (not to be confused with Administrator) can easily find entry errors for correction. First, we can only see 30 records at a time, and cannot jump to any given record without using a filter to do so, meaning if scrolling through the list, you can only go 30 at a time, and must scroll all the way to the bottom to get the "next" set of records, meaning if you stop during the process (likely), that you have to use a lot of time just to get back to where you were (this also times out when idle, requiring a refresh of the website to continue). If a filter is used, the only record(s) seen is what meets that single criterion. Then there is a lot of scrolling both ways involved to see the raw data as a table, with lots of blank space. The user can select which fields to look at, by creating a "view," but then still to jump to a particular record without entering a specific filter (a sningle number or date), it takes time to scroll and then wait for the next 30 to load. My job is to streamline that process, and also produce statistics, in multiple ways, each with variable date ranges.
I have tried using the DB.OpenRecordset(tblDocName, dbOpenSnapshot, dbReadOnly) method for the linked Sharepoint table, but it does not work (throws an error), tried it with IMEX=1 (read only), but that also doesn't work either. I can only use IMEX=2 and DB.OpenRecordset(tblDocName, dbOpenDynaset) I have not tried other values in the LockEdit parameter with dbOpenDynaset (other than dbInconsistent).
I'm going to try making a MakeTable query out of the TblSQL string now. When I first started making this a month ago I couldn't do this because I was originally using a date range from a form, and it wouldn't work when the Access Query was called by vba. Now that I have eliminated that, for a couple of reasons, I can try it. I can try it a couple of ways, with and without the logic processing, I can do the logic processing changes in vba, and I'll find out which is faster. I'll let you know how it goes.