แสดงกระทู้

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 - 001Jetnipit

หน้า: 1 [2] 3 4 5
19
จากตัวอย่างนั้น มี 2 ตาราง
การที่จะแสดงข้อมูลได้นั้นสามารถทำได้ 2 แบบ คือ
1. ใช้คิวรี่ในการแสดงผล (แบบนี้ใช้การ Dlookup ก็ได้ครับ) ถ้าอยากได้แบบใช้คิวรี่แสดงผล เดี่ยวทำให้ดู

2.คือให้อัพเดทข้อมูล ชนิด  ในตารางข้อมูลหลัก
โค๊ด sql ที่ให้ไปนั้นจะต้องสร้าง query ใหม่ขึ้นมาใช้งาน จะใช้สำหรับอัพเดทข้อมูลให้ตารางข้อมูลหลักก่อนการแสดงผลครับ
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

20
ใช้ Update Query ได้ครับ

เช่น
โค๊ด: [Select]
UPDATE TBLชนิด INNER JOIN TBLข้อมูลหลัก ON [TBLชนิด].[รหัส] = [TBLข้อมูลหลัก].[รหัส] SET [TBLข้อมูลหลัก].[ชนิด] = [TBLชนิด]![ชนิด];
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

21
ห้อง MS Access / : ขอถามสอบครับ Error Expected 1
« เมื่อ: 08 ก.ย. 64 , 12:07:47 »
คุณสั่ง Update ฟิลด์ที่ชื่อ Selected ซึ่งไม่มีอยู่ใน Query1

แค่เปลี่ยนเป็นชื่อฟิลด์ที่ถูกต้องก็หายแล้วครับ

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

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

23
แนะนำให้ออกแบบฐานข้อมูลให้เหมาะสมครับ เนื่องจากหลักการของฐานข้อมูลนั้น ไม่ควรมีจำนวนฟิลด์เยอะๆ
อย่าลืมนะครับว่า ฐานข้อมูล ไม่ใช่ Excel

การออกแบบตารางควรจะกำหนดจำนวนฟิลด์ให้น้อยเข้าไว้

แนะนำว่าควรเปลี่ยนรูปแบบตารางดังนี้
tblResult มีฟิลด์ ID, CheckID, Result
โดย ID เป็นรหัสของเจ้าของชิ้อ ซึ่งผมไม่รู้ว่าเป็นชื่อคนหรือชื่องานที่ตรวจ
CheckID เป็นครั้งที่ตรวจ
Result เป็นผลการตรวจ

ตารางแบบนี้ ผู้ใช้สามารถเพิ่มข้อมูลได้ไม่จำกัดจำนวนครั้ง
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

24


เปิด form มาต้องมานั่ง Sort ใหม่ตลอดเลยครับ ใน Query ก็ Sort แล้ว ใน Subform ที่เป็นไฟล์แยกก็ Sort แล้ว

ที่ Recordsource ของฟอร์ม กดเข้าไปกำหนดที่เครื่องหมาย ... และตั้งค่าให้ฟอร์ม เหมือนต้องค่าคิวรี่นั้นแหละ
แล้วกำหนด sort ไว้ก่อนได้เลยครับ

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

25
ช่อง TextUpdate พิมพ์ถูกไหมครับ
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

26
จากรูปที่อธิบายมีช่องให้ใส่ในฟอร์ม ชื่อ TextUpdate
เลือก event on click จากปุ่ม "บันทึก" ที่สร้างไว้ (ผมไม่รู้ว่าปุ่มชื่ออะไร แต่ผมตั้งชื่อเป็น cmdSave นะครับ)
เลือก code builder
พิมพ์ Me.TextUpdate = Date() (ให้โปรแกรมใส่วันที่ จากในเครื่อง ลงในช่อง TextUpdate)

จะได้เป็น

Private Sub cmdSave_Click()
Me.TextUpdate = Date()
End Sub

เพิ่มเติม1 : กรณี อยากได้ วันที่+เวลา ใช้ Now() แทน Date() ก็ได้ครับ
เพิ่มเติม2 : กรณี อยากให้แสดงผลเป็น รูปแบบอื่นๆ เช่น 1/7/64 ,02/09/2564 ใส่คำสั่ง Format() ช่วยได้ครับ
Me.TextUpdate = Format(Date(),"dd/mm/yyyy") -> 01/08/2564
Me.TextUpdate = Format(Date(),"d/m/yyyy") -> 1/8/2564
Me.TextUpdate = Format(Date(),"d/m/yy") -> 1/8/64

อย่าลืมเชื่อม TextUpdate กับ field เพื่อเก็บข้อมูลด้วยนะครับ
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

27


ตรง Date ผมใช้ Date() และ Time ใช้ Time() ปรากฏว่าเวลาเพิ่ม Row ไปใหม่ มันจะให้ทุก Row เป็นเวลาตอนนี้เลย
ถ้าอยากให้มันเป็นวัน,เวลา บอกเฉพาะ Row ไปว่าเพิ่มมาวันไหนเวลาไหน ไม่ทราบว่าต้องทำอย่างไรครับ
วิธีทำต้องมีฟิลล์ในตาราง เช่น TimeStamp ชนิดข้อมูล date/time
และมีเมื่อการอัพเดทข้อมูล ในฟอร์มกำหนดให้อัพเดทฟิลล์ timestamp  = NOW()  มันจะได้ทั้งวันที่และเวลา มาเลยครับ
เราจะได้ไม่ต้องสร้าง 2 ฟิลล์

หมายเหตุถ้าเมื่อมีการเพิ่มฟิลล์ใหม่กำหนดให้บันทึกเวลาด้วย
ให้กำหนด default Value ของฟิลล์นี้ในตาราง = Now() ไว้ได้เลย
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

28
ห้อง MS Access / : ปิดแจ้งเตือนเพิ่ม Row
« เมื่อ: 26 ส.ค. 64 , 09:39:27 »
Docmd.Setwarnings false
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

29
ตรงแก้ไขชื่อฟิวล์ ทำก่อนเลยในคิวรี่แบบที่คุณ UnKnown บอกครับ เนื่องจากเครื่องคุณไม่ได้ตั้งค่าให้รองรับภาษาไทย


แถมวิธีที่แสดงในคิวรี่เฉยๆ ชื่อที่แสดง: [ชื่อฟิลด์] เช่น ไอดี:[ID] , เลขบัตร:[ID_Card] , รหัส:[Code ]
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

30

ถ้าเกี่ยวข้องกับวิธีแก้ชื่อฟิลด์ของผมมันดันมีผลกับทุกอย่างที่เรียกใช้คิวรี่นี้ก็ต้องไปแก้ชื่อฟิลด์ที่เรียกไปใช้เป็นชื่อที่ตั้งใหม่ด้วยอ่ะนะ :sweat:
แถมวิธีที่แสดงในคิวรี่เฉยๆ ชื่อที่แสดง: [ชื่อฟิลด์] เช่น ไอดี:[ID] , เลขบัตร:[ID_Card] , รหัส:[Code ]
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

31
ไปที่ VBA Editor ไปที่ TOOL > References
ไปกดติ๊กเลือก Microsoft Excel xx.x Object Library  มาด้วยครับ
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

32
แถมวิธีที่แสดงในคิวรี่เฉยๆ ชื่อที่แสดง: [ชื่อฟิลด์] เช่น ไอดี:[ID] , เลขบัตร:[ID_Card] , รหัส:[Code ]
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

33
ใช้วิธีการเดี่ยวกับการกำหนดจัดกึ่งกลางนะครับ แต่เพิ่มโค๊ดเข้าไปอีกนิดเช่น

    Dim objExcelApp As Excel.Application
    Dim wb As Excel.Workbook
    Dim sht As Object
    Dim sFilename  As String
   
    sFilename = "E:\ExportedResults1.xls"
    DoCmd.OutputTo acOutputQuery, "ชื่อตาราง", acFormatXLS, sFilename
   
