以下に、ユーザーがExcelファイルを選択できるようにするこの機能があり、データをテーブル(MyTable)にインポートします。1 列の Excel ファイルです。インポート先のテーブルには 2 つの列 (F1、F2) が含まれています。
その 2 番目の列に次の情報を取得するには、DoCmd.RunSQL コマンドが必要です。
MyTable.F1 は OEM 部品番号です。その番号を取得し、(JDSubs) テーブルの 2 つの列 (OEMPartNumer、OEMSub) と比較する必要があります。一致が見つかった場合は、(JDSubs からの 2 つの一致を比較する必要があります。 )テーブルで、列(OEMItem)の(AMI)テーブルでそれを見つけようとします一致することがわかった場合、テーブル(AMI)の列(Item)から値を返し、それを(MyTable)列(F2)に挿入する必要があります
テーブル コンテンツの例
MyTable
----------------
F1 | F2
AR77530 |
AR12345 |
JDSubs
---------------------------
OEMPartNumer | OEMSub
AR65123 | AR77530
AR12345 | AR56242
AMI
---------------------------
Item | OEMItem
AMAR77530 | AR77530
AMAR56242 | AR12345
したがって、Excel ファイルからインポートされる番号は、2 つの番号のいずれかになる可能性があります (サブ番号がない場合もあります)。
会社の部品番号 (AMI) と OEM 番号を一致させる必要があるだけです
これは、ワークシートを MyTable にインポートする関数です。一致する AMI 番号で埋められた F2 列を取得し、元に戻す必要があります。
Sub Import()
Dim fDialog As Office.FileDialog
Dim varFile As Variant
Dim CustomerFile As String
Dim LUser As String
Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
With fDialog
.AllowMultiSelect = False
.Title = "Please select your OEM part number file."
.Filters.Clear
.Filters.Add "Excel Spreadsheets", "*.xlsx"
.Filters.Add "Excel Spreadsheets", "*.xls"
.InitialFileName = "C:\Users\" & LUser & "\Desktop"
If .Show = True Then
'Loop through each file selected and add it to the list box.
For Each varFile In .SelectedItems
CustomerFile = varFile
Next
End If
End With
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "MyTable", CustomerFile, False, "sheet1!A:A"
DoCmd.RunSQL ?????
Exit Sub
End Sub
また、ユーザーが一度に 1 つの番号を検索できるように、フォームをセットアップしました。これがその関数です。自動化されたプロセスが必要なだけです
Function fnSearchAndPopulate() As Boolean
Dim d As DAO.Database, r As DAO.Recordset, strSQL As String
Set d = CurrentDb
If Me.txtEnterNumber.Value = "" Then
MsgBox "Please Enter Number", , "Error"
Exit Function
End If
strSQL = " SELECT * FROM JDSubs Inner Join AMI on " & _
" AMI.OEMItem=JDSubs.OEMPartNumber WHERE " & _
" JDSubs.OEMPartNumber= '" & txtEnterNumber.Value & "' or " & _
" JDSubs.OEMSub= '" & txtEnterNumber.Value & "
Debug.Print strSQL
Set r = d.OpenRecordset(strSQL)
If r.EOF Then
MsgBox "OEM # " & Me.txtEnterNumber & " does not exist!", , "No AMI #"
Set d = Nothing
Exit Function
End If
'get here if there is a record
r.MoveFirst
'populate whatever textboxes
Me.txtAMINumber = r!Item
Me.txtDescription = r!Description
Me.txtOEMsubnumber = r!OEMSub
Set d = Nothing
Exit Function
End Function