สมัครสมาชิก

แสดงกระทู้

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]
1
โดยปกตินั้นเราจะใช้ Query ในการเชื่อมหรือผูกชุดข้อมูลถึงกันเช่น เราเชื่อมรหัสลูกค้าจากใบสั่งซื้อ --> รหัสลูกค้าจากบัญชีรายชื่อ ก็จะได้ข้อมูลเป็นเลขที่ใบสั่งซื้อ,ชื่อ-ที่อยู่ผู้ซื้อ,ราคา,ฯลฯ เป็นต้น(ข้อมูลต่อกันในแนวนอน)

กลับไปที่หัวข้อการใช้ UNION Query นั้นจะเป็นการนำข้อมูลมารวมต่อกันในแนวตั้งลงมาตัวอย่างเช่น เราอยากรู้ว่าทัั้งรายชื่อผู้ขาย(เซล),รายชื่อผู้ซื้อ(ลูกค้า),รายชื่อติดต่ออื่นๆนั้นมีใครบ้างนั้นเราก็ใช้ UNION Query จับมารวมกัน หรือถ้าอย่างผมมีตารางเก็บใบสั่งซื้อแยกปีแต่อยากรู้ว่าตั้งแต่ปี 59,60,61,62 ถ้ารวมกันแล้วมีค่าเท่าไหร่ หรือมากรองว่าลูกค้าคนนี้ทั้งหมดแล้วซื้ออะไรไปบ้างทั้งที่ข้อมูลอยู่คนล่ะตารางกันเป็นต้นครับ

อธิบายมาซะยาวมาถึงวิธีการนำไปใช้งานนั้นสามารถชมคลิปตัวอย่างจากทาง microsoft ได้เลยครับผม -->Watch an example of building a union query link


ที่มา Use a union query to combine multiple queries into a single result link
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

2
ใครเคยใช้ไหม เป็นยังไงบ้าง https://ultraviewer.net/en/ link
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

3
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

4
เว็บบอร์ดวันนี้มีการเพิ่มปุ่ม ตอบกระทู้ ให้กดกันง่ายขึ้นครับ(ข้างๆปุ่ม"อ้างถึง" :sweat:)
ปล.แผ่นป้ายช่วยลงไปกดกันสักหนึ่งทีพอครับ :love:
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

5
คือเป็นการคำนวณ Stock ที่มีหน่วยของสินค้าที่ต่างกันค่ะ มีการรับเข้าเป็นลัง,ชิ้น,ห่อ ซึ่งต้องการให้ในหน้า Balance ที่คำนวณออกมานั้นคำนวณข้อมูลทั้งสามอย่างพร้อมกัน
คือสามารถดูในตารางเดียวกัน เพราะปกติแยกคิวรี่แล้วสามารถคำนวณได้ปกติ แต่พอนำมารวมกันเพื่อแสดงผล 3 หน่วยในตารางเดียวกันเกิดปัญหาดังภาพที่ใส่ไว้ที่กระทู้ค่ะ

ดูจากภาพแล้วไม่เห็นปัญหาครับ ปัญหาอยู่ตรงไหน ชี้กันชัดๆ หน่อย
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

6
ผมขอเสนอวิธีเขียนโค้ดที่รวม 2 เงื่อนไขด้วย AND แบบสั้นๆ

Dim Cond1 As String, Cond2 As String

If Nz(Me.combonamesearch,"") = "" Then Cond1 = " TRUE " Else Cond1 = " ([cus_name] = '" & Me.combonamesearch & "') "

If Nz([acculate],"") = "" Then Cond2 = " TRUE " Else Cond2 = " ([acculate] = " & Me.acculatesearch & ") "

Forms!frmhistoryh!frmhistorylist.Form.RecordSource = "select * from Qsaleh_cusprof where " & Cond1 & " AND " & Cond2
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

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

ระบบมี 2 เทเบิลคือ tbUser ไว้เก็บ ID,รหัสผ่าน,และเมนูที่จะใช้ ในขณะที่อีกเทเบิล tbMenu จะเก็บว่าแต่ละเมนูมีโครงสร้างอย่างไร

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

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

ปล. อย่าถามนะว่า login ID และรหัสผ่านมีอะไรบ้าง  :sweat:
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

