แสดงกระทู้

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
17
ว่าจะไม่ยุ่งกับกระทู้นี้ เพราะเห็นคุณ PNR ตอบอยู่
แต่อดไม่ได้จริง เพราะรู้สึกว่ากำลังจะทำให้ได้ฐานข้อมูลที่สร้างปัญหาได้ในอนาคต

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

เพราะถ้ามีข้อมูลชุดเดียวกันอยู่ใน 2 ตาราง มันจะทำให้เกิดความสับสนเมื่อใช้งานไปนานๆ ได้

สำหรับการแก้ปัญหาของคุณนั้น ทำได้ง่ายมากคือ
1. ลบฟิลด์ "ชนิด" ในตารางหลักออกไป
2. ถ้าต้องการรู้ว่าคนไหนมีชนิดอะไร ให้สร้างคิวรี ที่เชื่อมข้อมูลรหัสของทั้ง 2 ตาราง แล้วดึงฟิลด์ รหัส,ชื่อ,ชนิด มาแสดงผล ก็จะได้อย่างที่คุณต้องการแล้วครับ

ทั้งนี้ยกเว้นคุณมีจุดประสงค์อื่น เช่นต้องการบันทึกการเปลี่ยนแปลงชนิด แบบนี้ก็ต้องสร้างตารางบันทึกการเปลี่ยนแปลงชนิด ซึ่งก็ต้องมีฟิลด์วัน-เวลา เพื่อเก็บข้อมูลด้วย
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

18
งั้นของผมควรใช้วิธีแรกใช่ไหมครับ

แล้วแต่การใช้งานครับ ลองสร้าง คิวรี่ใหม่แล้วเอา SQL นี้ไปวางแล้วรันดูครับ

โค๊ด: [Select]
SELECT DLookUp("ชนิด","TBLชนิด","รหัส = '" & [รหัส] & "'") AS ชนิด, [TBLข้อมูลหลัก].*
FROM TBLข้อมูลหลัก;
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

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

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