แสดงกระทู้

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

หน้า: [1] 2 3 4 5
1
หน้าเว็บอัพโหลดภาพทำการปรับแต่งใหม่ให้รูปย่อมีขนาดใหญ่ขึ้น(เพิ่มการมองเห็น)ทำให้จำนวนรูปในหนึ่งหน้าน้อยลง จึงเพิ่มตัวเลือกหน้าดูชุดรูปภาพ จำนวน50รูปล่าสุดให้จะได้ย้อนดูรูปได้มากขึ้นเพื่อนำมาใช้ภายหลังหรือกันอัพภาพซ้ำเป็นต้นครับ :shout:


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

2
ถ้า data type ของฟิลด์ห้องสอบเป็น Text ให้เปลี่ยนเป็น

SQL = "update T as T0 set room_sob = cstr(int(dcount(""*"", ""T"", ""number_sob < "" & T0.number_sob)/40)+1)"
โพสต์นี้ได้รับคำขอบคุณจาก: apirak

3
ได้ข้อมูลมาจากเฟสบุ๊กเพจ "โปรแกรมเมอร์ไทย Thai programmer" ครับ

https://goalkicker.com/?fbclid=IwAR1TjcRyaWd6r_xdj510qNJOu_3B2c9EV_AWjkJ0_lyZqxdBS3bYFHCZERo link

แนะนำเพิ่มเติมว่า สำหรับคนที่ชอบเขียนโปรแกรม ให้ศึกษาวิชา Data Structure (ส่วนนึงอยู่ในหนังสือ Algorithms) และ Algorithms เพราะจะช่วยให้ขยับโลกทัศน์ในการวิเคราะห์และหาวิธีตอบโจทย์ที่ซับซ้อนยิ่งขึ้นได้
โพสต์นี้ได้รับคำขอบคุณจาก: apirak

4
DAO.Recordset คือการอ้างถึงคลาสที่ชื่อ Recordset ในไลบรารี่ DAO (จะไม่เขียน DAO. ก็ได้ถ้า 1. เราแน่ใจว่าเรามีคลาสชื่อ Recordset และชื่อนี้ไม่ซ้ำกับคลาสอื่นในไลบรารี่ตัวอื่นในระบบเรา หรือ 2.มีซ้ำในไลบรารี่อื่นๆด้วย แต่เราอ้างถึงไลบรารี่ลำดับแรกที่พบ ซึ่งเราก็ต้องมั่นใจด้วยว่าลำดับของไลบรารี่เรียงถูกต้องแล้ว)

Dim RST As DAO.Recordset  เป็นการสร้างตัวแปรออปเจค RST ที่จะมีคุณสมบัติตามคลาส Recordset

CurrentDb.OpenRecordset("tb_newmember") ให้ชุดเรคอร์ดที่ได้จากเทเบิล tb_newmember และเทเบิลนี้อยู่ในฐานข้อมูลที่โค้ดเรากำลังทำงาน

Set RST = CurrentDb.OpenRecordset("tb_newmember") ให้ตัวแปรออปเจค RST ชี้ไปยังชุดเรคอร์ดที่ได้มาจากคำอธิบายข้างบน

RST.AddNew เป็นเมธอดที่บอกให้ระบบรู้ว่าเราต้องการให้เตรียมพื้นที่สำหรับเรคอร์ดใหม่ในชุดเรคอร์ดในตัวแปรออปเจค RST

RST.Update เป็นเมธอดที่สั่งให้ตัวแปรออปเจค RST เขียนเรคอร์ด กรณีนี้คือเรคอร์ดในพื้นที่ ที่ได้จาก RST.AddNew

Set RST = Nothing บอกให้ตัวแปรออปเจค RST เลิกชี้ไปยังออปเจคใดๆที่มันเคยชี้อยู่
โพสต์นี้ได้รับคำขอบคุณจาก: apirak

5
สวัสดีครับ อยากทราบความหมายของโค๊ด
กระผมได้ก็อป โค๊ดนี้มาใช้ แต่ยังไม่เข้าใจในส่วนที่ผมทำสีแดง

Private Sub Bnt_Add_Click()
Dim RST As DAO.Recordset บางที่ก็ใช้ database
Set RST = CurrentDb.OpenRecordset("tb_newmember")
RST.AddNew
RST("เลขบัตรปชช") = Me.T_เลขบัตรปชช
RST("คำนำหน้า") = Me.T_คำนำหน้า
RST("ชื่อ") = Me.T_ชื่อ
RST("สกุล") = Me.T_สกุล
RST.Update
Set RST = Nothing

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

6
ได้แล้วครับอาจารย์ ปัญหาเกิดจาก ผมอ้างอิง Rs!Num  ใส่ชื่อฟิลล์จริงผิดไปครับลิมสังเกตุ

แก้เป็น
โค๊ด: [Select]
Public Sub ExplodeTable()
   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 MakeQryOT.MemID, MakeQryOT.sOT  FROM MakeQryOT ORDER BY MakeQryOT.MemID;")
    Do Until RS.EOF
        If RS!MemID <> LastID Then
            I = 1
            DB.Execute "insert into tblOT_Report (MemID, OT1) values (" & CStr(RS!MemID) & ", " & CStr(RS!sOT) & ")", dbFailOnError
        Else
            I = I + 1
            DB.Execute "update tblOT_Report set OT" & CStr(I) & " = '" & CStr(RS!sOT) & "' where MemID = '" & CStr(RS!MemID) & "'", dbFailOnError
        End If
        LastID = RS!MemID
        RS.MoveNext
    Loop
    RS.Close: Set RS = Nothing
