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 / : ไฮไลท์ row ที่โฟกัส
« เมื่อ: 19 มิ.ย. 63 , 16:48:52 »การสร้าง Highlight ให้กับ Current Record ลองดูตัวอย่างนี้ครับ
1.สร้าง textbox unbound ขึ้นมา 1 อันชื่อ txtHighlight แล้วซ่อนไว้ ไม่ต้องแสดง
2.เลือก textbox ตรง Detail ทั้งหมด แล้วเลือกไปที่ี การจัดรูปแบบตามเงื่อนไข ดังภาพด้านล่าง
3.กำหนดเงื่อนไข นิพจน์ โดยสร้างเงื่อนไขเช็คว่า ถ้าเรคคอร์ดปัจจุบัน = txtHighlight ก็จะแสดง สีตามที่เรากำหนด ดังรูป
4.กำหนดโค้ด Event Form_Current()
Private Sub Form_Current()
Me.txtHighlight = Me.[ID]
End Sub
หมายเหตุ
ถ้าคุณอยากให้ได้แบบการเลือกทีละหลายๆ เรคคอร์ดโดยใช้ In เหมือนตัวอย่างเก่าที่เคยทำ ก็นำมาปรับใช้ได้เลยครับ ใช้วิธีแบบนั้นได้เหมือนกัน
โดยกำหนดเงื่อนไข แบบตัวอย่างข้อ 2
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown
39
ห้อง MS Access / : อยากได้วิธีทำให้ในตัวเลือกรายการมีภาพประกอบได้ใหมครับ (image list in combo box)
« เมื่อ: 10 มิ.ย. 63 , 15:26:34 »40
ห้อง Ms Access อื่นๆ / : สอบถามวิธีเขียนมาโครหรือโมดูลในการทำชุดคำสั่งใว้ใช้งานครับ
« เมื่อ: 26 พ.ค. 63 , 15:50:26 »ลองไปทดสอบดูนะครับ ผมใช้การจับลำดับของ combobox โดยใช้ Active Control
สาย DIY อีกแล้วนะครับอิอิ โดยใช้ Call select_case ใน Event AfterUpdate() ทุกอันนะครับ
โดยผมจะกำหนด combobox เป็น Nboss_1 แทนของเดิมคือ 01 นะครับ
ข้อดีมีโค้ดชุดเดียวมีกี่ combobox ก็ได้ครับไม่จำกัด
เช่น
Private Sub Nboss_1_AfterUpdate()
Call select_case
End Sub
Private Sub Nboss_2_AfterUpdate()
Call select_case
End Sub
Private Sub Nboss_3_AfterUpdate()
Call select_case
End Sub
Private Sub Nboss_ลำดับ N_AfterUpdate()
Call select_case
End Sub
โค๊ด: [Select]
Sub select_case()
Dim strTextName,GetString,GetNum As String
strTextName = ActiveControl.Name
GetNum = Right(strTextName, Len(strTextName) - InStrRev(strTextName, "_"))
Me("ne_" & GetNum) = Me(strTextName).Column(4)
GetString = Me(strTextName).Column(4)
Select Case GetString
Case "Undead": Me("WinNE_" & GetNum).Value = "Fire"
Case "Earth": Me("WinNE_" & GetNum).Value = "Fire"
Case "Fire": Me("WinNE_" & GetNum).Value = "Water"
Case "Water": Me("WinNE_" & GetNum).Value = "Wind"
Case "Wind": Me("WinNE_" & GetNum).Value = "Earth"
Case "Poison": Me("WinNE_" & GetNum).Value = "Holy"
Case "Shadow": Me("WinNE_" & GetNum).Value = "Holy"
Case "Holy": Me("WinNE_" & GetNum).Value = "Shadow"
Case Else: Me("WinNE_" & GetNum).Value = ""
End Select
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown
41
ห้อง MS Access / : หากไม่ต้องการให้จำนวนของ ติดลบ -1 ผมควรเขียนแบบไหนครับ อาจารย์
« เมื่อ: 22 เม.ย. 63 , 10:19:16 »
ทำบนฟอร์มหรือเปล่าครับ ที่จริงแล้ว ไม่ใช่แค่สินค้ามีค่าเป็น 0 นะครับ
วิธีการผมว่าน่าจะสร้างการเปรียบเทียบจำนวนคงเหลือ กับ จำนวนเบิกด้วย เช่น
สินค้าคงเหลือ = 3 แต่เบิก = 5 แบบนี้ก็ไม่ได้อยู่แล้ว มันติดลบ
ใช้ IF check ก็ได้เช่น
IF สินค้าเบิก > สินค้าคงเหลือ or สินค้าเบิก = "0" Then
msgbox "ไม่สามารถเบิกได้เกินจำนวนที่มีอยู่ คงเหลือปัจจุบัน" & สินค้าคงเหลือ & " อัน"
End if
วิธีการผมว่าน่าจะสร้างการเปรียบเทียบจำนวนคงเหลือ กับ จำนวนเบิกด้วย เช่น
สินค้าคงเหลือ = 3 แต่เบิก = 5 แบบนี้ก็ไม่ได้อยู่แล้ว มันติดลบ
ใช้ IF check ก็ได้เช่น
IF สินค้าเบิก > สินค้าคงเหลือ or สินค้าเบิก = "0" Then
msgbox "ไม่สามารถเบิกได้เกินจำนวนที่มีอยู่ คงเหลือปัจจุบัน" & สินค้าคงเหลือ & " อัน"
End if
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown
42
ห้อง MS Access / : หากไม่ต้องการให้จำนวนของ ติดลบ -1 ผมควรเขียนแบบไหนครับ อาจารย์
« เมื่อ: 21 เม.ย. 63 , 22:56:14 »
คือคำถามคุณกว้างมากจนไม่รู้จะตอบอย่างไร
ก่อนอื่นคุณต้องถามตัวเองก่อนว่าถ้าไม่ต้องการให้ติดลบแล้วต้องการอย่างไรต่อครับ
1. ต้องการว่าถ้าค่าติดลบ แล้วให้แสดงเป็น 0 แทน
2. ต้องการว่าถ้าค่าติดลบแล้วให้ใส่ข้อมูลนั้นไม่ได้
3. ต้องการว่าถ้าค่าที่จะใส่แล้วทำให้ติดลบ ก็แนะนำว่าให้ใส่ค่าอะไรที่จะพอดีออกมาเป็น 0 แทน
อันนี้ผมคิดแบบฉุกเฉินก็ได้ตั้ง 3 แบบ แล้ว ดังนั้นต้องตอบตรงนี้ให้ได้ก่อนครับ ถึงจะสามารถตอบต่อได้
ก่อนอื่นคุณต้องถามตัวเองก่อนว่าถ้าไม่ต้องการให้ติดลบแล้วต้องการอย่างไรต่อครับ
1. ต้องการว่าถ้าค่าติดลบ แล้วให้แสดงเป็น 0 แทน
2. ต้องการว่าถ้าค่าติดลบแล้วให้ใส่ข้อมูลนั้นไม่ได้
3. ต้องการว่าถ้าค่าที่จะใส่แล้วทำให้ติดลบ ก็แนะนำว่าให้ใส่ค่าอะไรที่จะพอดีออกมาเป็น 0 แทน
อันนี้ผมคิดแบบฉุกเฉินก็ได้ตั้ง 3 แบบ แล้ว ดังนั้นต้องตอบตรงนี้ให้ได้ก่อนครับ ถึงจะสามารถตอบต่อได้
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown
43
ห้อง MS Access / : ฟอร์มบันทึกข้อมูล มีฟิลด์รายการเยอะ จะแยกหน้าลงบัญชีต่างหาก
« เมื่อ: 04 เม.ย. 63 , 15:43:25 »
สามารถใช้ Tab Control เพื่อใช้เป็นคอนเทนเนอร์บรรจุคอนโทรลอื่นๆรวมทั้งซับฟอร์มคอนโทรลได้อีกชั้นนึง Tab Control ตัวนึงสามารถมีได้หลาย Page อย่างในรูป ตย.ข้างล่าง ก็มี Page "รายการขาย" และ "ลงบัญชี"
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown
44
ห้อง MS Access / : บังคับต้องป้อนข้อมูลในฟิลด์ปัจจุบันก่อน จึงป้อนข้อมูลถัดไปได้
« เมื่อ: 31 ม.ค. 63 , 12:34:05 »
Private Sub Text185_GotFocus()
If Isnull(Me.txt_shop_id) Then
MsgBox "ป้อนข้อมูล สาขา ก่อนนะ"
Me.txt_shop_id.SetFocus
End If
End Sub
If Isnull(Me.txt_shop_id) Then
MsgBox "ป้อนข้อมูล สาขา ก่อนนะ"
Me.txt_shop_id.SetFocus
End If
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown
45
ห้อง MS Access / : สอบถามวิธีทำให้ Text Box รันเลขพร้อมบันทึกลงตารางนะครับ
« เมื่อ: 18 ธ.ค. 62 , 18:05:00 »
หลักการคือ พอขึ้นเรคอร์ดใหม่ปั๊ป ก็เอา "กล่องเป้าหมาย" ของบรรทัดสุดท้ายมาใส่พร้อมบันทึกเรคอร์ดครับ ก็ใส่โค้ดนี้ลงไปใน Form_Current event procedure
โค๊ด: [Select]
Private Sub Form_Current()
Dim RS As DAO.Recordset
If Me.NewRecord Then
Set RS = Me.RecordsetClone
If RS.RecordCount > 0 Then
RS.MoveLast
If Not IsNull(RS("ชื่อฟิลด์กล่องเป้าหมาย")) Then
Me.ชื่อเท็กซ์บ็อกซ์กล่องเป้าหมาย = RS("ชื่อฟิลด์กล่องเป้าหมาย")
DoCmd.RunCommand acCmdSaveRecord
End If
End If
RS.Close
End If
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown
46
ห้อง MS Access / : ใช้ Dmax รันเลขที่บิลแล้ว Error แก้อย่างไรให้ใช้ได้ครับผม
« เมื่อ: 01 พ.ย. 62 , 18:04:04 »
Me.QU_No = "QU" & Right([txtDateTH], 2) & Right("00" & DMax("[QU_No]", "[T_Quot v7]", "Left([QU_No],4) = 'QU'") & Right([txtDateTH], 2) + 1, 2)
แค่ใส่เครื่องหมายผิดที่ครับ
แค่ใส่เครื่องหมายผิดที่ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown
47
ห้อง MS Access / : เราสามารถบังคับให้ใส่ข้อมูลบนฟรอม เรียงตามลำดับ ห้ามข้ามได้ไหม
« เมื่อ: 06 ก.ย. 62 , 14:12:02 »ทำไม่ได้ค่ะAutorun ไม่จำเป็นว่าจะใช้ Datatype แบบ AutoNumber อย่างเดียวครับ ใช้แบบ Number แทนก็ได้เหมือนกัน
เรา ต้องการให้ขึ้น Record ใหม่ แล้วให้เลขเป็น Autorun แล้วมันไม่ข้ามเลขค่ะ
ปกติถ้าลบ record ทิ้ง เลขที่เป็น Autorun จะรันข้ามไปเรย
โดยเราสามารถใช้การสร้าง การรันตัวเลขไป ตามลำดับได้ โดยใช้ Event ของ ฟอร์มโดยใช้ Function Dmax เพื่อหาค่าสูงสุด นำมา +1 เพื่อให้ได้ลำดับต่อๆไปครับ
ผมจะทำตัวอย่างให้ได้ ลองส่งรูปตัวอย่าง Table รูปตัวอย่างฟอร์มที่ทำอยู่มาดูหน่อยครับ
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown
48
ห้อง MS Access / : ทำ สี่เหลี่ยม rectangle ใน access ให้เป็นสี่เหลี่ยมมุมมน(ปกติสี่เหลี่ยมมุมฉาก)
« เมื่อ: 23 มิ.ย. 62 , 20:00:22 »
ลองเข้าไปดูที่นี่นะคะ อ. TTT มีคำตอบอยู่ค่ะ
https://www.thai-access.com/yeadram_view.php?topic_id=5420
https://www.thai-access.com/yeadram_view.php?topic_id=5420
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown
49
ห้อง MS Access / : Else กับ ElseIf ให้ผลต่างกันอย่างไร
« เมื่อ: 16 มิ.ย. 62 , 12:54:13 »
แต่ถ้าเราเขียนคำสั่งที่จะทำ ให้อยู่ในบรรทัดเดียวกับ If ... Then ได้ เราก็ไม่ต้องมี End If ครับ เช่น
If A=1 Then B=2: C=3 Else B=4: C=5
หมายเหตุ เราใช้เครื่องหมาย : เพื่อคั่นแต่ละคำสั่งที่จะเขียนในบรรทัดเดียวกัน
If A=1 Then B=2: C=3 Else B=4: C=5
หมายเหตุ เราใช้เครื่องหมาย : เพื่อคั่นแต่ละคำสั่งที่จะเขียนในบรรทัดเดียวกัน
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown
50
ห้อง 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 จาก อ. สุภาพ ไชยา
ก็ฝากไว้เผื่อจะสามารถช่วยให้มิตรรักแฟนเพลงท่านหนึ่งท่านใด ก้าวพ้นปัญหาที่กำลังแก้อยู่ได้เร็วขึ้น
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown
51
ห้อง MS Access / : มีวิธีทำให้ continuous form เรคคอดใหม่ อยู่บนสุดได้ไหม
« เมื่อ: 08 พ.ค. 62 , 10:46:20 »
ถ้าใช้การสร้าง Unbound Control ไว้ส่วนหัวแล้วกรอกข้อมูลจากบนนี้ น่าจะพอทำได้คับ
ส่วนการให้ข้อมูลล่าสุดมาแสดงบนสุด ผมใช้การสร้างฟิลล์ อีกฟิลล์ datatype Date/Time กำหนด ค่าเริ่มต้นเป็น Now แล้วกรองค่าจากมากไปหาน้อยครับ
หรือถ้ามี ID แบบ Autonumber ก็เอามากรองได้เลยครับไม่ต้องสร้างฟิลล์เพิ่ม
ตัวอย่างด้านล่าง
ส่วนการให้ข้อมูลล่าสุดมาแสดงบนสุด ผมใช้การสร้างฟิลล์ อีกฟิลล์ datatype Date/Time กำหนด ค่าเริ่มต้นเป็น Now แล้วกรองค่าจากมากไปหาน้อยครับ
หรือถ้ามี ID แบบ Autonumber ก็เอามากรองได้เลยครับไม่ต้องสร้างฟิลล์เพิ่ม
ตัวอย่างด้านล่าง
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown
52
ห้อง MS Access / : สอบถามวิธีสั่งพิมพ์บิล สั่งครั้งเดียว ให้บิลออกทั้งต้นฉบับ และสำเนา
« เมื่อ: 20 เม.ย. 62 , 05:15:10 »
ที่จริงฟอร์ม ต้นฉบับหรือ ฟอร์มสำเนา ไม่ต้องเปิดขึ้นมาเพื่อจะพิมพ์ก็ได้คับ
ผมสมมุติ ฟอร์มต้นฉบับชื่อ Frm_original
ฟอร์มสำเนาชื่อ Frm_Copy
คำสั่งที่จะนำไปวางที่ Event ที่ต้องการคือ
หมายเหตุ ตรง DoCmd.PrintOut , , , , 1 การกำหนดจำนวนว่าจะปริ้นกี่แผ่นนะครับ
ผมสมมุติ ฟอร์มต้นฉบับชื่อ Frm_original
ฟอร์มสำเนาชื่อ Frm_Copy
คำสั่งที่จะนำไปวางที่ Event ที่ต้องการคือ
โค๊ด: [Select]
Private Sub BtnPrint_Click()
DoCmd.SelectObject acForm, “Frm_original”, True
DoCmd.PrintOut , , , , 1
DoCmd.SelectObject acForm, “Frm_Copy”, True
DoCmd.PrintOut , , , , 1
End Sub
เท่านี้ก็จะทำการปริ้น ทั้ง 2 ฟอร์ม โดยไม่ต้องเปิดฟอร์มขึ้นมาก็ได้คับหมายเหตุ ตรง DoCmd.PrintOut , , , , 1 การกำหนดจำนวนว่าจะปริ้นกี่แผ่นนะครับ
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown
53
ห้อง MS Access / : การใช้คิวรี่คำนวณค่าขนส่งตามช่วงเรตราคา
« เมื่อ: 08 เม.ย. 62 , 21:57:39 »
ยินดีครับ thai access บอร์ดแห่งการแชร์ประสบการณ์ การแบ่งปันและการเรียนรู้ครับ ผมเริ่มจากไม่เป็นเลยได้เรียนรู้จากบอร์ดนี้แหละครับ จนพอที่จะแนะนำได้บ้าง
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown
54
ห้อง MS Access / : ขอสูตร แสดง จำนวน วัน และ ชม. ในการทำงานจากเวลารวมเป็นนาที
« เมื่อ: 01 เม.ย. 62 , 23:20:19 »
x \ y = จำนวนเต็มของ x / y
x Mod y = เศษเหลือจาก x / y เป็นจำนวนเต็ม
x Mod y = เศษเหลือจาก x / y เป็นจำนวนเต็ม
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown