แสดงกระทู้

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 ... 23 24 25 [26] 27 28 29 ... 46
451
UNION QUERY เพื่อจับกลุ่ม Truck 1 ถึง 10 ครับ และ JopNo
ตัวอย่างเดี่ยวทำให้ดูเน้อ

452
ขอคำแนะนำวิธีป้องกัน ฟิวด์ ที่เป็นเลขที่ซ้ำกัน
อธิบายเพิ่มหน่อยครับ ป้องกันการซ้ำกันของตัวเลขในฟิลล์ หรือ ป้องกันไม่ให้แก้ไขข้อมูล หรืออะไร ?

453
ใช้การกำหนด  SourceObject เช่น
crosstabquery คือชื่อคิวรี่ที่เป็น crosstabquery
ชื่อฟอร์มหลักชื่อ Main
ชื่อฟอร์มย่อย Subform

Dim QueryName As String
QueryName = "Query." & "crosstabquery"
Forms("Main").Form.Subform.SourceObject = QueryName

ข้อดีวิธีนี้คือ ฟอร์มจะไม่ได้เจาะจงกับคิวรี่ใดๆ เมื่อคิวรี่มีการเปลี่ยนแปลงใดๆ ก็สามารถใช้การเรียกคิวรี่ที่ต้องการมาแสดงใหม่ในซัพฟอร์มได้ตลอด



454
 DoCmd.MoveSize 20000, 0, 0, 0

ลองปรับขนาดของตัวเลขดูครับอาจจะแก้เป็น 30,000 แบบนี้
 DoCmd.MoveSize 30000, 0, 0, 0
อีกอย่างที่คอมพิวเตอร์เครื่องหลักจอได้เช็ตได้แสดง 2 หน้าจอหรือยังครับ

455
เพิ่มเติมโค้ดอีกหน่อยก็ได้เลยครับ
โดยที่ฟอร์ม 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

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

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

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

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

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

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


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

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


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

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

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

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

464
อาจารย์คะ หนูบอกความต้องการผิดค่ะ  :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 โมงเช้า กับ บ่ายโมงด้วย

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

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

466
ขออภัยครับ อจ. อีกนิดครับ ถ้าจะเจาะจงถึงลูกค้าคนนั้น เคยซื้อสินค้านี้ ให้ 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

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

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

หน้า: 1 ... 23 24 25 [26] 27 28 29 ... 46