37
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.
38
ห้อง MS Access / : ฟอร์มค้นหาหลายๆเงื่อนไข
« เมื่อ: 27 ก.ย. 62 , 11:44:41 »
เพิ่มเติมต่อจากอาจารย์อีกหน่อยนะครับ
สมมุติตารางชื่อ Table1
Field ชื่อ CusID,CusName,DocNumber,DocAddDate
Textbox ชื่อ txtFindCusID / txtFindCusName / txtFindDocNum / txtFindDocAddDate
Form ในการค้นหา ชื่อ frmSearchCustomer
ข้อดีคือ สามารถเลือกค้นหาข้อมูลได้ทุก textbox ที่อยากค้นและ เราใช้การสร้าง RecordSource แค่อันเดียว เพราะ Sql ที่ได้มาจากการสร้างเงื่อนไขค้นหาด้านบนไว้หมดแล้ว
สมมุติตารางชื่อ Table1
Field ชื่อ CusID,CusName,DocNumber,DocAddDate
Textbox ชื่อ txtFindCusID / txtFindCusName / txtFindDocNum / txtFindDocAddDate
Form ในการค้นหา ชื่อ frmSearchCustomer
โค๊ด: [Select]
Private Sub Command40_Click()
Dim StrFilter1, StrFilter2, StrFilter3, StrFilter4 As String
Dim GroupFilter As String
'กำหนดเงื่อนไขให้กับตัวแปรว่าถ้ามีข้อมูลจะนำ Where Clause นี้มาต่อประโยคใน Sql
If Not IsNull(Me.txtFindCusID) Then
StrFilter1 = "(((Table1.CusID)=[forms]![frmSearchCustomer]![txtFindCusID])"
End If
If Not IsNull(Me.txtFindCusName) Then
StrFilter2 = "(((Table1.CusName)=[forms]![frmSearchCustomer]![txtFindCusName])"
End If
If Not IsNull(Me.txtFindDocNum) Then
StrFilter3 = "(((Table1.DocNumber)=[forms]![frmSearchCustomer]![txtFindDocNum])"
End If
If Not IsNull(Me.txtFindDocAddDate) Then
StrFilter4 = "(((Table1.DocAddDate)=[forms]![frmSearchCustomer]![txtFindDocAddDate])"
End If
'นำเงื่อนไขที่ได้จากด้านบน มาต่อประโยคกัน
GroupFilter = IIf(StrFilter1 = "", "", StrFilter1) & IIf(StrFilter2 = "", "", StrFilter2) & IIf(StrFilter3 = "", "", StrFilter3) & IIf(StrFilter4 = "", "", StrFilter4)
'ใช้ Replace เพื่อใช้ And ต่อเงื่อนไขใน Where Clause
GroupFilter = Replace(GroupFilter, ")(((", ") and ((")
'นำประโยคที่ได้มากำหนด RecordSource
If IsNull(Me.txtFindCusID) And IsNull(Me.txtFindCusName) And IsNull(Me.txtFindDocAddDate) And IsNull(Me.txtFindDocNum) Then
Me.RecordSource = "Select * from table1;"
Else
Me.RecordSource = "Select * from table1 where " & GroupFilter & ");"
End If
End Sub
ข้อดีคือ สามารถเลือกค้นหาข้อมูลได้ทุก textbox ที่อยากค้นและ เราใช้การสร้าง RecordSource แค่อันเดียว เพราะ Sql ที่ได้มาจากการสร้างเงื่อนไขค้นหาด้านบนไว้หมดแล้ว
โพสต์นี้ได้รับคำขอบคุณจาก: apirak
39
ห้อง MS Access / : ฟอร์มค้นหาหลายๆเงื่อนไข
« เมื่อ: 26 ก.ย. 62 , 22:37:35 »
ไฟล์ตัวอย่างครับ
โพสต์นี้ได้รับคำขอบคุณจาก: apirak
40
ห้อง MS Access / : พิกัด ละติจูด-ลองติจูดผูกกับฐานข้อมูล ms access กับ google map ใครพอมีตัวอย่าง
« เมื่อ: 23 ก.ย. 62 , 12:43:16 »
ลองดูตัวอย่างนี้ครับ พอดีค้นหาเจอจากเว็บนอก และเพิ่มเติมบางส่วนเช่นเลือกข้อมูลจากตารางพิกัส gps ลูกค้าให้ด้วยคับ
ตัวแผนที่อัพเดทล่าสุด 2019
Credit : Philben
ตัวแผนที่อัพเดทล่าสุด 2019
Credit : Philben
โพสต์นี้ได้รับคำขอบคุณจาก: apirak
41
ห้อง Ms Access อื่นๆ / โปรแกรมตัวอย่างการสร้างฟอร์มล็อคอินและเมนูที่เปลี่ยนไปตามผู้ใช้
« เมื่อ: 22 ก.ย. 62 , 12:41:58 »
พอดีมีเวลาและเห็นว่ามีหลายครั้งที่มีการถามถึงการสร้างฟอร์มล็อคอินและเมนู ผมเลยเขียนตัวอย่างขึ้นมาเอาไว้ให้เป็นแนวทางในการศึกษาครับ
ระบบมี 2 เทเบิลคือ tbUser ไว้เก็บ ID,รหัสผ่าน,และเมนูที่จะใช้ ในขณะที่อีกเทเบิล tbMenu จะเก็บว่าแต่ละเมนูมีโครงสร้างอย่างไร
ฟอร์มหลักๆคือ FmLogon เพื่อรับ ID และรหัสผ่านผู้ใช้ เมื่อป้อนถูกต้องแล้ว ระบบก็จะเปิดฟอร์ม FmMenu เพื่อแสดงเมนูของแต่ละคน เมื่อคลิกหรือเลื่อนมาที่แต่ละรายการในเมนู คำอธิบายของรายการนั้นจะแสดงที่กรอบด้านล่าง แต่ถ้าดับเบิลคลิก จะเป็นการเปิดหน้าฟอร์ม/รายงานของรายการนั้น พร้อมกับตัวเมนูจะถูกหดย่อลงไป และจะกลับมาแสดงโดยอัตโนมัติเมื่อปิดฟอร์ม/รายงานที่ได้เปิดไป หลังจากปิดเมนู ก็จะกลับมาเปิดฟอร์มล็อคอินอีกครั้ง ส่วนฟอร์มและรายงานที่เหลือเป็นแค่ตัวอย่างเพื่อแสดงให้เห็นว่าฟอร์ม/รายงานนั้นได้เปิดจริงๆแล้วเท่านั้น
ผมทำตัวอย่างนี้อย่างลวกๆ อาจมีข้อผิดพลาด แต่เท่าที่ทดสอบก็รันผ่านได้ด้วยดี ใครสนใจก็เอาไปปรับปรุงแก้ไขใช้งานได้เลย แต่อย่าถามต่อท้ายโพสว่าถ้าอยากทำอย่างนั้นอย่างนี้ จะต้องแก้จุดไหน เพิ่มตรงไหนยังไงนะครับ ผมแค่ทำเป็นตัวอย่างให้ดูเท่านั้น และที่สำคัญ ใครเอาไปใช้ ต้องรับความผิดพลาดหรือเสียหายที่อาจจะเกิดจากการทำงานของโปรแกรมนี้ด้วยตัวเองนะครับ ผมไม่รับผิดชอบอะไรทั้งสิ้น
ปล. อย่าถามนะว่า login ID และรหัสผ่านมีอะไรบ้าง
ระบบมี 2 เทเบิลคือ tbUser ไว้เก็บ ID,รหัสผ่าน,และเมนูที่จะใช้ ในขณะที่อีกเทเบิล tbMenu จะเก็บว่าแต่ละเมนูมีโครงสร้างอย่างไร
ฟอร์มหลักๆคือ FmLogon เพื่อรับ ID และรหัสผ่านผู้ใช้ เมื่อป้อนถูกต้องแล้ว ระบบก็จะเปิดฟอร์ม FmMenu เพื่อแสดงเมนูของแต่ละคน เมื่อคลิกหรือเลื่อนมาที่แต่ละรายการในเมนู คำอธิบายของรายการนั้นจะแสดงที่กรอบด้านล่าง แต่ถ้าดับเบิลคลิก จะเป็นการเปิดหน้าฟอร์ม/รายงานของรายการนั้น พร้อมกับตัวเมนูจะถูกหดย่อลงไป และจะกลับมาแสดงโดยอัตโนมัติเมื่อปิดฟอร์ม/รายงานที่ได้เปิดไป หลังจากปิดเมนู ก็จะกลับมาเปิดฟอร์มล็อคอินอีกครั้ง ส่วนฟอร์มและรายงานที่เหลือเป็นแค่ตัวอย่างเพื่อแสดงให้เห็นว่าฟอร์ม/รายงานนั้นได้เปิดจริงๆแล้วเท่านั้น
ผมทำตัวอย่างนี้อย่างลวกๆ อาจมีข้อผิดพลาด แต่เท่าที่ทดสอบก็รันผ่านได้ด้วยดี ใครสนใจก็เอาไปปรับปรุงแก้ไขใช้งานได้เลย แต่อย่าถามต่อท้ายโพสว่าถ้าอยากทำอย่างนั้นอย่างนี้ จะต้องแก้จุดไหน เพิ่มตรงไหนยังไงนะครับ ผมแค่ทำเป็นตัวอย่างให้ดูเท่านั้น และที่สำคัญ ใครเอาไปใช้ ต้องรับความผิดพลาดหรือเสียหายที่อาจจะเกิดจากการทำงานของโปรแกรมนี้ด้วยตัวเองนะครับ ผมไม่รับผิดชอบอะไรทั้งสิ้น
ปล. อย่าถามนะว่า login ID และรหัสผ่านมีอะไรบ้าง
โพสต์นี้ได้รับคำขอบคุณจาก: apirak
42
ห้อง MS Access / : การนำโปรแกรมไปใช้งาน ระหว่าง user กับ admin
« เมื่อ: 26 มิ.ย. 62 , 15:20:19 »อ้างถึง
แต่ตอนนี้ เค้าขอเพิ่มหลายส่วนเลยค่ะ TOTเป็นเรื่องธรรมดาของคนพัฒนาโปรแกรมจัดเก็บข้อมูลเลยครับ เท่าที่ทำมามันจะมีเรื่่องมาให้ทำต่อยอดไปเรื่อยๆ ละครับ
ค่อยๆ พัฒนาไปเรื่อยๆ ครับ ตัวเราเองต้องกำหนดระบบงานที่ต้องการให้ชัดเจ็นจะได้ไม่มีปัญหาภายหลัง อย่างงานที่ผมทำถ้าจะเพิ่มเติมแก้ไขส่วนไหน ก็จะสร้าง Flow การทำงานของงานจริงแล้วนำมาสร้างโปรแกรม และก่อนเริ่มสร้างจะประชุมจนได้ข้อสรุปว่าต้องการแบบนี้จริงๆ ผมถึงจะทำให้ เพราะมีบ่อยมากทำให้แล้วเปลี่ยนใจอยากให้แก้ไขอีกซึ่งจะเป็นงานเหนื่อยของพวกเราคับ
ถ้าติดตรงส่วนไหนก็สอบถามในบอร์ดได้ตลอดคับ
โพสต์นี้ได้รับคำขอบคุณจาก: apirak
43
ห้อง MS Access / : การนำโปรแกรมไปใช้งาน ระหว่าง user กับ admin
« เมื่อ: 25 มิ.ย. 62 , 15:19:19 »
ลองดูไม่แน่ใจว่าใช้แบบนี้ไหมนะครับ
1.Frm_Show_Downtime ให้เปิดทิ้งไว้ ฟอร์มนี้จะอัพเดท ข้อมูลซึ่งเราจะนำไปไว้ที่ เครื่องของ Admin หรือ เครื่องของ Tech ครับ
ข้อมูลแถวที่แสดงคือข้อมูลจากการคีย์ DownTime เข้ามาและยังไม่ได้รับการแก้ไข
2.เมื่อ User จะคีย์ Frm_Downtime ก็ให้ Login Frm_Downtime_Login แล้วทำการระบุข้อมูล
เมื่อกดบันทึก ระบบจะทำการสอบถามว่าต้องการบันทึกหรือไม่ ถ้าบันทึก รอซักแปปนึง ข้อมูลจะมาแสดงที่ฟอร์ม Frm_Show_Downtime
3.Tech ผู้ให้การแก้ไข สามารถกดปุ่ม Show Issuse เพื่อดูสาเหตุอาการของปัญหา และ สามารถกด Tech FIX เผื่อเข้าไปแก้ไข
และเมื่อจบงาน (OUT TIME) แล้ว ข้อมูลที่ Frm_Show_Downtime ที่แก้ไขแล้วจะหายไป
1.Frm_Show_Downtime ให้เปิดทิ้งไว้ ฟอร์มนี้จะอัพเดท ข้อมูลซึ่งเราจะนำไปไว้ที่ เครื่องของ Admin หรือ เครื่องของ Tech ครับ
ข้อมูลแถวที่แสดงคือข้อมูลจากการคีย์ DownTime เข้ามาและยังไม่ได้รับการแก้ไข
2.เมื่อ User จะคีย์ Frm_Downtime ก็ให้ Login Frm_Downtime_Login แล้วทำการระบุข้อมูล
เมื่อกดบันทึก ระบบจะทำการสอบถามว่าต้องการบันทึกหรือไม่ ถ้าบันทึก รอซักแปปนึง ข้อมูลจะมาแสดงที่ฟอร์ม Frm_Show_Downtime
3.Tech ผู้ให้การแก้ไข สามารถกดปุ่ม Show Issuse เพื่อดูสาเหตุอาการของปัญหา และ สามารถกด Tech FIX เผื่อเข้าไปแก้ไข
และเมื่อจบงาน (OUT TIME) แล้ว ข้อมูลที่ Frm_Show_Downtime ที่แก้ไขแล้วจะหายไป
โพสต์นี้ได้รับคำขอบคุณจาก: apirak
44
ห้อง MS Access / : การนำโปรแกรมไปใช้งาน ระหว่าง user กับ admin
« เมื่อ: 25 มิ.ย. 62 , 09:17:49 »
โปรแกรมออกแบบมาแบบไหนครับ ฐานข้อมูลเป็น Ms access หรือ SQL server ส่วนที่สอบถามมาผมจะตอบเท่าที่ทราบนะครับ
หรือ สร้าง Back-End ไว้ที่เครื่อง Admin แล้วใช้การ Mapdrive ให้เครื่อง User LinkTable มายัง Back-End
โดยให้เครื่อง Admin ดึงข้อมูลจาก Back-End มาแสดงครับ ลองศึกษาการสร้าง Back-End ดู
การเชื่อมโยงอาจจะใช้การ LinkTable
โดยใช้การตั้ง TimeInterval ในการ refresh ข้อมูลล่าสุดมาแสดง
ส่วนการเรียกข้อมูลมาแสดงสามารถทำได้หลายวิธีครับ
รออาจารย์ท่านอื่นมาเสริมนะครับ
อ้างถึง
เราจะสามารถนำโปรแกรมไปใช้งานได้อย่างไรคะสร้าง Back-End ไว้ที่เซิฟเวอร์และสร้าง Front-End ไว้ให้ User ทั้ง 8 เครื่องใช้งาน บันทึกข้อมูลหรือแก้ไขข้อมูล
โดยจะมีผู้ใช้(user) จำนวน 8 เครื่อง แต่จะให้มีจอรายงานผลหลัก 1 เครื่อง
หรือ สร้าง Back-End ไว้ที่เครื่อง Admin แล้วใช้การ Mapdrive ให้เครื่อง User LinkTable มายัง Back-End
โดยให้เครื่อง Admin ดึงข้อมูลจาก Back-End มาแสดงครับ ลองศึกษาการสร้าง Back-End ดู
การเชื่อมโยงอาจจะใช้การ LinkTable
อ้างถึง
มีการแจ้งเตือนเมื่อ user ล็อกอินมาเราควรสร้างจากอะไรคะ ฟร์อม หรือรีพอร์ตที่เครื่อง Admin ควรจะสร้าง หน้าจอ DashBoard โดยสร้างจาก Form นิแหละครับมาแสดงรายละเอียดข้อมูลที่ต้องการ โดยใช้การแสดงผล
โดยใช้การตั้ง TimeInterval ในการ refresh ข้อมูลล่าสุดมาแสดง
ส่วนการเรียกข้อมูลมาแสดงสามารถทำได้หลายวิธีครับ
รออาจารย์ท่านอื่นมาเสริมนะครับ
โพสต์นี้ได้รับคำขอบคุณจาก: apirak
45
ห้อง MS Access / : (มือใหม่ครับ) รบกวนช่วยอธิบาย code หน่อยครับ
« เมื่อ: 11 มิ.ย. 62 , 11:52:14 »
ในภาษา VBA เครื่องหมาย double quote เป็น string delimeter เปิด/ปิดสำหรับค่าคงที่ของข้อความ (ในนี้ผมจะใช้สีแดงแล้วกัน) เช่น ค่าคงที่ของข้อความ AB ก็จะต้องสร้างเป็น "AB" แต่ถ้าค่าคงที่ของข้อความต้องมี double quote อยู่ภายในอยู่ด้วย เช่น A"B เราต้องใช้ double quote 2 ตัว VBA จะรู้ว่าจริงๆแล้ว นี่เป็นตัวอักษร double quote เพียงตัวเดียว ไม่ใช่ delimiter ดังนั้นเราก็ต้องสร้างเป็น "A""B"
ส่วน string delimeter ในภาษา SQL จะใช้ได้ทั้ง double quote และ single quote ดังนั้นเมื่อต้องการค่าคงที่ของข้อความ SELECT * FROM Output WHERE [Type] like 'AB' ลงในตัวแปรชื่อ SQL เราก็จะสร้างคำสั่งเป็น SQL = "SELECT * FROM Output WHERE [Type] like 'ABC'" หรือถ้าเราใช้ double quote แทน single quote คำสั่งก็จะกลายเป็น SQL = "SELECT * FROM Output WHERE [Type] like ""ABC"""
ส่วน & คือ operator ที่ใช้เชื่อมข้อความ 2 ข้อความเข้าด้วยกัน เช่น "A" & "B" ก็จะได้ค่าคงที่ของข้อความเป็น AB หรือ "A" & """B""" ก็จะได้เป็น A"B"
ส่วน string delimeter ในภาษา SQL จะใช้ได้ทั้ง double quote และ single quote ดังนั้นเมื่อต้องการค่าคงที่ของข้อความ SELECT * FROM Output WHERE [Type] like 'AB' ลงในตัวแปรชื่อ SQL เราก็จะสร้างคำสั่งเป็น SQL = "SELECT * FROM Output WHERE [Type] like 'ABC'" หรือถ้าเราใช้ double quote แทน single quote คำสั่งก็จะกลายเป็น SQL = "SELECT * FROM Output WHERE [Type] like ""ABC"""
ส่วน & คือ operator ที่ใช้เชื่อมข้อความ 2 ข้อความเข้าด้วยกัน เช่น "A" & "B" ก็จะได้ค่าคงที่ของข้อความเป็น AB หรือ "A" & """B""" ก็จะได้เป็น A"B"
โพสต์นี้ได้รับคำขอบคุณจาก: apirak
46
ห้อง MS Access / : (มือใหม่ครับ) รบกวนช่วยอธิบาย code หน่อยครับ
« เมื่อ: 11 มิ.ย. 62 , 08:24:15 »อ้างถึง
1. หลักความแตกต่างระหว่าง " และ ' และ & คืออะไรครับ
" และ ' เราเรียกว่า double quote และ Single quote ครับ สัญลักษณ์พวกนี้เป็นการบอกให้ทราบว่า คุณได้กำหนดช่วงของ ข้อความ หรือ String หรือ ตัวเลข หรือตัว Control จาก ไหน ถึง ไหน ครับ เช่น "..............." เป็นการบอกว่า ภายใน double quote นี้คือเนื้อหาส่วนเดียวกัน
ความแตกต่างของการใช้ " และ ยกตัวอย่างการใช้ Dlookup
เราจะใช้ ' ในการกรณีที่ อ้างถึงเขตข้อมูลที่เป็น string หรือข้อความ เช่น
DLookup("FieldName" , "TableName" , "Criteria= 'String'")
ในกรณีที่เป็น ตัวเลข เราจะใช้ " ในการกำหนดขอบเขตครับเช่น N คือตัวเลข
DLookup("FieldName" , "TableName" , "Criteria = n")
แต่ " " นี้ก็ไม่ได้ใช้กับตัวเลขเสมอไป เราจะใช้ในการกำหนด เริ่มต้นและสิ้นสุดของข้อความที่เรากำหนดได้เหมือนกันเช่น
msgbox "สวัสดีครับ",vbInformation,"ทักทาย"
& นั้นใช้ในการเชื่อมต่อกับส่วน อื่นๆของคำสั่ง เช่น ตัวแปร เชื่อมกับ Control / ข้อความเชื่อมกับ Control / กำหนด เชื่อมฟิลล์เข้าด้วยกัน เช่น Field1 & "/" & Field2 ก็จะได้ Field1/Field2เป็นต้น
อ้างถึง
2. ในกรณีนี้ทำไมต้องใส่ " " ที่ตอนต้นและตอนท้ายด้วยครับ เพราะดูในที่อื่น ก็ select * from where ไม่เห็นต้องมี " " ปิดหัวท้ายเลย
คุณอ้างถึงตัวแปร Sql ที่เป็น string ซึ่ง ต้องมี " " ปิดหัวท้ายเพื่่อกำหนดขอบเขตของ String ที่เรากำหนดคับ
อ้างถึง
3. like '" & Nz(Me.tcombo, "*") & "' --> รบกวนช่วยแปล Code นี้หน่อยครับ ไม่เข้าใจตรงการเขียน '" & XXX & "'จากตัวอย่างนี้ลองสังเกตุ '" & XXX & "' การใส่ เครื่องหมาย " และ ' ให้การ Control ที่เป็นข้อความคับ
Nz(Me.tcombo, "*") คือการกำหนดให้ตรวจสอบ Control ที่ชื่อ tcombo ครับโดยการกำหนดให้แสดงผลตามว่า tcombo ว่างหรือไม่ว่าง
ถ้า tcombo ไม่เป็นค่าว่าง สมมุติเราใส่ กรุงเทพ เงื่อนไขของ คำสั่งนี้คือ like "กรุงเทพ" ซึ่ง ถ้าเขตข้อมูลไหนมีคำว่ากรุงเทพก็จะแสดงรายการออกมาครับ
แต่ถ้า tcombo เป็นค่าว่าง Nz Function ก็จะแทนค่าว่างด้วย * คือถ้าว่างก็ให้เงื่อนไขคือแสดงข้อมูลทั้งหมด
ผมตอบได้เท่าที่ผมนึกออกนะคับ รออาจารย์ท่านอื่นมาเสริม
โพสต์นี้ได้รับคำขอบคุณจาก: apirak
47
ห้อง MS Access / (มือใหม่ครับ) รบกวนช่วยอธิบาย code หน่อยครับ
« เมื่อ: 10 มิ.ย. 62 , 22:12:53 »
sql = "SELECT * FROM Output WHERE [Type] like '" & Nz(Me.tcombo, "*") & "' and [Province] like '" & Nz(Me.cprovince, "*") & "' and [District] like '" & Nz(Me.cdistrict, "*") & "' and [SubDistrict] like '" & Nz(Me.csubdistrict, "*") & "' and [Location] like '" & Nz(Me.Clocation, "*") & "'"
1. หลักความแตกต่างระหว่าง " และ ' และ & คืออะไรครับ
2. ในกรณีนี้ทำไมต้องใส่ " " ที่ตอนต้นและตอนท้ายด้วยครับ เพราะดูในที่อื่น ก็ select * from where ไม่เห็นต้องมี " " ปิดหัวท้ายเลย
3. like '" & Nz(Me.tcombo, "*") & "' --> รบกวนช่วยแปล Code นี้หน่อยครับ ไม่เข้าใจตรงการเขียน '" & XXX & "'
ขอโทษนะครับ ที่ต้องรบกวนให้อธิบายเยอะเลย
ขอบคุณล่วงหน้าครับผม
1. หลักความแตกต่างระหว่าง " และ ' และ & คืออะไรครับ
2. ในกรณีนี้ทำไมต้องใส่ " " ที่ตอนต้นและตอนท้ายด้วยครับ เพราะดูในที่อื่น ก็ select * from where ไม่เห็นต้องมี " " ปิดหัวท้ายเลย
3. like '" & Nz(Me.tcombo, "*") & "' --> รบกวนช่วยแปล Code นี้หน่อยครับ ไม่เข้าใจตรงการเขียน '" & XXX & "'
ขอโทษนะครับ ที่ต้องรบกวนให้อธิบายเยอะเลย
ขอบคุณล่วงหน้าครับผม
โพสต์นี้ได้รับคำขอบคุณจาก: apirak
48
ห้อง MS Access / : ขอฟังก์ชั่น ที่ใช้คำนวน เวลา การมาสายหน่อยคะ
« เมื่อ: 10 มิ.ย. 62 , 17:25:43 »
ลองศีกษาฟังชั่น DateDiff() ดูครับ สิ่งที่จะได้คือเวลาที่สาย
จากนั้นใช้คำสั่ง If เพื่อใช้คัดกรองผู้ที่มาสาย = 1
ลองเพิ่มรูปแบบคำสั่งนี้เข้าไปใน Query ดูครับ LateChk: IIf(DateDiff("n",[StrtWrk],"08:00")<0,"1","")
ขอขอบคุณความรู้เกี่ยวกับ MS-Access จาก อ. สุภาพ ไชยา
ก็ฝากไว้เผื่อจะสามารถช่วยให้มิตรรักแฟนเพลงท่านหนึ่งท่านใด ก้าวพ้นปัญหาที่กำลังแก้อยู่ได้เร็วขึ้น
จากนั้นใช้คำสั่ง If เพื่อใช้คัดกรองผู้ที่มาสาย = 1
ลองเพิ่มรูปแบบคำสั่งนี้เข้าไปใน Query ดูครับ LateChk: IIf(DateDiff("n",[StrtWrk],"08:00")<0,"1","")
ขอขอบคุณความรู้เกี่ยวกับ MS-Access จาก อ. สุภาพ ไชยา
ก็ฝากไว้เผื่อจะสามารถช่วยให้มิตรรักแฟนเพลงท่านหนึ่งท่านใด ก้าวพ้นปัญหาที่กำลังแก้อยู่ได้เร็วขึ้น
โพสต์นี้ได้รับคำขอบคุณจาก: apirak
49
ห้อง MS Access / : สอบถามการใช้ combobox เพื่อ search ครับ
« เมื่อ: 10 มิ.ย. 62 , 13:55:49 »โค๊ด: [Select]
Option Compare Database
Private Sub SearchCombo()
Dim sql As String
sql = "SELECT * FROM tbldata WHERE [Province] like '" & Nz(Me.Combo1, "*") & "' and [District] like '" & Nz(Me.Combo2, "*") & "'"
Forms!frmsearch!frmdata.Form.RecordSource = sql
Forms!frmsearch!frmdata.Form.Requery
If Not IsNull(Me.Combo1) Then
Me.Combo2.RowSource = "SELECT DISTINCT tbldata.District, tbldata.Province FROM tbldata WHERE (((tbldata.Province)=[forms]![frmsearch]![Combo1]));"
Else
Me.Combo2.RowSource = "SELECT DISTINCT tbldata.District FROM tbldata GROUP BY tbldata.District;"
End If
End Sub
Private Sub Combo1_AfterUpdate()
Me.Combo2 = Null
SearchCombo
End Sub
Private Sub Combo2_AfterUpdate()
SearchCombo
End Sub
Private Sub Combo2_GotFocus()
SearchCombo
End Sub
สร้างเงื่อนไขในการกำหนด RowSource ครับลองดูครับ
โพสต์นี้ได้รับคำขอบคุณจาก: apirak
50
ห้อง MS Access / : วิธีเพิ่มภูมิภาค(ภาคเหนือ,กลาง,ใต้,ออก,ตก,อีสาน)เพื่อคัดกรองจังหวัด
« เมื่อ: 10 มิ.ย. 62 , 08:00:05 »
ถ้าจะเก็บข้อมูลลงในตารางเป็น ID ของ ตารางนั้นก็คงจะเหมาะครับ เพราะใช้ทรัพยากรน้อยลง
ถ้าคุณกำหนดข้อมูลแถวของ Combobox เป็น คอลัมน์1 ID คอลัมน์2 ชื่อจังหวัดหรือตำบลหรืออำเภอ
ตรง column width(ความกว้างของคอลัมน์) กำหนดซัก 0ซม.;5ซม. หรือตัวเลขอื่นๆ เพื่อให้แสดงรายการได้ครบ
column width กำหนดซัก 0ซม.;5ซม. คือ Combobox คอลัมน์ไหน กำหนดเป็น 0 จะไม่แสดงคอลัมน์นั้น จากการกำหนดนี้ข้อมูลจะถูกเก็บข้อมูล ID แต่จะแสดง รายการของคอมโบบ๊อกนั้นแทน
ส่วน BoundColumn(คอลัมน์ที่ถูกผูกไว้)ถ้าอยากจะเก็บข้อมูลเป็น ID กำหนดเป็น 1 ถ้าจะเก็บเป็นตัวหนังสือหรือรายการกำหนดเป็น 2 หรือดูจากการกำหนดชนิดแหล่งข้อมูลแถวว่าต้องการผูกคอลัมน์ไหนไว้ครับ
ถ้าคุณกำหนดข้อมูลแถวของ Combobox เป็น คอลัมน์1 ID คอลัมน์2 ชื่อจังหวัดหรือตำบลหรืออำเภอ
ตรง column width(ความกว้างของคอลัมน์) กำหนดซัก 0ซม.;5ซม. หรือตัวเลขอื่นๆ เพื่อให้แสดงรายการได้ครบ
column width กำหนดซัก 0ซม.;5ซม. คือ Combobox คอลัมน์ไหน กำหนดเป็น 0 จะไม่แสดงคอลัมน์นั้น จากการกำหนดนี้ข้อมูลจะถูกเก็บข้อมูล ID แต่จะแสดง รายการของคอมโบบ๊อกนั้นแทน
ส่วน BoundColumn(คอลัมน์ที่ถูกผูกไว้)ถ้าอยากจะเก็บข้อมูลเป็น ID กำหนดเป็น 1 ถ้าจะเก็บเป็นตัวหนังสือหรือรายการกำหนดเป็น 2 หรือดูจากการกำหนดชนิดแหล่งข้อมูลแถวว่าต้องการผูกคอลัมน์ไหนไว้ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: apirak
51
ห้อง MS Access / : วิธีเพิ่มภูมิภาค(ภาคเหนือ,กลาง,ใต้,ออก,ตก,อีสาน)เพื่อคัดกรองจังหวัด
« เมื่อ: 08 มิ.ย. 62 , 15:11:24 »
--> ขอไฟล์ของท่านมาดูได้หรือไม่
ท่านเอาไปใช้งานแนวไหนครับ
-> ใว้เพื่อใช้เพิ่มรายชื่อหน่วยงาน
-> ใว้เมื่อเลือกหน่วยงานแล้วกรองตัวเลือกออกมา เช่น กรมป่าไม้ > จังหวัด > อำเภอ > ตำบล > ที่อยู่ > ...
ลองแก้ตัวเลขในช่อง Bound Column หรือยังครับ
New ไฟล์ตัวอย่างที่ผมใช้เพิ่มชื่อที่อยู่ลูกค้า และเรียกมาดูครับ(ต้นฉบับผมเรียกมาใช้งาน)
ท่านเอาไปใช้งานแนวไหนครับ
-> ใว้เพื่อใช้เพิ่มรายชื่อหน่วยงาน
-> ใว้เมื่อเลือกหน่วยงานแล้วกรองตัวเลือกออกมา เช่น กรมป่าไม้ > จังหวัด > อำเภอ > ตำบล > ที่อยู่ > ...
ลองแก้ตัวเลขในช่อง Bound Column หรือยังครับ
New ไฟล์ตัวอย่างที่ผมใช้เพิ่มชื่อที่อยู่ลูกค้า และเรียกมาดูครับ(ต้นฉบับผมเรียกมาใช้งาน)
โพสต์นี้ได้รับคำขอบคุณจาก: apirak
52
ห้อง MS Access / : ต้องการรวมข้อมูลจากสองตาราง (ยอดซื้อ ยอดขาย แต่ละเดือน)
« เมื่อ: 23 พ.ค. 62 , 19:31:21 »
ลองดูโค้ดนี้ครับ ไม่รู้รันผ่านไหมยังไม่ได้เทสครับ สร้างคิวรี่ใหม่ขึ้นมาเอา SQL นี้ไปวางแล้วรันดู
โค๊ด: [Select]
SELECT [VATBUY QUERY1].VatMonth, [VATSALE QUERY1].[Sum Of Price] AS Sale, [VATBUY QUERY1].[Sum Of Price] AS Buy, Format(Nz([sale])-Nz([buy]),"Standard") AS [Sale-Buy]
FROM [VATBUY QUERY1] INNER JOIN [VATSALE QUERY1] ON [VATBUY QUERY1].VatMonth = [VATSALE QUERY1].VatMonth;
โพสต์นี้ได้รับคำขอบคุณจาก: apirak
53
ห้อง MS Access / : กำหนดช่วงวันที่
« เมื่อ: 22 พ.ค. 62 , 16:04:28 »ลองดูนะครับ ไม่รู้ใช่ที่ต้องการหรือเปล่า
แนวคิดคือ
1.ถ้าเกินวันที่ 10 ก็ให้ เดือน +1
2.ถ้าเป็น เดือน 12 และ วันที่ >10 ให้ เดือนเท่ากับ 1 และ ปี+1
แบบที่ 1 แบบแสดงเดือนเป็นตัวเลข และเดือนแบบตัวอักษร
โค๊ด: [Select]
Private Sub txtDate_AfterUpdate()
Dim sMonth As String
Dim sDate As String
Dim result As String
sMonth = Month(Me.txtDate)
sDate = Day(Me.txtDate)
sYear = Format(txtDate, "yyyy")
If sDate <= 10 Then
result = Me.txtDate
Else
result = sDate & "/" & sMonth + 1 & "/" & sYear
If (Mid(result, 4, 2)) = "13" Then
result = sDate & "/" & "1" & "/" & (Format(txtDate, "yyyy") + 1)
Else
result = result
End If
End If
result = result
Me.txtMonth = "เดือน" & Month(result) & " " & MonthName(Month(result))
End Sub
แบบที่ 2 แสดงเดือนและปีแบบเต็ม
โค๊ด: [Select]
Private Sub txtDate_AfterUpdate()
Dim sMonth As String
Dim sDate As String
Dim result As String
sMonth = Month(Me.txtDate)
sDate = Day(Me.txtDate)
sYear = Format(txtDate, "yyyy")
If sDate <= 10 Then
result = Me.txtDate
Else
result = sDate & "/" & sMonth + 1 & "/" & sYear
If (Mid(result, 4, 2)) = "13" Then 'ดักเงื่อนไข กรณี เดือน 12 +1 จะเท่ากับ 13
result = sDate & "/" & "1" & "/" & (Format(txtDate, "yyyy") + 1) 'ก็ให้แปลงกลับเป็นเดือน 1 และ +ปี ไปอีก 1
Else
result = result
End If
End If
Me.txtMonth = result
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: apirak
54
ห้อง MS Access / : อยากให้แนปรูปได้มากกว่า 1 รูปและกำหนดให้แนบรูปไฟล์อื่นเพิ่มนอกจาก JPG
« เมื่อ: 22 พ.ค. 62 , 14:37:11 »
ยินดีครับ ที่จริงมันสามารถ Convert File รูป เป็นรูปแบบที่ต้องการได้ด้วยนะครับ เช่น ต้นฉบับเป็น .BMP จะแปลงเป็น .JPEG หรือ อื่นๆได้ โดยใช้ WIA
แต่จากความต้องการเจ้าของกระทู้ ไม่น่าจะใช้ในส่วนนี้ครับ
แต่จากความต้องการเจ้าของกระทู้ ไม่น่าจะใช้ในส่วนนี้ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: apirak