แสดงกระทู้

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 - PNR

หน้า: 1 2 3 [4] 5
49
ใช้คำสั่ง SQL ล้วนๆคงไม่ได้ ต้องใช้ VBA ด้วย โค้ดนี้ต้องปรับแก้ให้ใส่ ' ' คร่อม ถ้า data type ของ ID, Num, Fieldxx เป็น Text ด้วยนะครับ

Public Sub xxx()
    Dim DB  As DAO.Database
    Dim RS  As DAO.Recordset
    Dim LastID  As Variant
    Dim I   As Integer
   
    Set DB = CurrentDb
    Set RS = DB.OpenRecordset("select * from Table1 (order by ..., ถ้ามี)")
    Do Until RS.EOF
        If RS!ID <> LastID Then
            I = 1
            DB.Execute "insert into Table2 (ID, Field1) values (" & CStr(RS!ID) & ", " & CStr(RS!Num) & ")", dbFailOnError
        Else
            I = I + 1
            DB.Execute "update Table2 set Field" & CStr(I) & " = " & CStr(RS!Num) & " where ID = " & CStr(RS!ID), dbFailOnError
        End If
        LastID = RS!ID
           
        RS.MoveNext
    Loop
    RS.Close: Set RS = Nothing
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

50
กดปุ่ม Shift ค้างไว้ตอนเปิดโปรแกรมครับ พอโปรแกรมเปิดเสร็จแล้วค่อยปล่อยนิ้วจากปุ่ม Shift
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

51
ห้อง Ms Access อื่นๆ / MS Access Runtime by อ.TTT
« เมื่อ: 02 ก.พ. 63 , 13:18:13 »
MS Access Runtime ของฟรีมีอยู่จริง? โดย อ.TTT (Access-Creator@youtube link)

ฝากกดไลท์ แชร์ และติดตามอาจารย์ในยูทูปด้วยนะครับ :love:
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

52
นี่มันข้อสอบไม่ใช่หรือ !
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

53
ขอเพิ่มเติมจาก อ. OddyWriter หน่อยครับ

อ้างถึง
แนวทางการออกแบบ Databased ที่ผมทำมานี้ เหมาะสมแล้วหรือไม่? ถ้าไม่ ผมควรจะออกแบบอย่างไรเพื่อให้ได้ตามโจทย์ที่ผมต้องการ?
เท่าที่เห็นตอนนี้
- ในระบบมีเทเบิลที่มี 2 ฟิลด์เยอะทีเดียว บางตัวจำเป็นหรือไม่ อย่างเช่นเทเบิล tblBlood ถ้าเป็นผม ผมจะกำหนดตัวเลือกลงในส่วนของ Lookup tab ของฟิลด์ tblContractor.BloodID ไปเลยว่ามีอะไรให้เลือกบ้าง เพราะ 1)กรุ๊ปเลือดตายตัวอยู่แล้ว มีไม่กี่กรุ๊ป (A, A+, A-, ...)  2)ระบบของเราไม่มีความจำเป็นต้องเก็บรายละเอียดอะไรของกรุ๊ปเลือดนั้นอีก เช่น กรุ๊ปนั้นมีแอนติเจ้น A,B,D หรือเปล่า การแยกเทเบิลออกไปในกรณีนี้ เป็นภาระแก่ระบบที่ต้องมาลิงค์ไปยังเทเบิล tblBlood อีกต่างหาก 3)ถ้าตั้งค่า BloodID เป็นอะไรที่ไม่สื่อความหมาย เช่น ตัวเลข ดังนั้นเวลาเปิดดูเทเบิล tblContractor ก็จะต้องมานั่งนึกอีกว่ามันคือเลือดกรุ๊ปอะไรกันแน่ ส่วนเทเบิลอื่นเช่น tblPlant คุณคิดว่าโรงงานจะสร้างเพิ่ม/เปลี่ยนแปลงบ่อยขนาดไหน ถ้าไม่ เมื่อไหร่ที่มีก็ค่อยมาเพิ่มใน Lookup tab ก็ได้
- เข้าใจว่าฟิลด์ xxxID ในทุกเทเบิลจะเป็น Primary Key แต่เราใช้ฟิลด์อื่นๆที่เหมาะสมกว่าเป็น Primary Key ก็ดีกว่าเพราะมัน unique คือมีค่าเดียวไม่ซ้ำกันอยู่แล้ว เช่น tblContractor เราเป็นบุคคลทั้งหมด เราก็ใช้เลขประจำตัวประชาชน (เข้าใจว่าคือฟิลด์ NationalID) มาใช้แทน
- ในความสัมพันธ์ระหว่างเทเบิล (Database Tools - Relationships) ดูความเหมาะสมว่าควรกำหนด Referential Integrity, Cascade Update, Cascade Delete ด้วยหรือไม่  (ส่วนมากผมกำหนด Referential Integrity)

