Karen Schaefer
asked on
Export Objects where Objects does not exists in the receiving MDB
I am writing code to export a group of objects to multiple database sources. How do I export when the object only exists in the current db?
I have tried a TransferDatabase, however I am getting an Error 3011, how do I force the issue?
Thanks,
k
I have tried a TransferDatabase, however I am getting an Error 3011, how do I force the issue?
If rs1.RecordCount > 0 Then
'Check for .ldb file - the APDMS_MDB in use or left open by user
strSQL3 = "Select ObjectName, ObjectType from tblExportList"
Set rs3 = curdb.OpenRecordset(strSQL3)
rs3.MoveFirst
Do Until rs3.EOF
nObjName = rs3.Fields("ObjectName")
nObjType = GetObjectTypeConstant(rs3.Fields("ObjectType"))
'Replaces existing Database objects with revised versions.
DoCmd.TransferDatabase acExport, "Microsoft Access", gAPFilePath, nObjType, nObjName, nObjName
rs3.MoveNext
Loop
Thanks,
k
ASKER
How does this affirm that the object exists in the receiving mdb? How do I force the export of the object?
K
K
ASKER
your code suggestion if I understand is comparing the currentdb sysobjects to the tbllist.
correct?
correct?
oops, misread your q,
are you transferring all objects ? or just tables?
if you are, then just backup your currentdb.
are you transferring all objects ? or just tables?
if you are, then just backup your currentdb.
ASKER
Tell me if I might be on the right track. - Also just thought of a possible roadblock - I only want to export certain objects, so using msysobjects in the current db will be showing all objects and not just the ones for export. My process includes importing all the objects form the development version of the mdb into the export tool. And I do not want to export those objects within the export tool use only.
k
Still not sure how to use the transferdatabase to force the export of the object.
k
strSQL3 = "Select ObjectName, ObjectType from tblExportList"
Set rs3 = curdb.OpenRecordset(strSQL3)
rs3.MoveFirst
Do Until rs3.EOF
nObjName = rs3.Fields("ObjectName")
nObjType = GetObjectTypeConstant(rs3.Fields("ObjectType"))
strObjSQL = "Select Name from msysobjects IN '" & gAPFilePath & "'"
Set rsObj = curdb.Recordsets(strObjSQL)
Do Until rsObj.EOF
nObj1 = rsObj.Fields("Name")
If DCount("*", "msysobjects", "[name]='" & nObjName & "'") > 0 Then
'Replaces existing Database objects with revised versions.
DoCmd.TransferDatabase acExport, "Microsoft Access", gAPFilePath, nObjType, nObjName, nObjName
End If
Still not sure how to use the transferdatabase to force the export of the object.
TransferDatabase doesn't care if the object exists in the target database or not, so I'm not sure exactly what your issue is. For example, if I have a table named "tblOne" in my development database, I can transfer it to any other database using TransferDatabase, regardless of whether tblOne exists in the target or not.
In other words, your error is occurring for some reason other than what you assume. Can you pinpoint the line where it fails, and confirm the values in your various variables and recordset fields? I'm curious whether the object is named properly in you tblExportList table ...
In other words, your error is occurring for some reason other than what you assume. Can you pinpoint the line where it fails, and confirm the values in your various variables and recordset fields? I'm curious whether the object is named properly in you tblExportList table ...
ASKER
What is the object type id for acReport?
'
Function GetObjectTypeConstant(strO bjType As String) As Long
Dim GetObjectType As Integer
Select Case strObjType
Case "acForm"
GetObjectType = 2
Case "acModule"
GetObjectType = 5
Case "acQuery"
GetObjectType = 1
Case "acTable"
GetObjectType = 0
Case "acReport"
GetObjectType = 0
Case Else
GetObjectType = -1
End Select
GetObjectTypeConstant = GetObjectType
End Function
'
Function GetObjectTypeConstant(strO
Dim GetObjectType As Integer
Select Case strObjType
Case "acForm"
GetObjectType = 2
Case "acModule"
GetObjectType = 5
Case "acQuery"
GetObjectType = 1
Case "acTable"
GetObjectType = 0
Case "acReport"
GetObjectType = 0
Case Else
GetObjectType = -1
End Select
GetObjectTypeConstant = GetObjectType
End Function
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Turns out that my code for determiner the GetObjectType for Reports was missing from my code.
Thanks.
K
Thanks.
K
Open in new window
.