แสดงกระทู้

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
1
ทำตามคำแนะนำของอาจารย์แล้วได้ตามใจต้องการแล้วครับ แล้วค่อยไปจัดการด้วยวิธีอื่นๆ ต่อ สามารถปรับลด เพิ่มหรือเปลี่ยนจำนวนดวง ขนาดสติกเกอร์สำเร็จรูปได้หลายๆแบบสบายเลย แปะขวดเครื่องปรุง อุปกรณ์ในบ้านก็ได้
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

2
-> กรองชื่อลูกค้าโดยวิธีลิ้งฟอร์มหลัก-ฟอร์มย่อย
-> กรองวันที่ออกบิลโดยใช้คำสั่ง Filter
โค๊ด: [Select]
Private Sub cmdDate_Click()
Me.fm_Invoice_sub2.Form.Filter = "[Saledate] BETWEEN #" & Format(Me.BeginDate, "dd mmm yyyy") & "# AND #" & Format(Me.EndDate, "dd mmm yyyy") & "#"
Me.fm_Invoice_sub2.Form.FilterOn = True
Me.fm_Invoice_sub2.Form.Refresh
Call Form_Current
End Sub

ไฟล์ตัวอย่างผมสร้างตาราง,ฟอร์มหลัก,รีพอร์ทชื่อ Invoice มาให้ใหม่ ส่วนฟอร์มย่อย Invoice_sub จะดึงข้อมูลบิลที่เคยออกไปจากตาราง Sale_H
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

3
เผื่อไม่เข้าใจที่ อ.PNR บอกนะครับ
ทำ Query ให้ใหม่ ชื่อ Query1
ทำ Report ให้ใหม่ ชื่อ Report
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

4
วิธีที่1.ทำให้ทุนรวมเก็บค่าอยู่ในตารางถึงจะ Sum ได้(ผมใช้วิธีีนี้อยู่แต่มันยุ้งยากไปพึ่งจะเจอวิธีที่2นี่ล่ะ)

วิธีที่2.นำตารางที่ใช้ไปทำคิวรี่แล้วเพิ่มฟิวล์ ทุนรวม: [จำนวน]*[ทุน] ที่ฟอร์มก็เปลี่ยนจากที่ดึงข้อมูลจากตารางมาเป็นคิวรี่,กล่องทุนรวม([text34])ก็ดึงผลมาจากคิวรี่ได้เลย,=SUM([ทุนรวม])

ตย.คิวรี่
  จำนวน    ทุน   ทุนรวม: [จำนวน]*[ทุน]

ตย.ฟอร์ม
          =SUM([ทุนรวม]) 1000
  จำนวน    ทุน   ทุนรวม
  10  100   1000
  0  200   0
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

5
ขอบคุณมากครับ กรรมจริงๆผมไม่รู้เลย ไปหาตรง Property อย่างเดียว
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

6
ไม่รู้ว่าใช่ Version ที่ต้องการหรือเปล่า
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

7
เจอไฟล์ Excel คำนวนดอกเบี้ยเอามาฝากครับโดยแนวทางการคำนวนเขาคือ ใส่เงินต้น,ดอกเบี้ย/ปี,จำนวนงวด โปรแกรมก็จะคำนวนมาให้ว่าจ่ายงวดล่ะเท่าไหร่โดยเท่ากันทุกงวด(ทศนิยมสองตำแหน่ง) เพื่อเป็นแนวทางครับ

ปล.ไฟล์ Excel เขาทำตารางคำนวนเผื่อไว้เฉยๆนะ
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

8
ใช้​ BeforeUpdate event หลัง​ texbox อันที่2 ดีกว่าครับ

 If (not isnull(me. textbox_id) or me.textbox_id<>""​)​ and (not isnull(textbox_disease) or me. textbox_disease<>""​) then
        If dcount("*", "table_name", "id=forms! Formname!textbox_id and   disease =forms! Formname!textbox_disease" ) >0
       then
       Msgbox "ข้อมูลซ้ำ"
       Cancel=true
       End if
Else
Msgbox "ใส่ข้อมูลไม่ครบ"
End if
ลองประยุกต์ดูครับ
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

9
ถ้าหากจะใช้การตัดวันที่ ที่ผ่านมาออกไปแสดงเฉพาะวันที่ปัจจุบันเป็นต้นไปยังไม่เคยทำครับ

