แสดงกระทู้

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - mtaccess

หน้า: 1 [2] 3 4 5 6
19
ลองดูตัวอย่างนี้นะครับ

ถ้าไม่เข้าใจตรงโค้ด AddnewSQL กับ UpdateSQL ให้ดูการกำหนดคิวรี่ที่ผมใส่ไว้ให้ด้วยนะครับ
ทั้ง 2 คิวรี่นั้นคือคิวรี่ที่นำไปใช้เขียนโค๊ด โดยมีการกำหนดเงื่อนไขไว้แล้ว คิวรี่ 2 อันนั้น สามารถลบทิ้งได้
เพราะผมสร้างไว้ให้ดูการกำหนดเงื่อนไขเฉยๆ
โดยเงื่อนไขการอัพเดทผมเช็คจาก Field PersonalName นะครับ ถ้าส่วนนี้ไม่เหมือนกันจะอัพเดทใหม่

ตัวอย่างโค๊ด
โค๊ด: [Select]
Private Sub Command0_Click()
'ตัวอย่างโค้ดการนำเข้าข้อมูลโดยมี Dialog ให้เลือกไฟล์เข้ามา
Dim dlg As FileDialog
Dim sql, Deletesql, AddnewSQL, UpdateSQL As String
Dim DB As DAO.Database
Dim DBaddnew As DAO.Database
Dim DBupdate As DAO.Database

Set DB = CurrentDb
Set DBaddnew = CurrentDb
Set DBupdate = CurrentDb

If MsgBox("คุณต้องการนำเข้าข้อมูลใหม่หรือไม่", vbQuestion + vbYesNo, "ระบบสอบถาม") = vbYes Then
Set dlg = Application.FileDialog(msoFileDialogFilePicker)
With dlg
.Title = "Select the Excel file to import"
.AllowMultiSelect = False
.Filters.Clear
.Filters.Add "Excel Files", "*.xls*", 1
.Filters.Add "All Files", "*.*", 2

If .Show = -1 Then
StrFileName = .SelectedItems(1)
Deletesql = "DELETE * FROM TempImport;" 'สั่งให้ลบข้อมูลของตารางสำรองให้หมดก่อนเพื่อรอรับข้อมูลนำเข้าใหม่ที่จะเข้ามา
DB.Execute Deletesql
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, "TempImport", StrFileName, True 'นำเข้าไปยังตารางชื่อ TempImport
Else
Exit Sub
End If
End With
End If

'โค้ดสำหรับเพิ่มข้อมูลใหม่ที่ไม่เคยมีรหัสบัตรประชาชน
AddnewSQL = "INSERT INTO tblDataMain ( PersonalID, PersonalName ) " _
& "SELECT TempImport.PersonalID, TempImport.PersonalName " _
& "FROM TempImport WHERE (((TempImport.PersonalID) Not In (select personalID from [tblDataMain])));"

'โค้ดสำหรับอัพเดทข้อมูลใน Field PersonalName ที่มีรหัสบัตรประชาชนตรงกัน
UpdateSQL = "UPDATE tblDataMain INNER JOIN TempImport ON tblDataMain.PersonalID = " _
& "TempImport.PersonalID SET tblDataMain.PersonalName = [TempImport].[PersonalName] " _
& "WHERE (((tblDataMain.PersonalName)<>[TempImport].[PersonalName]) AND ((tblDataMain.PersonalID)=[TempImport].[PersonalID]));"

DBaddnew.Execute AddnewSQL
DBupdate.Execute UpdateSQL

MsgBox "อัพเดทจำนวน " & DBupdate.RecordsAffected & vbCrLf & "เพิ่มใหม่จำนวน " & DBaddnew.RecordsAffected, vbInformation, "Myprogram"
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

20
เรียนคุณ

อ้างถึง
ยกตัวอย่าง นาย ก เลขบัตรประชาชน 1234567890123 ข้อมูลเก่า  กกกก อัพเดตใหม่เป็น กก77 ประมาณนี้นะคะ
ตารางชั่วคราวเราก็ควรมีไว้เหมือนเดิม เพื่อใช้ตารางนี้ในการตรวจสอบเงือนไขก่อนนำเข้าสู่ตารางหลักครับ

จากโจทย์คือเพิ่มเติมได้ไม่ยากครับคือใช้การ loop เช็คจากเลขบัตรประชาชน เช่น
ถ้าเจอว่า ข้อมูลเก่ามีฟิลล์ไหนที่ข้อมูลไม่เหมือนกันก็สั่งให้อัพเดท
ส่วนข้อมูลไหนใหม่ ไม่มีเลขบัตรประชาชนนี้มาก่อน ก็สั่งเพิ่มใหม่
ส่วนข้อมูลไหนยังเหมือนเดิมไม่มีการเปลี่ยนแปลงในฟิลล์ที่เราตรวจสอบก็ข้ามการนำเข้าเป็นต้น

ถ้าโอเคกับขั้นตอนที่ผมกล่าวมา เดี่ยวผมปรับโค๊ดให้ใหม่
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

