UtterAccess.com
X   Site Message
(Message will auto close in 2 seconds)

Welcome to UtterAccess! Please ( Login   or   Register )

Custom Search
 
   Reply to this topicStart new topic
> Error 3183 - Why??    
 
   
silveryne
post Aug 16 2009, 09:25 PM
Post#1



Posts: 63
Joined: 25-June 09



Version 2007 during development, 2003 for deployment
I am populating a database by parsing some binary files. It worked fine for a lot of files but all it a sudden, I get this message:
3183 The query cannot be completed. Either the size of the query result is larger than the maximum size of a database (2GB) or there is not enough temporary storage space on the disk to store the query result.
After I hit ok on that error, it says block variable not set on the recordset.close line.
----------------- The parsing operation's brief logic
Read header #F (#F is a stream)
Write header to table R
Create record in table P
Read Record1 from #F
Write Record1 into table F
Read Record2 from #F
Write Record2 into table F
...
...
Edit and update last record in table P
- Recordset opened and closed for each write operation.
- I am using openrecordset and recordset.addnew/.update to write information to table F. Table F is related on two fields with two other tables, table P and table R.
Other facts:
1. I am not running a query.
2. The file size is not nearly 2GB
3. The remaining disk space is 22 GB, not a lot but should be sufficient.
4. I have 4GB Ram and 2GB virtual memory. My core is 2.83 dual if that matters?
5. Task manager says PF is at 825 MB.
Question:
- Why does this happen at all???
- How can I solve the problem???
Side question
- The file is currently at a size 56mb, and the final is supposed to go up about 43 times, which will cause it to approach 2GB. If I hit the 2GB Limit, is there a way to get around that?
Go to the top of the page
 
BananaRepublic
post Aug 16 2009, 10:18 PM
Post#2


Dungeon Cleaner
Posts: 1,504
Joined: 16-June 07
From: Banana Republic


I would be inclined to suspect a case of where error message isn't entirely accurate but possibly an indication of something else.
For example, I wouldn't really want to use OpenRecordset/Addnew/Update if the intent was to append thousands or even hundreds of rows into a table, using a query instead. Recordset object is relatively very resource-intensive and it's not all that hard to run out of resources with the recordset object when one would have no problem running a query.
Try and write a query that basically does all what you had doing in the VBA and see if it gets you going.
Go to the top of the page
 
silveryne
post Aug 16 2009, 10:37 PM
Post#3



Posts: 63
Joined: 25-June 09



I am trapping 3022 to detect duplicates currently. If I do it via db.execute, how shall I test for duplicates? Shall I add a query just for testing or shall I do something else?

When I tried it just now on another table, the db.execute method doesn't seem to give me an error when I try to execute INSERT INTO ... VALUES ...; on inserting duplicating values. It just doesn't execute the query.

FOr shall I use DoCmd.RunSQL instead? But I don't want those warning for each single insert....
Edited by: silveryne on Sun Aug 16 23:55:07 EDT 2009.
Go to the top of the page
 
BananaRepublic
post Aug 16 2009, 11:13 PM
Post#4


Dungeon Cleaner
Posts: 1,504
Joined: 16-June 07
From: Banana Republic


Well, the query you use to append into should already be filtered for duplicates.
hat's your tables structure and what do you need to accomplish here? We could suggest a SQL statement that may work.
Go to the top of the page
 
silveryne
post Aug 17 2009, 12:14 AM
Post#5



Posts: 63
Joined: 25-June 09



Essentially, there are 3 tables, F, R and P
stores the data. There are two columns specified as the primary key.
R's primary key is related to one of the fields of the primary key of F
P's primary key is related to one of the other field in F
All are one to many relationships, with the "many" on the table F side.
Table F will have approximately 4mi + or 5mi + records when I have completed the parsing of the binary files. It currently has 0.6 million records. Each parse will write in anything from 10000 records to 70000 records. Currently, 22 of the 415 files have been parsed.
Suggestions?
Go to the top of the page
 
silveryne
post Aug 17 2009, 02:27 AM
Post#6



Posts: 63
Joined: 25-June 09



I got it..... I forgot to put the dbfailonerror argument into .execute and that's why no error shows up. Thanks for the suggestion. The operation time nearly halfed.
Thanks!!!
Go to the top of the page
 


Custom Search
RSSSearch   Top   Lo-Fi    14th December 2017 - 04:46 AM