End Sub

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

7
เช็คว่ามีจำนวนเรคอร์ดใน ID เดียวกันตัวไหนที่เกิน 10  เพราะบอกมาว่ามีฟิลด์แค่ Field1 - Field10 เท่านั้น
โพสต์นี้ได้รับคำขอบคุณจาก: apirak

8
ใช้คำสั่ง 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

ขึ้น พารามิเตอร์น้อยเกินไปต้องการ 1 ครับ แถวล่าง Else
DB.Execute "update tblOT_Report set OT" & CStr(I) & " = '" & CStr(RS!OT) & "' where ID = '" & CStr(RS!MemName) & "'", dbFailOnError

Field OT จะมี OT1 , OT2 OT3 ไปเรื่อยๆ
โพสต์นี้ได้รับคำขอบคุณจาก: apirak

9
ใช้คำสั่ง 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
โพสต์นี้ได้รับคำขอบคุณจาก: apirak

10
ไม่มีทางเพิ่มเกิน 255 ฟิลด์ครับ ให้สร้างอีกเทเบิลที่มีฟิลด์ Primary Key เหมือนเทเบิลแรก และย้ายฟิลด์ส่วนเกินไปไว้เทเบิลที่สองแทน พร้อมกับสร้าง Relationships (ในริบบอน Database Tools) จากเทเบิลแรกไปเทเบิลที่สอง โดยกำหนดให้มี Enforce Referential Integrity, Cascade Update Related Fields และ Cascade Delete Related Fields ด้วย  คุณสมบัติของ Enforce Referential Integrity จะทำให้เมื่อมีการเพิ่มเรคอร์ด เราใส่ข้อมูลลงในฟิลด์ของเทเบิลแรก และเว้นข้อมูลในฟิลด์ของเทเบิลที่ 2 ก็ได้ ก็จะไม่มีเรคอร์ดปรากฏในเทเบิลที่ 2   แต่ถ้าเราใส่ข้อมูลในฟิลด์ของเทเบิลที่ 2 เราจะต้องใส่ข้อมูลอะไรลงในฟิลด์ของเทเบิลแรกด้วย  ส่วนคุณสมบัติ Cascade Update จะทำให้เมื่อมีการแก้ไขค่าในฟิลด์ Primary Key ของเทเบิลแรกแล้ว ค่านั้นจะไปแก้ไขในฟิลด์ Primary Key ของเทเบิลที่ 2 ให้โดยอัตโนมัติ  สุดท้ายคือคุณสมบัติ Cascade Delete จะทำให้เมื่อเราลบเรคอร์ดในเทเบิลแรกแล้ว เรคอร์ดในเทเบิลที่ 2 ที่มีค่า Primary Key เดียวกันก็จะถูกลบโดยอัตโนมัติเช่นกัน

ต่อมาให้สร้าง Query ใน Design View และลากทั้ง 2 เทเบิลนี้มาใส่ (มันจะแสดงเส้น Relationships ออกมาให้ด้วย) แล้วเลือกฟิลด์ที่เป็น * จากทั้ง 2 เทเบิลมาใส่ในคิวรี่

คุณสามารถนำเอา Query ตัวนี้ไปเป็น Record Source ของฟอร์มหรือรายงานที่ต้องการได้

อย่างไรก็ตาม ลองพิจารณาดูอีกทีว่าเราได้ออกแบบเทเบิลให้เป็นไปตามหลักการ Normalization แล้วหรือยัง ทำไมจำนวนฟิลด์ถึงมีมากขนาดนั้น !!!
โพสต์นี้ได้รับคำขอบคุณจาก: apirak

11
 :question: มีข้อมูลจากตารางชื่อ Table1  จะ Add ข้อมูลไปยังตาราง Table 2 โดยให้แยกจากแถวไปใส่ในคอลัมน์แทนจะทำได้ไหม
แบบในรูปเลยครับ  :sweat: :sweat:

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

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

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

13
รายงานผลการแก้ให้รองรับมือถือ
ตอนนี้ในมุมมองเบื้องต้นสมบูรณ์แล้วนะ  :miao:

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

14
ตอนนี้เอามาทดสอบบนบอร์ดหลักนี่ล่ะครับผม :yuush:

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

15
รายงานผลการแก้ให้รองรับมือถือ
ตอนนี้ในมุมมองเบื้องต้นสมบูรณ์แล้วนะ  :miao:
รบกวนท่านใดสะดวกลองไปใช้งาน(มือถือ,แท็บเล็ต,คอมฯ)แล้วพบปัญหาหรือมีคำแนะนำใดๆโพสบอกใว้ได้เลยนะครับ ขอขอบคุณครับ :love:


ปล.เว็บ"บอร์ดเรียนรู้ Access สำหรับคนไทย"ตอนนี้ใช้ Simple Machines Forum(SMF 2.0.15)ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: apirak

16
สรุปรายงานวันนี้ก่อนนะครับ
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:

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

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

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