สวัสดีครับได้แล้วครับพี่
ผมทำตัวอย่างด้วย กดปุ่มเพื่อไปเลือกไฟล์ที่จะ นำเข้าข้อมูลโดย ใช้ Function ไปไว้ใน Module
Function selectFile()
Dim fd As FileDialog, fileName As String
On Error GoTo ErrorHandler
Set fd = Application.FileDialog(msoFileDialogFilePicker)
fd.AllowMultiSelect = False
If fd.Show = True Then
If fd.SelectedItems(1) <> vbNullString Then
fileName = fd.SelectedItems(1)
End If
Else
End
End If
selectFile = fileName
Set fd = Nothing
Exit Function
ErrorHandler:
Set fd = Nothing
MsgBox "Error " & Err & ": " & Error(Err)
End Function
ส่วนคำสั่งในการนำเข้าผมใส่ไว้ใน ปุ่ม CommandButton
Private Sub Import_Click()
Dim today As String
today = Now()
DoCmd.SetWarnings False
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, "table1", selectFile, True
Me.stamp = "Update : " & today
Call saveMemoDate
Call filltextbox
DoCmd.SetWarnings True
End Sub
ตรง table1 คือ table ใน Access ที่จะนำเข้าข้อมูล จากไฟล์ Excel
ส่วนการกำหนด วันที่ เราอัพโหลดนั้น ผมใช้ Today() เพราะมันจะเก็บเวลาไว้ด้วย จึงกำหนดตัวแปรเก็บค่าไว้ และเมื่อกด นำเข้าไฟล์
ที่ textBox ชื่อ Stamp จะแสดงวันที่และเวลานำเข้า และจะบันทึกไว้ใน Table ชื่อ MemoDate ที่ได้สร้างไว้เก็บวันที่ นำเข้าข้อมูล
ส่วน คำสั่งในการบันทึกเวลา นำเข้าก็คือ
Sub saveMemoDate()
On Error GoTo Err_Err
Set DB = CurrentDb()
Set rs = DB.OpenRecordset("Memodate", DB_OPEN_DYNASET)
rs.Edit
rs![Date] = stamp
rs.Update
Exit_err:
Exit Sub
Err_Err:
MsgBox Error$
MsgBox ("Data fail try again")
Resume Exit_err
End Sub
คำสั่งดึงข้อมูลจาก Record ของ ตาราง Memodate ชื่อ Date มาแสดงบน Textbox ชื่อ Stamp
Sub filltextbox()
On Error GoTo Err_Err
Set DB = CurrentDb()
Set rs = DB.OpenRecordset("Memodate", DB_OPEN_DYNASET)
Me.stamp = rs![Date]
Exit_err:
Exit Sub
Err_Err:
MsgBox Error$
MsgBox ("Data fail try again")
Resume Exit_err
End Sub
ขั้นตอนสุดท้ายถ้าเราจะให้เปิดฟอร์มมาแล้ว แสดงวันที่นำเข้าล่าสุดก็ไปที่ form event on load
ใส่
Call filltextbox
เพื่อให้แสดงค่าวันที่ๆเราบันทึกล่าสุดของตาราง MemoDate นั้นเองครับ