21
Map Google Drive in Windows (ตัวอย่างเขาเพิ่มเป็นไดรฟ์ I)

หมายเหตุ ทุกเครื่องที่ลงโปรแกรมแล้วเชื่อมต่อจะเห็นข้อมูลใน Google Drive เหมือนทำ map network drive

โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

22
อ้างถึง
ถ้าเราจะให้บันทึกลงใน google drive ตามลิงค์ที่เรามี สามารถทำได้ไหมคะ รบกวนแนะนำด้วยค่ะ ขอบคุณค่ะ

แนะนำขึ้นโพสใหม่เลยดีกว่าครับ
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

23
เหมือนมีรูปซ้อนกันสองรูปมีรูปที่เป็นพื้นหลัง 1 และรูปที่เป็นลายเซ็นต์ 1

ผมไม่เห็นภาพครับ อธิบายไม่ถูกเหมือนกัน
หรืออีกวิธีลองคลิกขวาที่รูป โดยที่รูปพื้นหลัง เลือก นำไปไว้ข้างหลังสุด
และ รูปลายเซ็นต์กดเลือกนำไปไว้ข้างหน้าสุด

หรือลองลบรูปที่เป็นพื้นหลังออกไปก่อนครับ ว่าแสดงหรือไม่
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

24
ไม่น่าจะไม่แสดงนะครับ จากโค้ดถึงมีรูปในหน้ารายงานก็ต้องแสดงอยู่แล้วครับ
ลองเช็คความถูกต้องของการตั้งค่าการแสดงให้ดีๆครับผิดตรงไหนหรือเปล่า
การกำหนด ให้แสดงด้านหลังสุด หรือ ด้านหน้าสุดก็มีส่วนนะครับ
ลองดูหน้ารายงานในมุมมองเหมือนพิมพ์ ดูหรือลองปริ้นดู กด Ctrl + P ว่าตอนพิมพ์ออกมาลายเซ็นต์แสดงหรือไม่


โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

25
ในคิวรี่ ฟอแมท ฟิลล์ TrainingEndDate ก่อนนะครับ
เอาโค้ดนี้ไปวางในฟิลล์นะครับ
Dates: Format([TrainingEndDate],'dd/mm/yyyy')
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

26
ชื่อฟิลล์ผิดครับ
Dates คือฟิลล์  TrainingEndDate อันเดิมของคุณครับ
ที่ผมต้องเปลี่ยนชื่อเป็น Dates เพื่อทำการฟอแมทเป็น Dates: Format([TrainingEndDate],'dd/mm/yyyy')
ลองส่งรูปแสดงชื่อฟิลล์ในคิวรี่ มาดูหน่อย
และโค้ดที่ใส่ไว้ตอน OpenRecord ด้วยครับ
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

27
งานที่ทำเป็นการ Link Table MS SQL server มาหรือเปล่าครับ ถ้าใช่ลองสร้าง Query ใส่เงื่อนไขที่Field  [Dates] = = =Forms!frmSearchCertificate!txtApplyDate  แล้ว view ดูข้อมูลได้ไหมครับ
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

28
ต้องฟอแมทวันที่ให้ตรงกันกับ textbox ที่ใช้ในการค้นหาก่อนครับ

ที่คิวรี่ปรับฟอแมทเป็นแบบนี้ดูครับ
Dates: Format([TrainingEndDate],'dd/mm/yyyy')

และที่ โค้ดใส่แบบนี้
Set rsGroup = CurrentDb.OpenRecordset("SELECT * FROM QueryForReportCertification where Cstr([Dates])='" & CStr(Forms!frmSearchCertificate!txtApplyDate) & "'")

และแก้ฟิลล์ที่ตัวรายงาน ที่เป็นฟิลล์ TrainingEndDate เป็น Dates ทั้งหมด


ถ้าไม่ได้ คงต้องรีโมทไปตรวจสอบให้แล้วละครับ
เพราะต้องเช็คข้อมูลวันที่ที่แสดงใน access ว่าเป็นแบบไหนจะได้ปรับให้เหมือนกัน
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

29
เป็นเพราะ Format วันที่ ไม่ตรงกันหรือเปล่าครับ
ขอดูฟอแมทวันที่จากฐาน SQL Server มาดูหน่อย
(ผมไม่ได้อยู่ตอบมาอีกทีวันจันทร์นะครับ ไปทริปตกปลาทะเล)

ลองรีเช็คเรืองฟอแมทวันที่ให้ตรงกันนะครับ
 
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

30
อ้างถึง
ลองทำในตัวอย่างแล้วใช้ได้ เดี๋ยวจะลองนำไปใช้กับงานจริงดูค่ะ

ขอชื่นชมนะครับ มีการสร้างไฟล์ตัวอย่าง และรูปอธิบายแบบนี้
จะทำให้ผู้ตอบเข้าใจขั้นตอนที่ต้องการและ แก้ไขให้ได้อย่างรวดเร็วครับ
เสียเวลาสร้างนิดหน่อย แต่แก้ไขได้ง่ายกว่าครับ
 :miao: :miao:
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