แต่ถ้าจะใช้การกำหนดเงื่อนไขว่าถ้าเลือกวันที่ๆผ่านมาแล้วให้แจ้งเตือนและให้ระบุใหม่ก็ลองแบบนี้
สมมุติ textbox เลือกวันที่ ชื่อ txtDatePick

Private Sub txtDatePick_AfterUpdate()
If Me.txtDatePick < Date() Then
MsgBox "ไม่สามารถเลือกวันที่ย้อนหลังได้", vbCritical, "แจ้งเตือน"
Me.Text0 = Null
End If
End Sub

ถ้าผมตอบก่อนจะบอกว่า"กรุณาเลือกวันที่ปัจจุบันหรืออนาคต"นะนี่ :shout:
โค๊ด: [Select]
Private Sub Text20_AfterUpdate()
    If Me.Text20 < Date Then
         MsgBox "กรุณาเลือกวันที่ปัจจุบันหรืออนาคต"
    End If
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

10
ถามผิดแนบไฟล์ผิดก็แก้คำถามแก้ไฟล์แนบหรือโพสตอบที่กระทู้เดิมได้นะครับ :sweat:
เพิ่มเติมคือซ้ำเหมือนเดิมกับ https://www.thai-access.com/index.php?topic=1079.msg4818#msg4818 เลยนะนี่  :dizzy:
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

11
DAO  ผมชอบใช้เพราะมี Index and seek ให้ใช้ ลองดู index , seek เพิ่มเติมด้วยครับ
ในเว็บมีหลายกระทู้ที่พูดถึง
ตัวอย่าง
https://www.thai-access.com/index.php?topic=629.0
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

12
วิธีการใช้ Left,Mid,Right เพื่อดึงค่าออกมาโดย Left ดึงจากทางซ้าย > ,Mid ก็ดึงจากทางซ้ายแต่มีการเว้นระยะก่อนดึง -- > ,Right ดึงจากทางขวา <

ตัวอย่าง ตัวแปล ABC มีค่า 123456789
Left([ABC ],2)     = 12     / ดึงค่าจากซ้ายสุดมา 2ตัว
Mid([ABC ],3,2)   = 34     / ดึงค่ามาโดยตัวแรกคือตัวที่ 3นับจากซ้ายแล้วนับไปต่ออีก 2ตัว
Mid([ABC ],5,3)   = 567   / ดึงค่ามาโดยตัวแรกคือตัวที่ 5นับจากซ้ายแล้วนับไปต่ออีก 3ตัว
Right([ABC ],2)   = 89     / ดึงค่าจากขวาสุดมา 2ตัว

ตัวอย่าง ท่าน PNR จะใช้ Cdate() เพื่อแปลงตัวเลขให้เป็นวันที่ แต่โดยปรกติตัวแปลวันที่จะมี / คั่นอยู่ท่านจึงใช้ Left,Mid,Right เพื่อแยกตัวแปลแล้วใส่ & "/" & เข้าไปคั่นใว้ดังนี้
ตัวแปล [วันที่ วว/ดด/ปป] เก็บค่า 010164 เมื่อใช้ Left([วันที่ วว/ดด/ปป],2) & "/" & Mid([วันที่ วว/ดด/ปป],3,2) & "/" & Right([วันที่ วว/ดด/ปป],2) = 01/01/64 แปลงเสร็จระบบก็ยังคือเป็นข้อความธรรมดาแค่มี / คั่นอยู่แต่สามารถเอาไปให้ Cdate() บอกว่ามันคือวันที่โดย Cdate(ค่อม...ใว้) (จาก 010164 ตอนนี้ระบบมองออกแล้วว่าเป็นวันที่1 เดือน1 ปี64)

ที่นี้มีต่ออีกว่าถ้าอยากให้มันแสดงผลออกมาเป็นอย่างอื่นเช่น 1 มกราคม 64 , มกราคม 2564 , 01/01/64 อีกที่ล่ะได้ใหม?
คำตอบคือได้โดยใช้ Format() เพื่อนำค่าออกมาแสดงผลในรูปแบบที่เราต้องการเพราะจากที่เราใช้ Cdate() ไปนั้นระบบรู้แล้วว่าตัวไหนคือวันเดือนปีเช่น
Format(CDate(.....),"mmm yy")   = ม.ค. 64
Format(CDate(.....),"mmmm yyyy")   = มกราคม 2564
Format(CDate(.....),"dd/mm/yy")      = 01/01/64

