แสดงกระทู้

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 6 ... 26
33
เพิ่มเติมโค้ดอีกหน่อยก็ได้เลยครับ
โดยที่ฟอร์ม Fsale ที่เป็น ซัฟฟอร์ม ให้มี textboxที่เป็นฟิลล์ Cust_id และชื่อ Cust_id ด้วยนะครับ

Private Sub good_id_AfterUpdate()
Call CheckS_Price
End Sub
Sub CheckS_Price()
Dim LastDate As String
Dim strPurchase_history As String
If Not IsNull(Me.date_sale) And Not IsNull(Me.good_id) And Not IsNull(Forms!ACC_บันทึกขายสินค้า!Txtcust_id) Then
strPurchase_history = Nz(DLookup("[cust_id]", "[tblF_sale]", "[goods_id] = '" & good_id & "' And [cust_id] =" & Forms!ACC_บันทึกขายสินค้า!Txtcust_id & ""), 0)

LastDate = Nz(DLast("date_sale", "[tblF_sale]", "[goods_id] = '" & good_id & "' And [cust_id] =" & Forms!ACC_บันทึกขายสินค้า!Txtcust_id & ""), 0)
Me.s_price = Nz(DLookup("[s_price]", "[tblF_sale]", "cstr([date_sale]) ='" & LastDate & "' And [goods_id] ='" & good_id & "' And [cust_id] =" & Forms!ACC_บันทึกขายสินค้า!Txtcust_id & ""), 0)
End If
If Not IsNull(Forms!ACC_บันทึกขายสินค้า!Txtcust_id) Then
Me.cust_id = Forms!ACC_บันทึกขายสินค้า!Txtcust_id
End If

End Sub

34
ตัวอย่างลองเทสดูครับ
มีฟอร์ม 2 ฟอร์ม
โค้ดอยู่ใน Module นะครับ

35
ลองศึกษาโค้ดนี้เพิ่มเติมจาก อาจารย์นะครับ

https://www.thai-access.com/index.php?topic=590.0

36
ไม่แน่ใจแบบนี้ไหมนะครับ
เวลาจะดูข้อมูล จะกำหนดวันที่มาทำงานก่อน

ปล.จากฐานข้อมูลแนะนำให้ทำ ข้อมูลทั้ง In และ Out ให้อยู่แถวเดียวกันเพื่อไม่ให้เกิดปัญหาครับลองดูตัวอย่างการสร้างจาก
https://www.youtube.com/watch?v=aLpeCWOYmDU link  ระบบบันทึกเวลาเข้าออก ของอาจารย์ TTT