31
ลองดูนะครับ
คุณต้องไปสร้าง Floder ชื่อ upload ไว้ Drive C: ก่อนเน้อ
อัพเดทโค้ดให้ใหม่นะครับ ไม่ต้องสร้างTableเพิ่ม  และลบCriteria ใน Query ออกไปใช้การกำหนด Criteria ตอนเปิด Recordset แทน

โค้ด
โค๊ด: [Select]
Private Sub Command8_Click()
    Dim rsGroup As DAO.Recordset
    Dim EmployeeCode As String, myPath As String

  myPath = "C:\upload\"
 

  Set rsGroup = CurrentDb.OpenRecordset("SELECT * FROM QueryForReportCertification where Cstr([TrainingEndDate])='" & CStr(Forms!frmSearchCertificate!txtApplyDate) & "'")
 
  Do While Not rsGroup.EOF
  EmployeeCode = rsGroup!EmployeeCode
 
    DoCmd.OpenReport "ReportCertificationNew", acViewPreview, , "EmployeeCode='" & EmployeeCode & "'"
    DoCmd.OutputTo acOutputReport, "ReportCertificationNew", acFormatPDF, _
                            myPath & EmployeeCode & ".pdf", False
 
DoCmd.Close acReport, "ReportCertificationNew"

 rsGroup.MoveNext
 Loop

 rsGroup.Close
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

32
แบบนี้หรือเปล่าครับ


ที่มา : https://stackoverflow.com/questions/11275356/vba-procedure-to-import-csv-file-into-access
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

33
ลองเปิด csv ด้วย notepad > Save UTF-8 ดูก่อน นำเข้าดูครับ


โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

34
ห้อง MS Access / : ปิด Subform ใน MS Access
« เมื่อ: 20 ส.ค. 63 , 19:08:15 »
ที่ฟอร์มหลักใน event form open
ใส่โค้ดเพื่อซ่อนซัพฟอร์ม

Private Sub Form_Open(Cancel As Integer)
Me.[ชื่อซัพฟอร์ม].Visible = False
End Sub

หรือ

Form![ชื่อฟอร์มหลัก]![ชื่อซัพฟอร์ม].visible =false

และที่ปุ่มค้นหาเมื่อการค้นหาทำงานก็กำหนดให้
Me.[ชื่อซัพฟอร์ม].visible = True
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

35
เอาโค้ดนี้ไปวางในแต่ละฟิลล์ในคิวรี่ได้เลย

หมู่
โค๊ด: [Select]
qADDRMU: IIf(IsNull([ADDRMU]),"-",Replace(Replace([ADDRMU],"ม.",""),"หมู่ที่ ",""))
ซอย
โค๊ด: [Select]
qADDRSOI: IIf(IsNull([ADDRSOI]),"-",Replace(Replace([ADDRSOI],"ซอย",""),"ตรอก",""))
ถนน
โค๊ด: [Select]
qADDRRD: IIf(IsNull([ADDRRD]),"-",Replace([ADDRRD],"ถนน",""))
ตำบล
โค๊ด: [Select]
qADDRTB:IIF(isnull(ADDRTB),"-",Replace(Replace(Replace(ADDRTB, "ต.", ""), "ตำบล", ""), "แขวง", ""))
อำเภอ
โค๊ด: [Select]
qADDRAP:IIF(isnull(ADDRAP),"-",Replace(Replace(Replace(ADDRAP, "อ.", ""), "อำเภอ", ""), "เขต", ""))
จังหวัด
โค๊ด: [Select]
qADDRCW:IIF(isnull(ADDRCW),"-",Replace(Replace(ADDRCW, "จ.", ""), "จังหวัด", ""))

และโค้ดรวมทุกโค้ดสำหรับ SQL นะครับ

SELECT IIf(IsNull([ADDRSOI]),"-",Replace(Replace([ADDRSOI],"ซอย",""),"ตรอก","")) AS qADDRSOI, IIf(IsNull([ADDRRD]),"-",Replace([ADDRRD],"ถนน","")) AS qADDRRD, IIf(IsNull([ADDRTB]),"-",Replace(Replace(Replace([ADDRTB],"ต.",""),"ตำบล",""),"แขวง","")) AS qADDRTB, IIf(IsNull([ADDRAP]),"-",Replace(Replace(Replace([ADDRAP],"อ.",""),"อำเภอ",""),"เขต","")) AS qADDRAP, IIf(IsNull([ADDRCW]),"-",Replace(Replace([ADDRCW],"จ.",""),"จังหวัด","")) AS qADDRCW FROM [ชื่อตารางหรือคิวรี่];
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

36
ห้อง MS Access / : ทำบัตรพนักงานใน MS Access
« เมื่อ: 14 ก.ค. 63 , 17:59:06 »
เรื่องตั้งหน้ากระดาษเป็น Inch หรือ cm นี่ต้องไปตั้งที่ Windows ครับ กำหนดที่ Regional Settings ให้มีหน่วยเป็น US ก็จะเป็นนิ้วแล้วครับ
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess

หน้า: 1 [2] 3 4 5 6