แสดงกระทู้

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

หน้า: [1] 2 3 4 ... 15
1
โค๊ด: [Select]
Private Sub TextBox1_AfterUpdate()
     Dim i As Integer
     Dim strText As String
     Dim strMessage As String
     strText = Me.TextBox1.Value
     For i = 1 To Len(strText)
           If Asc(Mid(strText, i, 1)) < 128 Then
                strMessage = "กรุณาพิมพ์เฉพาะภาษาไทยเท่านั้น"
                MsgBox strMessage, vbExclamation, "ข้อผิดพลาด"
                Me.TextBox1.SetFocus
                Exit Sub
           End If
     Next i
End Sub

ตัวอักษรที่ไม่ใช่ภาษาไทย (ที่มี ASCII code น้อยกว่า 128)
ลองอีกแบบนึงครับ

2
   
โค๊ด: [Select]
Dim RetValue As Variant
    DoCmd.SetWarnings False
    RetValue = MsgBox("ยืนยันลบข้อมูล", vbOKCancel)
       Select Case RetValue
          Case 1
                DoCmd.RunCommand acCmdSelectRecord
                DoCmd.RunCommand acCmdSaveRecord
                DoCmd.RunCommand acCmdDeleteRecord
                MsgBox "ลบเรียบร้อยแล้ว"
                Case Else
                '''
                End Select
    DoCmd.SetWarnings True

ลองไปปรับใช้ครับ

3
หมายถึง พิมพ์ออกมาซ้ำ 2 ใบ หรือ รายการซ้ำ 2 รายการ

4
ห้อง MS Access / : การหายอดคงเหลือ
« เมื่อ: 07 ส.ค. 67 , 08:23:30 »
กรณีบันทึกย้อนหลัง มีแนวทางแก้ปัญหาตรงนี้ยังไงครับ แล้วถ้าเรายึดวันที่เป็นหลักแล้วตามด้วย ID จะได้หรือเปล่าครับ เช่น ถ้าวันที่ซ้ำให้ดูที่ ID

แรกๆ ก็แก้ด้วยมือ คือเรียงลำดับเลขใน Excell แล้วนำมาวาง
แต่พอให้คนอื่นทำ เค้าทำไม่ได้เลย เขียนโค๊ตเรียงลำดับ
ก็อาจารย์ในเพจนี้สอนแหละครับ ค้นหาอ่านได้เลยครับ

5
ห้อง MS Access / : การหายอดคงเหลือ
« เมื่อ: 06 ส.ค. 67 , 18:23:54 »
ผมก็ใช้วิธีการลองผิดลองถูกแบบนี้
โดยใช้ตัวอย่างจาก อาจารย์หรือเพื่อนๆ ในนี้
ทำบ่อยๆ จะพบจุดผิด จุดที่เป็นเงื่อนไข
ดูคำสั่งแล้วทำความเข้าใจ มันจะเอาไปประยุกต์
ใช้ได้อีกเยอะเลยครับ

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

6
ห้อง MS Access / : การหายอดคงเหลือ
« เมื่อ: 05 ส.ค. 67 , 12:05:18 »
เข้าใจครับมือใหม่ คือจะให้ทำให้เลย คนที่เค้ามาดูเค้าไม่รู้ว่า ตารางไหนคืออะไร
แล้วเค้าจะทำให้ได้งัย ผมดูไปชั่วโมงนึง ยังไม่รู้เลยว่า ตารางไหนคือรับ ตารางไหนจ่าย
มันมั่วไปหมด เลยอยากให้ลองทำ ให้เหลือ 3-4 คิวรี่ เอาส่วนที่เกี่ยวข้องในตารางต่างๆ
มารวมใน คิวรี่เดียวจนเหลือคิวรี่สุดท้าย อันไหนไม่ใช้ไม่ต้องดึงลงมา

แล้วจากที่ดู ถ้าออกแบบ 2 ตาราง เป็นตาราง รับ ตารางจ่าย พอมารวมกัน
ไอดีมันจะไม่สามารถลำดับได้ เช่น
ตารางรับ
ID    วันที่       จำนวน
1  30/7/2567    20
2  2/8/2567    10
3  2/8/2567      5
4  2/8/2567    15
5  2/8/2567    25
ตารางจ่าย
ID    วันที่       จำนวน
1   31/7/2567     2
2    1/8/2567      4
3    1/8/2567      5
4    1/8/2567      6
5    2/8/2567      3
ตารางรับ-จ่าย
ID    วันที่       จำนวนรับ    จำนวนจ่าย   คงเหลือ
1  30/7/2567    20             0            20
1  31/7/2567      0             2            18
2    1/8/2567      0             4            14
2    2/8/2567    10             0            24
3    1/8/2567      0             5            19
3    2/8/2567      5             0            ....
4    1/8/2567      0             6            ...
จะเห็นว่าพอเรียงตาม ID วันที่จะเรียงผิด
วิธีแก้คือ ต้องใช้ตารางเดียว หรือต้องเขียนให้โปรแกรมนับไอดี ต่อกันใน 2 ตาราง
ลองทำดูครับ
.........

7
ห้อง MS Access / : การหายอดคงเหลือ
« เมื่อ: 05 ส.ค. 67 , 10:21:49 »
การออกแบบตารางดูสับสนมากเลยครับ
ถ้าเราออกแบบตารางดี มันจะเขียนโปรแกรมง่าย
ตอนนี้นั่งไล่ตาราง คิวรี ก็งงแล้ว ใช้เวลาสักพัก

ผมว่าคุณเริ่มใหม่ดีกว่า ดูจากตัวอย่างที่ผมส่งไป
มันใช้แค่หลักๆ 4 คิวรี่นี่แหละ ตารางก็ดึงไปใช้ในคิวรี่ได้เลย
ไม่ต้องเอามาเซฟเป็นชื่อใหม่ ถ้าเยอะแบบนี้ งง มาก

8
ห้อง MS Access / : การหายอดคงเหลือ
« เมื่อ: 02 ส.ค. 67 , 16:31:21 »
ถ้ากระทู้นี้ต่อยอดมาจาก กระทู้ที่แล้วนะครับ
ผมว่ามันทำไม่ได้ครับ เนื่องจากมันไม่มีอะไรอ้างอิงก่อนหลัง
จากตารางที่ออกแบบ มีวันที่เป็นตัวอ้างอิง ซึ่ง มันมีวันที่ซ้ำกันได้
ทำให้วันเดียวกันมันจะคำนวนผิด การคำนวนแบบนี้เรียก
Running sum ค้นหาจากกระทู้เก่าๆ ได้ครับ

การคำนวนแบบนี้ ส่วนใหญ่ จะใช้อยู่ในตารางเดียวกัน
และใช้ไอดี เป็นตัวบอกก่อนหลัง

ผมส่งตัวอย่างให้ดู ว่ามันจะไม่ได้ยังงัย

9


รับจ่าย เปลี่ยนเป็น  รับ:0  ก็ได้

10
ใช้ Union Query ได้
นำตารางแรกมาทำ Query โดยช่องจำนวนแบ่งเป็นรับจ่าย
ช่องรับก็นำช่องจำนวนของ Table Receive มาใส่
ช่องจ่ายเว้นว่างไว้แบบนี้ จ่าย:""
ทำ Query ตารางที่ 2 โดยสลับกัน
ช่องรับว่างไว้แบบนี้ รับ:"" ช่องจ่ายก็นำจำนวนของ Table Derivery มาใส่
1.เปลี่ยนมุมมอง Query เป็น SQL ทั้ง 2
2.Copy Query อันใดอันหนึ่งมาไว้อีกอัน โดยเชื่อระหว่างกันด้วยคำว่า UNION
ไม่รู้อธิบายเข้าใจป่าว ลองทำดู

12
ห้อง MS Access / : โค๊ตสร้างตารางวันลา
« เมื่อ: 03 ก.ค. 67 , 13:04:35 »
โอเค ได้แล้ว
เราก็หาว่าการลาครั้งไหนคาบเกี่ยววันเสาอาทิตย์
แล้วเราก็บวกไปอีก 2 วัน แล้วมาสร้างคิวรี ลบวันที่ตรงกับเสาอาทิตย์ออกอีกที

สุดท้ายละ
วันหยุดที่คาบเกี่ยววันหยุดนขัตฤกษ์ ??

13
ห้อง MS Access / : โค๊ตสร้างตารางวันลา
« เมื่อ: 03 ก.ค. 67 , 11:13:58 »


พยายามแยกเหตุการเป็นช่วงๆ จะได้ทำง่ายขึ้น
โดยเริ่มจากคิดเป็นภาษาคน
โดยเริ่มจาก Unit ที่มากกว่า 1 ให้บวกวันที่ไป 1 วัน
หายไปหายวันก็ทำจนได้

ตอนนี้เริ่มมาถึงขั้นตอนที่วันลาติดต่อมันมาต่อเนื่องวันหยุด (ตามรูป)
วันที่ 5-6 เดือน 11 เป็นวันเสาร์อาทิตย์

14
ห้อง MS Access / โค๊ตสร้างตารางวันลา
« เมื่อ: 29 มิ.ย. 67 , 15:14:02 »


เรื่องโค๊ตอีกแล้วครับ
จากตารางการลา(LeaveDayBF) DateStart=วันที่ลา WD=เลขบอกวัน(1อาทิตย์ 2จันทร์ 3อังคาร...)
U=ชื่อคนลา Unit=จำนวนวันที่ลา ผมอยากได้โค๊ตไปอีกตารางหนึ่ง (LeaveDay) ตามรูปครับ

จากรูปจะเห็นว่านายดำ ลา 5 วัน ตั้งแต่วันอังคารที่ 9 ลา 5 วันทำให้วันสุดท้ายลาวันจันทร์ ข้ามวันเสาอาทิตย์
ส่วนวันอื่นๆ ที่ไม่ได้ติดวันเสาอาทิตย์ ก็เป็นไปตามรูปเลยครับ

อาจารย์ช่วยหน่อยครับ โค๊ตลักษณะแบบนี้ ผมยังไม่เคยมีเลย ลองผิดลองถูกไม่ได้ครับ

15
ได้แล้วครับอาจารย์ มั่วไปมาได้เฉย 555

16


เปลี่ยนวิธีใหม่ น่าจะง่ายกว่าเดิม แต่ก็ไม่เข้าใจวิธีเขียน คือ
คอลัมน์ Class ให้ดูจากวันที่ ถ้าเป็นวันที่เดียว Class = 1
ถ้าถ้าวันไหนมีวันซ้ำ ให้เพิ่มเป็น 2 ถ้าซ้ำ 3 ให้ Class = 3 ตามรูปเลยครับ
แบบนี้ตัวแปร จะเหลือ 2 ตัว แล้วค่อยไปทำ Crosstab Query อีกที่หนึ่งครับ
ฝาก อาจารย์ช่วยเขียนโคตให้ด้วยครับ

17
นำ qPoint_Dlookup มาสร้างเป็น Crosstab Query กำหนด Header เป็นรายวัน
แล้วสร้าง Append Query จาก Crosstab Query ไปใส่ตาราง Appoint_Month_Temp ครับ
จริงๆ ตราราง Appoint_Month_Temp ก็มาจาก Crosstab Query ครับ
มันติดตรงชั้นที่ 2 มันจะดูจากไหนมาสร้าง Append Query
แต่เดี๋ยวจะลองกลับมาใช่ Query อีกทีครับอาจารย์

18
ผมคิดว่า ใช้วิธีนี้ อาจจะเหนื่อยหน่อย นะครับ น่าจะมีวิธีอื่นง่ายกว่านี้
ขอดู design ของหน้าจอ ที่อยากจะแสดงข้อมูล พร้อมตัวอย่างข้อมูล ต้นทาง (ก่อนเป็น qAppoint_Lookup) หน่อยครับ
ผมคิดออกวิธีเดียวครับตอนนี้ ถ้าเอาสายอัขระมาต่อกัน มันจะไม่สวย และอาจจะอ่านไม่รู้เรื่องครับ
ผมใช้คอลัมน์ Class มาเป็นตัวอ้างอิงใส่ตามช่อง ซึ่งผมเตรียมไว้ 4 ช่อง (ดูจากข้อมูลเก่า ไม่เกิน 4 ช่อง)
มันคงเหนื่อยจริงครับ ต้องเขียน D1-D31 แต่เผื่อมีคนเขียนได้สั้นกว่านี้ครับ

หน้า: [1] 2 3 4 ... 15