อ้างถึง
Subform โดยให้เป็น Unbound SubForm
- ไม่รู้ว่าทำไมกำหนดเป็น Unbound  ถ้าจะเป็น Unbound ซึ่งเราต้องควบคุมการเขียนลงเทเบิลอื่นๆอีกที ก็ย้ายเท็กซ์บ็อกซ์และคอนโทรลต่างๆใน Unbound SubForm มาไว้บน MainForm แล้วตีกรอบเพื่อแสดงเป็นนัยว่าเป็นข้อมูลที่แยกต่างหากจาก Session ไปเลยน่าจะดูเรียบง่ายกว่า หรือจะนำมาใส่ใน Tab control บน MainForm อีกที ก็สื่อเป็นหมวดหมู่ดี

อ้างถึง
ซึ่งผมเขียน Expression ที่ txtWorkID โดยเมื่อ Dropdown เลือก NationalID เมื่อไหร่ ระบบจะไปดึง Last WorkID ของพนง.คนนั้น ๆ มาจากtblWork(Transaction Table) มาโชว์ / เกิด Error ใน Subform
- ต้องเอาโค้ดที่ทำการดึงและแปะลงฟิลด์ที่เกิด #Error นั้นมาดูครับ

อ้างถึง
การทำแบบฟอร์มเพื่อคีย์หลักสูตรที่แต่ละตำแหน่งต้องอบรมให้ครบตามกฎหมาย
- ก็ต้องมีเทเบิลหลักสูตร (tbSubject หรือเปล่า ?) ,เทเบิลตำแหน่ง (อันนี้ผมไม่รู้เทเบิลไหน สมมุติชื่อ tbP หรือเป็นแค่ฟิลด์ในเทเบิล tbWork ? สมมุติชื่อฟิลด์ F) และสร้างเทเบิลหลักสูตรที่ต้องอบรม (สมมุติชื่อ tbC) ที่มีทั้งฟิลด์ Primary Key ของเทเบิลหลักสูตรและ Primary Key ของเทเบิลตำแหน่ง(หรือแค่ฟิลด์ F ถ้าคุณไม่ได้มีเทเบิลตำแหน่งแยกออกมาต่างหาก) มานำมาตั้งเป็น Primary Key ของ tbC ดังนั้นคุณก็สร้างฟอร์มที่มี Mainform เป็น tbP และมี Subform เป็น tbC เพื่อป้อนหลักสูตรที่ต้องอบรมตามกฎหมายได้แล้ว

หมายเหตุ : Database ไม่ต้องใส่ d ต่อท้ายครับ
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

54
ข้อแนะนำมี 2 ข้อ เท่าที่ผมเห็นจากรูป
1. ควรทำ Normalization อย่างต่ำให้ได้ 3NF
2. ควรแยกตาราง "ข้อมูลส่วนบุคคล" ออกจาก tblWork ครับ ตารางใหญ่เกินไป จัดการยาก
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

55
แนะนำว่าก่อนอื่นคุณต้องเขียนเงื่อนไขออกมาให้หมดก่อนครับ เพราะการทำสาแหรกตระกูลน่ะ เป็นเรื่องที่ยุ่งมากเคยรับมา 2 งาน ราคาหลักหมื่นยังไม่คุ้มกับงานที่ทำเลยครับ (บ่นเฉยๆ)

เงื่อนไขที่ว่าเช่น

1. ข้อมูลย้อนหลังสายตระกูลไปถึงไหน
2. ความสัมพันธ์ (ต้องไม่มีสระอุ) เป็นแบบ 1:1 หรือ 1:M (สามีมีภรรยาได้หลายคนหรือไม่)
3. ข้อมูลจะมี 2 ส่วนที่เกี่ยวข้องกันคือ สายตระกูล และข้อมูลส่วนบุคคล ดังนั้นให้แยกเรื่องสายตระกูลเป็นหลักก่อน ส่วนที่อยู่น่ะค่อยใส่เข้าไปภายหลังได้
4. เห็นว่ามีใส่เรื่อง "เลขที่บัตร ปชช." แน่ใจหรือเปล่าครับ ว่าจะใส่ข้อมูลส่วนนี้ เพราะปัญหาตรงนี้เยอะมากนะขอบอก ดังนั้นกำหนด ID บุคคลแทนจะดีกว่า
5. เรื่องความย้อนแย้งที่คุณว่าน่ะ จะสร้างปัญหาเมื่อสายตระกูลใหญ่มากๆ ได้ เพราะอาจเกิดกรณี หลานชั้น 3 ของตระกูล มาแต่งงานกับเหลนชั้น 4 ของตระกูลแต่คนละสายได้ ดังนั้นถ้าวางระบบเป็น Layer โดยไม่ต้องสนใจเงื่อนไขพวกนี้จะดีกว่า เพราะเรื่องนี้เป็นการบันทึกความจริง ซึ่งความจริงก็จะมีเงื่อนไขแบบนี้อยู่ในตัวอยู่แล้ว
6. มองหาแกนหลักของตระกูล เช่น จากต้นตระกูล > รุ่นที่ 2 ที่เป็นลูกของต้นตระกูล พวกสามี/ภรรยา ก็ใช้เป็นข้อมูลรองของรุ่น 2 (เหมือนกับการเพิ่มข้อมูลเบอร์โทรอะไรงี้)
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

