Code:
Function SaveData(strFile) As String
On Error GoTo errProc:
Dim j As Integer, k As Integer
Dim strTable As String, strField As String, lngRec As Long
Dim rsSessions As ADODB.Recordset
Dim rsStations As ADODB.Recordset
Dim rsTransducers As ADODB.Recordset
Dim rsComments As ADODB.Recordset
Dim rsRemarks As ADODB.Recordset
Dim rsDrops As ADODB.Recordset
Dim rsHistories As ADODB.Recordset
Dim rsTimings As ADODB.Recordset
Dim rsDest As ADODB.Recordset
Set rsSessions = New ADODB.Recordset
Set rsStations = New ADODB.Recordset
Set rsTransducers = New ADODB.Recordset
Set rsComments = New ADODB.Recordset
Set rsRemarks = New ADODB.Recordset
Set rsDrops = New ADODB.Recordset
Set rsHistories = New ADODB.Recordset
Set rsTimings = New ADODB.Recordset
Set rsDest = New ADODB.Recordset
SaveData = "Imported"
rsSessions.Open "SELECT * FROM [" & strFile & "].Sessions;", CurrentProject.Connection, adOpenDynamic, adLockPessimistic
strTable = "Sessions"
While Not rsSessions.EOF
lngRec = rsSessions!SessionID
rsDest.Open "SELECT * FROM Sessions;", CurrentProject.Connection, adOpenDynamic, adLockPessimistic
rsDest.AddNew
For j = 1 To rsDest.Fields.Count - 1
strField = rsDest.Fields(j).Name
rsDest.Fields(j) = rsSessions.Fields(rsDest.Fields(j).Name)
Next
strField = ""
rsDest.Update
rsDest.Close
CurrentDb.Execute "INSERT INTO SessionStructure(SessionID, StructureID) VALUES(" & DMax("SessionID", "Sessions") & ", '" & Me.lbxStructures & "')"
strTable = "Comments"
rsComments.Open "SELECT * FROM [" & strFile & "].Comments WHERE SessionID=" & rsSessions!SessionID & ";", CurrentProject.Connection, adOpenDynamic, adLockPessimistic
While Not rsComments.EOF
rsDest.Open "SELECT * FROM Comments;", CurrentProject.Connection, adOpenDynamic, adLockPessimistic
lngRec = rsComments!CommentsID
rsDest.AddNew
rsDest!SessionID = DMax("SessionID", "Sessions")
For j = 2 To rsDest.Fields.Count - 1
strField = rsDest.Fields(j).Name
rsDest.Fields(j) = rsComments.Fields(rsDest.Fields(j).Name)
Next
strField = ""
rsDest.Update
rsDest.Close
rsComments.MoveNext
Wend
rsComments.Close
strTable = "Remarks"
rsRemarks.Open "SELECT * FROM [" & strFile & "].Remarks WHERE SessionID=" & rsSessions!SessionID & ";", CurrentProject.Connection, adOpenDynamic, adLockPessimistic
While Not rsRemarks.EOF
rsDest.Open "SELECT * FROM Remarks;", CurrentProject.Connection, adOpenDynamic, adLockPessimistic
lngRec = rsRemarks!RemarkID
rsDest.AddNew
rsDest!SessionID = DMax("SessionID", "Sessions")
For j = 2 To rsDest.Fields.Count - 1
strField = rsDest.Fields(j).Name
rsDest.Fields(j) = rsRemarks.Fields(rsDest.Fields(j).Name)
Next
strField = ""
rsDest.Update
rsDest.Close
rsRemarks.MoveNext
Wend
rsRemarks.Close
strTable = "Transducers"
rsTransducers.Open "SELECT * FROM [" & strFile & "].Transducers WHERE SessionID=" & rsSessions!SessionID & ";", CurrentProject.Connection, adOpenDynamic, adLockPessimistic
While Not rsTransducers.EOF
rsDest.Open "SELECT * FROM Transducers;", CurrentProject.Connection, adOpenDynamic, adLockPessimistic
lngRec = rsTransducers!TransducerID
rsDest.AddNew
rsDest!SessionID = DMax("SessionID", "Sessions")
For j = 2 To rsDest.Fields.Count - 1
strField = rsDest.Fields(j).Name
rsDest.Fields(j) = rsTransducers.Fields(rsDest.Fields(j).Name)
Next
strField = ""
rsDest.Update
rsDest.Close
rsTransducers.MoveNext
Wend
rsTransducers.Close
strTable = "Stations"
rsStations.Open "SELECT * FROM [" & strFile & "].Stations WHERE SessionID=" & rsSessions!SessionID & ";", CurrentProject.Connection, adOpenDynamic, adLockPessimistic
While Not rsStations.EOF
rsDest.Open "SELECT * FROM Stations;", CurrentProject.Connection, adOpenDynamic, adLockPessimistic
lngRec = rsStations!StationID
rsDest.AddNew
rsDest!SessionID = DMax("SessionID", "Sessions")
For j = 2 To rsDest.Fields.Count - 1
strField = rsDest.Fields(j).Name
rsDest.Fields(j) = rsStations.Fields(rsDest.Fields(j).Name)
Next
strField = ""
rsDest.Update
rsDest.Close
strTable = "Drops"
rsDrops.Open "SELECT * FROM [" & strFile & "].Drops WHERE StationID=" & rsStations!StationID & ";", CurrentProject.Connection, adOpenDynamic, adLockPessimistic
While Not rsDrops.EOF
rsDest.Open "SELECT * FROM Drops;", CurrentProject.Connection, adOpenDynamic, adLockPessimistic
lngRec = rsDrops!DropID
rsDest.AddNew
rsDest!StationID = DMax("StationID", "Stations")
For j = 2 To rsDest.Fields.Count - 1
strField = rsDest.Fields(j).Name
rsDest.Fields(j) = rsDrops.Fields(rsDest.Fields(j).Name)
Next
strField = ""
rsDest.Update
rsDest.Close
strTable = "Histories"
rsHistories.Open "SELECT * FROM [" & strFile & "].Histories WHERE DropID=" & rsDrops!DropID & ";", CurrentProject.Connection, adOpenDynamic, adLockPessimistic
While Not rsHistories.EOF
rsDest.Open "SELECT * FROM Histories;", CurrentProject.Connection, adOpenDynamic, adLockPessimistic
lngRec = rsHistories!HistoryID
rsDest.AddNew
rsDest!DropID = DMax("DropID", "Drops")
For j = 3 To rsDest.Fields.Count - 1
strField = rsDest.Fields(j).Name
rsDest.Fields(j) = rsHistories.Fields(rsDest.Fields(j).Name)
Next
strField = ""
rsDest.Update
rsDest.Close
rsHistories.MoveNext
Wend
lngRec = 0
rsHistories.Close
strTable = "Timings"
rsTimings.Open "SELECT * FROM [" & strFile & "].Timings WHERE DropID=" & rsDrops!DropID & ";", CurrentProject.Connection, adOpenDynamic, adLockPessimistic
While Not rsTimings.EOF
rsDest.Open "SELECT * FROM Timings;", CurrentProject.Connection, adOpenDynamic, adLockPessimistic
lngRec = rsTimings!TimingID
rsDest.AddNew
rsDest!DropID = DMax("DropID", "Drops")
For j = 3 To rsDest.Fields.Count - 1
strField = rsDest.Fields(j).Name
rsDest.Fields(j) = rsTimings.Fields(rsDest.Fields(j).Name)
Next
strField = ""
rsDest.Update
rsDest.Close
rsTimings.MoveNext
Wend
lngRec = 0
rsTimings.Close
rsDrops.MoveNext
Wend
lngRec = 0
rsDrops.Close
rsStations.MoveNext
Wend
lngRec = 0
rsStations.Close
rsSessions.MoveNext
Wend
lngRec = 0
rsSessions.Close
exitProc:
Exit Function
errProc:
Debug.Print Mid(strFile, InStrRev(strFile, "\") + 1) & " : " & strTable & " : " & strField & " : " & lngRec & " :: " & Err.Number & ":" & Err.Description
SaveData = "Failed"
Resume exitProc:
End Function