Solved

Copy table from one database to  same table in another database

Posted on 2016-09-15
9
43 Views
Last Modified: 2016-09-30
I used this part of code in Access 2010  to move records from four current tables in kind of history database that has the same four tables.
In example below that I used  it has one table I adjusted that for four tables. I repeated step 2 and 3 for every table. But got error after first table was moved it means after first step3. I must missing something after step3.


but I got error : "System resource exceeded"

Here is code.
Sub DoArchive()
On Error GoTo Err_DoArchive
  Dim ws As DAO.Workspace   'Current workspace (for transaction).
  Dim db As DAO.Database    'Inside the transaction.
  Dim bInTrans As Boolean   'Flag that transaction is active.
  Dim strSql As String      'Action query statements.
  Dim strMsg As String      'MsgBox message.

  'Step 1: Initialize database object inside a transaction.
  Set ws = DBEngine(0)
  ws.BeginTrans
  bInTrans = True
  Set db = ws(0)

  'Step 2: Execute the append.
  strSql = "INSERT INTO MyArchiveTable ( MyField, AnotherField, Field3 ) " & _
    "IN ""C:\My Documents\MyArchive.mdb"" " & _
    "SELECT SomeField, Field2, Field3 FROM MyTable WHERE (MyYesNoField = True);"
  db.Execute strSql, dbFailOnError

  'Step 3: Execute the delete.
  strSql = "DELETE FROM MyTable WHERE (MyYesNoField = True);"
  db.Execute strSql, dbFailOnError

  'Step 4: Get user confirmation to commit the change.
  strMsg = "Archive " & db.RecordsAffected & " record(s)?"
  If MsgBox(strMsg, vbOKCancel + vbQuestion, "Confirm") = vbOK Then
    ws.CommitTrans
    bInTrans = False
  End If

Exit_DoArchive:
  'Step 5: Clean up
  On Error Resume Next
  Set db = Nothing
  If bInTrans Then   'Rollback if the transaction is active.
    ws.Rollback
  End If
  Set ws = Nothing
Exit Sub

Err_DoArchive:
  MsgBox Err.Description, vbExclamation, "Archiving failed: Error " & Err.number
  Resume Exit_DoArchive
End Sub
0
Comment
Question by:Taras
  • 4
  • 3
  • 2
9 Comments
 
LVL 32

Assisted Solution

by:ste5an
ste5an earned 250 total points
ID: 41800450
How big is that table? Do you execute this right after starting Access?

The error message indicates, that you have used too many resources at that point (handles etc.).
0
 
LVL 84

Accepted Solution

by:
Scott McDaniel (Microsoft Access MVP - EE MVE ) earned 250 total points
ID: 41800451
Do you ONLY repeat steps 2 and 3 for subsequent tables?
0
 

Author Comment

by:Taras
ID: 41800463
Yes I only repeat steps 2 and 3 for table tbl2 tbl3 and tbl4
0
 

Author Comment

by:Taras
ID: 41800466
All database is size of 200mb and I have around 20 tables.
But I am moving only those 4 the largest one.
0
How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

 
LVL 32

Expert Comment

by:ste5an
ID: 41800485
DBEngine requires some resources, but there is no obvious reason for that.

Is your archive at a fixed location in the file system? Then I would consider using linked tables as a test.
0
 

Author Comment

by:Taras
ID: 41805348
I solved this by putting this part of code before my first step.

     DBEngine.SetOption dbMaxLocksPerFile, 200000

How ever I go an new error:

To ad some complicity I add to each of those four Parent table its child table.
Parent and Child table are in one to many relationship. Complete referential integrity imposed. Everything goes ok up to last table.
In this fourth table (parent table) I first insert records and it went through without error then  when I tried to  insert – copy record  in child table I got error:
You cannot add or change a record because a related record is Required in table...

I am sure that related records are in parent table not sure while I am getting message that they are not.
0
 
LVL 84
ID: 41805394
Are you using the same connection and transaction for all those processes?
0
 

Author Comment

by:Taras
ID: 41805540
Yes I am using same connection and transaction.
0
 
LVL 84
ID: 41806273
Be sure that you're properly filling the Foreign Key field in the child tables with the parent record's PK id value.
0

Featured Post

Complete Microsoft Windows PC® & Mac Backup

Backup and recovery solutions to protect all your PCs & Mac– on-premises or in remote locations. Acronis backs up entire PC or Mac with patented reliable disk imaging technology and you will be able to restore workstations to a new, dissimilar hardware in minutes.

Join & Write a Comment

I originally created this report in Crystal Reports 2008 where there is an option to underlay sections. I initially came across the problem in Access Reports where I was unable to run my border lines down through the entire page as I was using the P…
A simple tool to export all objects of two Access files as text and compare it with Meld, a free diff tool.
Familiarize people with the process of retrieving data from SQL Server using an Access pass-thru query. Microsoft Access is a very powerful client/server development tool. One of the ways that you can retrieve data from a SQL Server is by using a pa…
Basics of query design. Shows you how to construct a simple query by adding tables, perform joins, defining output columns, perform sorting, and apply criteria.

747 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now