8

Public Function RowNum(frm As Form) As Variant
        ...
        ...
        ...

เพิ่งรู้ว่าการอ้าง Form property ผ่านฟังก์ชั่นบน Continuous Form จะทำให้อ้างถึงเรคอร์ดเฉพาะของบรรทัดนั้นๆบนฟอร์ม แทนที่จะเป็นเรคอร์ดปัจจุบันบนฟอร์มเพียงเรคอร์ดเดียว
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

9
ถ้าเป็นในรายงานเราสามารถทำ Running Sum ได้เลย โดยการสร้าง Text Box เปล่าๆ ขึ้นมาใหม่ สมมุติชื่อ txtrun แล้วกำหนด Control Source: =1 กำหนดตรง Running Sum: Over All (หรือ Over Group หากสร้าง Group)
เราจะได้เลยที่เรียงลำดับขึ้นมา จากนั้นก็เปลี่ยนเงื่อนไขใน Text Box ที่เรานับเลข 1-40 ใหม่เป็น
=IIf([txtrun] Mod 40=0,40,[txtRun] Mod 40)
อ้างที่ [txtrun] แทนการอ้างที่ [ID] ส่วนจะให้แสดงหรือไม่ก็กำหนดในส่วน Visible เอาว่าจะเป็น Yes หรือ No
ส่วนเรื่องอยากให้หน้าละ 20 เรคคอร์ดก็ปรับส่วนพื้นที่ Detail ของรายงานให้ความสูงได้ 20 เรคคอร์ดกับหน้ากระดาษที่กำหนดไว้ แล้วแก้โค้ดที่ Detail > Event > On Print:
Const Blank_Line = 20 'จากเดิม 40 เป็น 20 แทน ก็น่าจะใช้ได้แล้วครับ
ไฟล์ตัวอย่างแก้ไข link
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

10
สนับสนุนการบ่นอีกเสียงครับ

บางคำถามอ่านแล้วได้แต่ถอนใจ
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

11
คำถามจำนวนมาก ถามโดยแทบจะไม่อธิบายอะไรมาเลย ไม่ทราบคนถามจะรู้ไหมว่าคนอ่าน(เอาเป็นว่าอย่างน้อยก็ผมแล้วกัน)รู้สึกเหมือนโดนถามว่า "อยากได้จรวดไปดาวอังคาร ช่วยหน่อยครับ" จริงๆนะ แล้วจะให้ตอบอย่างไร ก็จะกลายเป็นต้องถามกลับไปว่า คุณได้ใช้อุปกรณ์อะไร ออกแบบอะไรยังไงไปแล้วบ้าง เอามาให้ดูหน่อย ซึ่งถ้าเป็นสมัยก่อน ผมก็จะพยายามถามกลับ แต่ยอมรับว่าเดี๋ยวนี้ โอกาสน้อยที่ผมจะถามกลับแล้ว ถ้าอ่านแล้วพบว่าข้อมูลที่ให้มาพร้อมคำถามของผู้โพสนั้นมีน้อยมาก ก็จะข้ามไปเลย หรือถามแล้วอ่านไม่เข้าใจเลย ผมก็ขอข้ามไปเหมือนกัน

ดังนั้น เพื่อเพิ่มความสมบูรณ์ของคำถาม มันก็มีหลายวิธี แต่หลายๆวิธีคงวุ่นวายไป ก็เลยคิดว่าก่อนระบบจะรับโพส อยากให้มี message box แสดงข้อความ "เขียนถามให้ผู้ตอบเข้าใจ..." ตามข้อความเตือนสีแดงๆที่อยู่บนหัวเพจอีกที และอาจมีข้อความอื่นเพิ่มเติมเพื่อเน้นว่าเขาแน่ใจไหมว่าได้อธิบายละเอียดแล้ว ถ้าเขาไม่ยืนยัน ก็ให้เขากลับไปแก้ข้อความ แต่ถ้าเขากดยืนยัน ก็ค่อยโพสจริงๆอีกที

ถามยาว โอกาสได้รับคำตอบเร็วมีสูง -- ถามสั้น โอกาสน้อยลง -- ถามสั้นมากๆ ยากที่จะมีโอกาส
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

หน้า: [1]