แบบงวดภาษี มกราคม 64
= "งวดภาษีเดือน" & " " & Format(CDate(Left([วันที่ วว/ดด/ปป],2) & "/" & Mid([วันที่ วว/ดด/ปป],3,2) & "/" & Right([วันที่ วว/ดด/ปป],2)),"mmmm yy")

แบบงวดภาษี มกราคม 2564
="งวดภาษีเดือน" & " " & Format(CDate(Left([วันที่ วว/ดด/ปป],2) & "/" & Mid([วันที่ วว/ดด/ปป],3,2) & "/" & Right([วันที่ วว/ดด/ปป],2)),"mmmm yyyy")

สรุปขั้นตอน*โดยต้องใช้ให้ครบ
1.ใช้ Left,Mid,Right หั่นตัวเลขออกมาเป็นส่วนๆแล้วใส่ / เข้าไปคั่นใว้
2.ใช้ Cdate() แปลงค่าจากข้อความ,ตัวเลขธรรมดาให้ระบบคิดว่าเป็นวันที่(โดยข้อความต้องมี / คั่นอยู่ก่อนแปลง)
3.ใช้ Format() นำค่าออกมาแสดงผลในรูปแบบที่เราต้องการเช่น d m yy , dd/mm/yy , mmmm yyyy , mmm d yyyy เป็นต้น

*หมายเหตุ สิ่งที่จะเอาไปให้ Cdate() แปลงเป็นระบบวันที่ได้ดีควรจะต้องมี3ส่วนดังนั้นจากที่
ดด/ปป ใน criteria เป็น 0164 ผลลัพธ์ ได้ มิถุนายน 2443
ผมจึงใส่วันที่ 01 เพิ่มเข้าไปให้ Cdate() ทำงานได้อย่างเต็มรูปแบบ
="งวดภาษีเดือน " & Format(CDate("01/" & Left([งวดภาษี ดด/ปป],2) & "/" & Right([งวดภาษี ดด/ปป],2)),"mmmm yyyy")
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

13
update นะคะ

ตอนนี้แก้ได้แล้วค่ะ เรื่องของเรื่องเนี่ย เหมือนว่าเวลาคำนวณมันจะมีช่องที่เป็น 0 อยู่ เพราะคำนวณพร้อมกัน แล้วก่อนหน้านี้มีโค้ดให้ save record ก่อนค่ะ ทำให้เวลาsave ไปแล้วค่าตัวอื่นมันรีเซ็ทใหม่มันเลยกลายเป็น 0 แล้ว 0 เนี่ยมันก็เอามาหารไม่ได้มันเลยขึ้น error ค่ะ ซึ่งวิธีแก้นะคะ ก็คือต้องลำดับcode ใหม่ ให้โปรแกรมมันคำนวณให้เสร็จก่อนแล้วค่อยsave ค่ะ เพราะที่มันจะได้ไม่เอา 0 มาหาร  :zzz:

ยังไงก็ขอบคุณ คุณ PNR มากนะคะที่มาตอบ ได้คิดอะไรหลายอย่างเลยค่ะ  :fake smile:
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

14
ขอรบกวนอีกครั้งครับท่านอาจารย์
ผมอยากให้เลขทีใบบินขิ้นปีบวกเดือนและเลขที เวลาเรากดปุ่มเพี่มใหม่ครับ พอถืงปีใหม่ให้เลี่มเลขทีใหม่ครับ
กระทู้และไฟล์ตัวอย่างครับ > อยากได้ตัวอย่าง access การทำ running number แบบ ปี เดือน รันเลข 3 ตำแหน่ง มือใหม
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

15
อุ๊ย! อุตส่าห์แอบดูเงียบๆ อยู่มุมห้อง :smile:
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

16
ขอบคุณครับ ที่ data type ทีแรกของผมเป็น Currency ครับ แต่พอเปลี่ยนเป็น Text แล้วก็ตรงกันครับขอบคุณนะครับ
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

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