Ok, here is my code to-date:
CODE
Private Sub btnParticipantFileImport_Click() 'PARTICIPANT
Dim strFilter As String
Dim strInputFileName As String
Dim lngFlags As Long
Dim tname As String
'TRAP FOR ANY ERRORS
On Error Resume Next
tname = " tblParticipant_Client_Data_ORIGINAL "
'CLOSE TABLES IF OPEN
DoCmd.Close acTable, "tblParticipant_Client_Data_ORIGINAL", acSaveYes
DoCmd.Close acTable, "tblParticipant_Client_Data_MAPPED", acSaveYes
DoCmd.Close acTable, "tblParticipantFieldsMappedStatus", acSaveYes
DoCmd.Close acTable, "tblParticipant_Client_FieldNames", acSaveYes
'DELETE TABLES/FORMS THAT ARE DYNAMICALLY CREATED IF THEY ALREADY EXIST
DoCmd.SetWarnings False
DoCmd.DeleteObject acForm, "frmParticipant_Client_Data_ORIGINAL"
DoCmd.RunSQL "DROP TABLE tblParticipant_Client_Data_ORIGINAL"
DoCmd.RunSQL "DROP TABLE tblParticipant_Client_Data_MAPPED"
DoCmd.RunSQL "DROP TABLE tblParticipant_Client_FieldNames"
DoCmd.SetWarnings True
'CLEAR RECORDS FROM STATIC TABLES
DoCmd.SetWarnings False
DoCmd.RunSQL "DELETE * FROM tblParticipant_FieldMapping"
DoCmd.RunSQL "DELEETE * FROM tblParticipantFieldsMappedStatus"
DoCmd.RunSQL "DELETE * FROM tblParticipant_EV_Data"
DoCmd.RunSQL "DELETE * FROM tblParticipant_Client_Data_GAP"
DoCmd.SetWarnings True
'*********************************************************************
' Step One: Import the Participant Data file provided by the Client
'*********************************************************************
strFilter = ahtAddFilterItem(strFilter, "Excel Files (*.XLS)", "*.XLS")
strFilter = ahtAddFilterItem(strFilter, "Access Files (*.mda, *.mdb)", "*.MDA;*.MDB")
strFilter = ahtAddFilterItem(strFilter, "dBASE Files (*.dbf)", "*.DBF")
strFilter = ahtAddFilterItem(strFilter, "Text Files (*.txt)", "*.TXT")
strFilter = ahtAddFilterItem(strFilter, "All Files (*.*)", "*.*")
strInputFileName = ahtCommonFileOpenSave( _
Filter:=strFilter, OpenFile:=True, _
DialogTitle:="Please select an input file...", _
Flags:=ahtOFN_HIDEREADONLY)
'SELECT NEW CLIENT FILE -- THIS WILL REPLACE ALL DATA, NOT APPEND RECORDS TO EXISTING DATA!!
If Len(strInputFileName) > 0 Then
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel51, "tblParticipant_Client_Data_ORIGINAL", strInputFileName, True
Else
MsgBox "No File Selected"
End If
'******************************************************************
' Step Two: Create a table with the Client Data Field Names
' This table will be used for the field mapping
' excercises
'******************************************************************
Dim db As Database, td As TableDef
Dim rs As DAO.Recordset
Dim fielddescription As String
Dim FieldPosition As Long
Dim MappingStatus As String
Dim fld As Field
n = 0
Set db = CurrentDb
' Trap for any errors.
On Error Resume Next
tname = "tblParticipant_Client_FieldNames"
'Create new tblTable
db.Execute "CREATE TABLE tblParticipant_Client_FieldNames(FieldName TEXT (55), FieldPosition DOUBLE, MappingStatus TEXT (25));"
Set rs = db.OpenRecordset("tblParticipant_Client_FieldNames")
Set td = db.TableDefs("tblParticipant_Client_Data_ORIGINAL")
For Each fld In td.Fields
fielddescription = fld.Name
FieldPosition = fld.OrdinalPosition
MappingStatus = ""
rs.AddNew
rs!FieldName = fielddescription
rs!FieldPosition = FieldPosition
rs!MappingStatus = MappingStatus
rs.Update
Next fld
Resume Next
rs.MoveNext
rs.Close
'******************************************************************
' Step Three: Create a dynamic table with Client Data ORIGINAL records
' This table will be used for reference/display in the
' field mapping excercises
'******************************************************************
Const NEWFORM = "frmParticipant_Client_Data_ORIGINAL"
makeNewForm "frmTemplate", NEWFORM
Dim f As Form
Dim ctl As Control
DoCmd.OpenForm "frmParticipant_Client_Data_ORIGINAL", acDesign, , , , acHidden
Set db = CurrentDb
Set f = Forms(NEWFORM)
f.RecordSource = "tblParticipant_Client_Data_ORIGINAL"
f.DefaultView = 2
Dim c As Control
Dim strFieldName As String
Dim i As Integer
For i = 0 To CurrentDb.TableDefs("tblParticipant_Client_Data_ORIGINAL").Fields.Count - 1
strFieldName = CurrentDb.TableDefs("tblParticipant_Client_Data_ORIGINAL").Fields(i).Name
Set c = CreateControl(NEWFORM, acTextBox, acDetail, , "[" & strFieldName & "]")
c.Name = strFieldName
Next i
DoCmd.Close acForm, NEWFORM, acSaveYes
'******************************************************************
' Step Four: Update text boxes on the Main Switchboard to reflect
' the data you just imported
'******************************************************************
ParticipantCount = DCount("*", "tblParticipant_Client_Data_ORIGINAL")
ClientFieldNameCount = DCount("*", "tblParticipant_Client_FieldNames")
ParticipantGAPDataCount = DCount("*", "tblParticipant_Client_Data_GAP")
ParticipantMapCount = DCount("*", "tblParticipantFieldsMappedStatus", "Mapping Status = 'Mapped'")
ParticipantDNICount = DCount("*", "tblParticipantFieldsMappedStatus", "Mapping Status = 'Do Not Import'")
ParticipantACRCount = DCount("*", "tblParticipantFieldsMappedStatus", "Mapping Status = 'Awaiting Client Review'")
db.Close
End Sub
It is all working as expected with one tiny, tiny exception:
CODE
DoCmd.SetWarnings False
DoCmd.DeleteObject acForm, "frmParticipant_Client_Data_ORIGINAL"
DoCmd.RunSQL "DROP TABLE tblParticipant_Client_Data_ORIGINAL"
DoCmd.RunSQL "DROP TABLE tblParticipant_Client_Data_MAPPED"
DoCmd.RunSQL "DROP TABLE tblParticipant_Client_FieldNames"
DoCmd.SetWarnings True
It won't delete (drop) my table: tblParticipant_Client_Data_ORIGINAL. I am not sure why this stopped working.
Thoughts?