หรือถ้าสร้าง ตารางแยกจากกันแบบในตัวอย่างของผม(ลองเลียนแบบจากชุดข้อมูลของคุณ Maki

ควรสร้าง ID หลักไว้ 1 อันไว้เพื่อใช้ในการ อ้างอิงความสัมพันธ์ของข้อมูล In กับ Out อันนี้ลองไปคิดดูว่าสร้างจากส่วนไหนได้บ้าง
เช่น เมื่อแสกนเข้าให้เก็บ ช่วงเวร และ ID อาจจะใช้ จากวันที่เริ่มทำงาน + กับ รหัสพนักงาน เช่น วันเดือนปี-รหัสพนักงาน ตัวอย่าง 01012563-001 เป็นต้น
มาทำ ID เพื่อต้องการให้ ID ทั้ง In และ Out คืออันเดียวกัน

ถ้ากรณีที่มี 2 ตาราง คือตารางIN และ ตาราง Out

ในตาราง In
           ID            ชื่อ              วันที่มา       เวลามา   ช่วงกะ
เช่น 01012020-001  /   นายก   / 01/01/2563 /  16.30 / บ่าย
ในตาราง Out
             ID            ชื่อ              วันที่ออก       เวลาออก   ช่วงกะ
เช่น 01012020-001  /   นายก   / 02/02/2563 /  08.30 / บ่าย

โดยกำหนดให้เมื่อถึงเวลาออกจากการทำงานที่เป็นเวรบ่ายคือ 08.30
เรากำหนดให้ ID = Right("00" & Trim(Str(Day(Date()))-1),2)+Right("00" & Trim(Str(Month(Date()))),2) & Trim(Str(Year(Date()))) & "-" & EmpID จะได้วันที่เดียวกับ วันที่มา ก็จะได้ ID เดียวกันนั้นเอง

แต่ถ้าเป็นเวรเช้า 
เรากำหนดให้ ID = Right("00" & Trim(Str(Day(Date()))),2)+Right("00" & Trim(Str(Month(Date()))),2) & Trim(Str(Year(Date()))) & "-" & EmpID  ได้เลยเพราะอยู่ในวันเดียวกัน


ข้อมูลทั้ง 2 ส่วนนี้ก็จะเชื่อมกันได้จาก ตารางOut.ID   Join กับ  ตารางIn.ID ได้เลย

37
อ้างถึง
ตอนนี้ก็ยังไม่เข้าใจ textbox กับ label ต่างกัน?


Label ก็คือ ป้าย,ชื่อ หรือข้อความ  ไว้แสดงบนฟอร์มครับ หรือรายงาน
เวลาเราสร้าง Control ก็จะได้ตัวนี้มาด้วยไว้ตั้งชื่่อ มันสามารถตั้งชื่อได้เหมือนกับ textbox หรือ อื่นๆ (ลองกดที่ Label แล้วไปที่ตั้งค่า)

จากโค้ด เราต้องกำหนดชื่อ txtcust_id ให้ combobox แต่เมื่อไปเช็คดู Label กลับชื่อtxtcust_id และ combobox ชื่อ combo18 มันเลยดึงข้อมูลเงื่อนไขผิดที่นั้นเอง


38
จบเคสครับ โค้ดปกติดี
ผิดตรงกำหนดชื่อให้กับ textbox ผิด ดันไปตั้งชื่อให้ Label แทน :cool: :cool:

39
ผมไม่แน่ใจเรื่อง datatype ของฐานข้อมูลของคุณว่าเหมือนกันหรือไม่
ลองดูตัวอยางที่ผมทำคร่าวๆ นะครับ

ถ้าสะดวก Anydesk ไปเช็คน่าจะชัวสุด

41
ส่งตัวอย่างฟอร์มที่สร้างอยู่ มาให้ผมแก้ไขดูได้ไหมครับ ถ้าไม่เห็นการออกแบบครับ และโครงสร้างคิดไม่ออกครับ

42
อาจารย์คะ หนูบอกความต้องการผิดค่ะ  :ouch: :ouch:

ที่ต้องการคือ ถ้า txttime มากกว่า 9.00 Am แต่ไม่เกิน 1.00 Pm then
รบกวนอาจารย์อีกครั้งนะคะ  :cry: :cry:

If  TimeValue(Me.txttime) > #9:00 AM#  and TimeValue(Me.txttime) < #1:00 PM# then

หรือ If  TimeValue(Me.txttime) >= #9:00 AM#  and TimeValue(Me.txttime) <= #1:00 PM# then
กรณีที่นับรวม 9 โมงเช้า กับ บ่ายโมงด้วย

43
ถ้าไม่ได้ ก็ anydest รีโมทไปเช็คให้ได้ครับ

ปกติการทำงานในซัพฟอร์มนั้น จะอ้างโค้ดแบบนี้ครับ คืออ้างจาก ฟอร์มหลักไปหาฟอร์มย่อยเช่น
สมมุติ ฟอร์มหลักชื่อ min ซัพฟอร์มชื่อ MinDetail และ Combobox Unbound ชื่อ TypeID
Private Sub btn_ClearCombobox_Click()
Forms!min!MInDetail.Form!TypeID = Null
End Sub

44
ขออภัยครับ อจ. อีกนิดครับ ถ้าจะเจาะจงถึงลูกค้าคนนั้น เคยซื้อสินค้านี้ ให้ s_price ดึงราคาครั้งล่าสุด   ลักษณะฟอร์มจะมี Mainform(ชื่่อฟอร์ม voucher_s )+SubForm(ชื่อฟอร์ม fsale)  ที่ MainForm จะมีฟิลด์ cust_id

น่าจะแบบนี้นะครับ
โค้ดยังไม่ได้ทดสอบ ลองดูนะครับ
MainForm จะมีฟิลด์ cust_id มี textbox หรือ combobox txtcust_id ครับ
การตรวจสอบคือเมื่อระบุ good_id ในซัฟฟอร์ม โปรแกรมจะเช็คให้ว่า มีรหัสลูกค้า txtcust_id ที่ซื้อสินค้ารหัส good_idหรือเปล่าถ้ามี ให้ดึงรหัส cust_id ที่ทำการซื้อล่าสุด (ใช้ Dlast ครับ)

โค๊ด: [Select]
Private Sub good_id_AfterUpdate()
Call CheckS_Price
End Sub
Sub CheckS_Price()
Dim LastDate As String
Dim strPurchase_history As String
If Not IsNull(Me.date_sale) And Not IsNull(Me.good_id) And Not IsNull(Forms!voucher_s!Txtcust_id) Then
strPurchase_history = Nz(DLookup("[cust_id]", "[tblF_sale]", "[goods_id] = '" & good_id & "' And [cust_id] =" & Forms!voucher_s!Txtcust_id & ""), 0)

LastDate = Nz(DLast("date_sale", "[tblF_sale]", "[goods_id] = '" & good_id & "' And [cust_id] =" & Forms!voucher_s!Txtcust_id & ""), 0)
Me.s_price = Nz(DLookup("[s_price]", "[tblF_sale]", "cstr([date_sale]) ='" & LastDate & "' And [goods_id] ='" & good_id & "' And [cust_id] =" & Forms!voucher_s!Txtcust_id & ""), 0)
End If
End Sub

45
ลอง = Null ดูครับ

46
เปลี่ยนจาก Dmax เป็น Dlast ครับ
MaxDate = Nz(DLast("date_sale", "t_sale", "goods_id = '" & good_id & "'"), 0)

47
เปิดโปรแกรมที่เขียนจาก Access แล้ว error แบบนี้ แก้ยังไงคะ เครื่องอื่นสามารถใช้งานได้ แต่เครื่องนี้ติดปัญหาตามรูปต่อไปนี้


OFFICE ที่ใช้ Version เดียวกับตัวอื่นๆ ไหมครับ ถ้าไม่ใช่ใช้ Version อะไรอยู่ SP ?
ใช่ตัว Microsoft Office 2010 Service Pack 1 (SP1) หรือเปล่าเพราะถ้าเวอร์ชั่นนี้จะเกิดปัญหา

ลองแจ้ง Windows OS ว่ากี่บิท
ใช้ Microsoft Office Version ไหน
และ Service Pack อะไรนะครับ จะได้แนะนำต่อได้

48
ถ้าจะเพิ่มรายการขายสินค้าใหม่ โดยดึงราคาล่าสุดที่เคยขายสินค้านี้ แต่ให้แก้ไขได้ ถ้าจะเปลี่ยน มีวิธีอย่างไรครับ อจ.

ดึงราคาล่าสุดมาแสดงบน textbox ลองดูโค้ดนี้ครับ

Private Sub good_id_AfterUpdate()
Dim MaxDate As String 'กำหนดตัวแปรไว้เก็บวันที่มากที่สุดของแต่ละ good_id ก่อนใช้ Dlookup ดึงข้อมูลมาแสดงบน textbox S_Price
If Not IsNull(Me.date_sale) And Not IsNull(Me.good_id) Then
MaxDate = Nz(DMax("date_sale", "t_sale", "goods_id = '" & good_id & "'"), 0)
Me.s_price = Nz(DLookup("[s_price]", "[t_sale]", "cstr([date_sale]) ='" & MaxDate & "' And [goods_id] ='" & good_id & "'"), 0)
End if
End Sub

วิธีนี้จะได้ราคาล่าสุดมาแสดงที่ textbox S_Price แต่ก็สามารถลบออกเพื่อแก้ไขราคาได้เองครับ

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