56
สรุปรายงานวันนี้ก่อนนะครับ
1. คุณ Pookpuy สั่งหนังสือ ความทรงจำสีแดง ราคา 100 บาท (+ค่าส่ง 30 บาท) ส่งหนังสือให้แล้ว
2. คุณ PNR บริจาค 1,070 โอนแล้ว
3. คุณ Apirak สั่งหนังสือ Access 2010 Missing Manual ราคา 600 (+ค่าส่งลงทะเบียน 65 บาท) รับโอนเรียบร้อย ส่งแล้ว
4. คุณ Jee007 บริจาค 500 โอนแล้ว
5. คุณ Chai บริจาค 500 โอนแล้ว
6. คุณ Prajak บริจาค 200 โอนแล้ว
7. คุณ Looktarn สั่ง Excel เร็วเว่อร์ 299 (+ค่าส่ง 30) โอนแล้ว

ยอดรวม 3,269 บาท

เดี๋ยวจะโอนให้ Web Master ต่อไป โดยจากที่คุยกับเว็บมาสเตอร์คือ เมื่อจ่ายค่า Host+Domain จะแจ้งที่หน้าเว็บครับ

ขอบคุณทุกท่านที่ให้ความช่วยเหลือเว็บนี้ครับ

ปล. แก้ไขยอดโอนคุณ PNR และคุณ Looktarn

ได้รับเงินสนับสนุนจำนวน 3,269 บาทเป็นที่เรียบร้อย ขอขอบคุณทุกท่านมากๆเลยนะครับ :love:
กระผมจะดูแลรักษาเว็บนี้ให้ดีที่สุดเลยครับ :yuush:

  ค่าเช่าโฮส   
  ค่าโดเมน 
  คงเหลือ 
ยอดเงินสนับสนุน
  3,269 
  62-63    642.-    400.-    2,227 
  63-64    535.-    300.-   1,392 
  64-65    เตรียมพร้อม    300.-   1,092 
  65-66    ...    เตรียมพร้อม 

ปล.ขอปิดการโพสกระทู้ใว้เพียงเท่านี้นะครับผม :cool:


รายงานประจำปี 63-64 ได้รับคำขอบคุณจาก: chai, sjs, OddyWriter, PNR
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

57
สรุปรายงานวันนี้ก่อนนะครับ
1. คุณ Pookpuy สั่งหนังสือ ความทรงจำสีแดง ราคา 100 บาท (+ค่าส่ง 30 บาท) ส่งหนังสือให้แล้ว
2. คุณ PNR บริจาค 1,070 โอนแล้ว
3. คุณ Apirak สั่งหนังสือ Access 2010 Missing Manual ราคา 600 (+ค่าส่งลงทะเบียน 65 บาท) รับโอนเรียบร้อย ส่งแล้ว
4. คุณ Jee007 บริจาค 500 โอนแล้ว
5. คุณ Chai บริจาค 500 โอนแล้ว
6. คุณ Prajak บริจาค 200 โอนแล้ว
7. คุณ Looktarn สั่ง Excel เร็วเว่อร์ 299 (+ค่าส่ง 30) โอนแล้ว

ยอดรวม 3,269 บาท

เดี๋ยวจะโอนให้ Web Master ต่อไป โดยจากที่คุยกับเว็บมาสเตอร์คือ เมื่อจ่ายค่า Host+Domain จะแจ้งที่หน้าเว็บครับ

ขอบคุณทุกท่านที่ให้ความช่วยเหลือเว็บนี้ครับ

ปล. แก้ไขยอดโอนคุณ PNR และคุณ Looktarn
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

58
สนใจ
ใช้งาน Excel 2016 ให้เร็วเว่อร์ 299 บาท 1 เล่มคะ
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

59
ขอแทรกหน่อยครับ ดูแล้วเหมือนว่า TerminatedDate จะขึ้นกับ Contractor เพียงอย่างเดียว ไม่ได้ขึ้นกับ WorkID เลย ดังนั้น TerminatedDate ควรไปอยู่ในเทเบิลของ Contractor มากกว่าหรือไม่
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

60
ช่วยบริจาค 500 ครับ ส่งเลขบัญชีมาได้เลยครับ
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

61
ขอมีส่วนร่วมด้วยครับ...ผมขอซื้อ Access 2010 The Missing Manual 1 เล่มครับ...ขอบคุณครับ
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

62
ขอจอง 2. ความทรงจำสีแดง 100 บาท ครับผม :love:
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

63
ยังไม่หมดครับ





Super Easy Excel 220 บาท
ใช้งาน Excel 2016 ให้เร็วเว่อร์ 299 บาท
จัดการฐานข้อมูลด้วย Excel 450 บาท
Access 2010 The Missing Manual 600 บาท

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

64
เปิดมุมมองออกแบบแล้วกำหนด Format ให้ฟิลด์นี้ที่ Property Sheet ทางขวา
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

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