Set objExcelApp = Excel.Application
Set wb = objExcelApp.Workbooks.Open(sFilename)
Set sht = wb.Worksheets(1)
objExcelApp.Visible = True
sht.Columns("A:W").HorizontalAlignment = xlCenter
sht.Columns("A:W").EntireColumn.AutoFit
sht.Range("A1").Value = "ไอดี"    'A1,B1,C1 คือหัวของคอลัมน์
sht.Range("B1").Value = "ชื่อ"
sht.Range("C1").Value = "สกุล"


wb.Save
wb.Close
objExcelApp.Quit
Set objExcelApp = Nothing
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

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

Private Sub export_Click()
    Dim objExcelApp As Excel.Application
    Dim wb As Excel.Workbook
    Dim sht As Object
    Dim sFilename  As String
   
    sFilename = "E:\ExportedResults1.xls"  'เลือกตำแหน่งของไฟล์ที่ต้องการ Export และ เปิดมาแก้ไข
    DoCmd.OutputTo acOutputQuery, "ชื่อคิวรี่", acFormatXLS, sFilename  'โค้ดสั่ง Export ตามโค๊ดเดิมของท่านได้เลย
   
Set objExcelApp = Excel.Application
Set wb = objExcelApp.Workbooks.Open(sFilename)
Set sht = wb.Worksheets(1)
objExcelApp.Visible = True
sht.Columns("A:W").HorizontalAlignment = xlCenter   'กำหนดให้ column A ถึง W ของ Sheet จัดกึ่งกลาง จะเอาถึงคอลั่มน์ไหนก็กำหนดเอาได้เลย
sht.Columns("A:W").EntireColumn.AutoFit 'กำหนดให้คอลัมน์พอดีกับข้อมูล
wb.Save  'สั่งบันทึก
wb.Close  'สั่งปิดไฟล์
objExcelApp.Quit 'สั่งจบการทำงาน
Set objExcelApp = Nothing
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

35
ต้องดูว่า MS Office ใช้กี่ Bit

ครับ ถ้า 32bit ไม่น่าจะมีปัญหาอะไร
แต่ถ้า 64 bit ต้องมีคำว่า prtSafe ด้วย เช่น

Private declare prtsafe function ...........................

แดงแบบเดิมเลยครับ





ผม 64 บิทครับ
Copy codeมาหน่อยครับ
เอาเป็นตัวอักษรไม่เอาเป็นรูปนะครับ
ผมจะได้ copy มาแก้ให้ได้
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

36
ห้อง MS Access / : Login กด Enter ทีเดียว
« เมื่อ: 18 ส.ค. 64 , 12:03:19 »
ปรับโค๊ดเป็นแบบนี้นะครับ

เอาโค้ดในการล๊อกอินไปไว้ใน Event On Enter ของปุ่มเช่น

โค๊ด: [Select]
Private Sub Command4_Enter()
Dim fpass As String, fusername As String
If IsNull(Me.UserBox) Then
MsgBox "กรุณาระบุ UserName", vbInformation, "ข้อผิดพลาด"
Exit Sub
ElseIf IsNull(Me.PassBox) Then
MsgBox "กรุณาระบุ Password", vbInformation, "ข้อผิดพลาด"
Else
fusername = Nz(DLookup("[UserName]", "UserV", "[UserName]='" & Me.UserBox & "'"))
If fusername = "" Then
    MsgBox "ชื่อผู้ใช้ไม่ถูกต้อง", vbCritical, "ไม่พบชื่อผู้ใช้งาน"
Else
        fpass = Nz(DLookup("[Password]", "UserV", "[UserName]='" & Me.UserBox & "'"))
       If fpass = Me.PassBox Then
            DoCmd.Close acForm, Me.name
            DoCmd.OpenForm "PIScreen_vaccine"
          Else
                    MsgBox "รหัสผ่านไม่ถูกต้อง", vbCritical, "พบข้อผิดพลาด"
    End If
    End If
    End If
End Sub

ส่วนของการเรียกใช้ ให้ใส่ไว้ใน Event OnClick หรือ AfterUpdate ของ คอนโทรล เช่น

โค๊ด: [Select]
Private Sub PassBox_AfterUpdate()
Command4_Enter
End Sub

โค๊ด: [Select]
Private Sub BtnLogIn_Click()
Command4_Enter
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

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