สอบถามข้อมูลจากท่านอาจาร์ย yeadram และท่านผู้รู้ทุ
กระทู้เก่าบอร์ด อ.Yeadram

 7,898   25
URL.หัวข้อ / URL
สอบถามข้อมูลจากท่านอาจาร์ย yeadram และท่านผู้รู้ทุ

อ้างอิงจาก :: http://www.thai-access.com/yeadram_view.php?topic_id=391

ผมได้ส่งไฟล์ไปทางเมล์ของบอร์ดแล้วน่ะครับ

จากกระทู้ที่อ้างอิง ผมได้ทำการแก้ไขเรียบร้อยตามที่ต้องการแล้วครับ และตอนนี้มี requirement เข้ามาเพิ่มครับ คือ

1. ต้องการให้มีระบบรักษาความปลอดภัย คือ มี user แค่หนึ่งหรือที่กำหนดไว้สามารถแก้ไขข้อมูลทั้งหมดได้ ส่วน user ที่ไม่ได้กำหนดไว้ทำได้แค่ดูอย่างเดียวครับ
===> แนวคิดผมก็คือ สร้างตาราง user ขึ้นมาเพิ่มไว้ และกำหนดเงื่อนไขด้วยการ if..then ตอนที่ form_load ครับ ไม่ทราบถูกหรือไม่

2. ต้องการระบบรายงานโดยใช้เงื่อนไขตามที่ต้องการ (frmreport1) จากในรูปครับ

จะให้ user เลือก ประเภทของการจัดเรียงข้อมูลใน รายงาน โดยมี ฝ่ายงาน รายชื่อ และ วันที่เริ่มงาน (starting_date) และให้ใส่รายละเอียดที่ต้องการใน textbox16 ที่อยู่โดดๆ ระหว่างตัวเลือกทั้งสองครับ ต่อไปให้เลือกประเภทของ license และให้ใส่วันหมดอายุที่ต้องการ และเมื่อกดปุ่มจะโชว์รายงานออกมาตามที่ใส่เงื่อนไขไว้
===> ปัญหาคือ ผมไม่ทราบว่าจะใส่เงื่อนไขอย่างไร เคยลองแกะจากตัวอย่างโปรแกรม แล้วนำมาใช้งาน ปรากฎว่าไม่มีข้อมูลขึ้นตามที่ต้องการเลยครับ

3. มีทางไมครับ ที่จะให้มีคำอธิบายตัวเลือกใน combo-box โดยปกติถ้าไม่มีการเลือกก็จะไม่มีคำอธิบายขึ้นมา แต่พอมีการเลือกหรือ focus ไปจะมีคำอธิบายขึ้นมา พอไม่มีการโฟกัส คำอธิบายก็จะหายไป

4. ถ้าจะ export ข้อมูลไปยัง excel โดยเราสามารถกำหนดเงื่อนไขที่จะทำการ export เฉพาะข้อมูลที่ตรงกับเงื่อนไขที่ระบุ

25 Reply in this Topic. Dispaly 2 pages and you are on page number 2

21 @R01872
ผมลองทำดูแล้ว ผลก็คือมันยังขึ้นให้ใส่พารามิเตอร์อ่ะครับ
22 @R01874
ส่งไฟล์มาครับ เดี๋ยวช่วยดูให้
ระบุหัว จดหมายว่า "กระทู้ 413 ความเห็น 1872"
บอกมาด้วยว่า งานนี้ มันอยู่ที่ฟอร์มใด หรือเหตุการณ์ใด หรือมีออบเจคที่เกี่ยวข้องอะไรบ้าง เช่น คิวรี่ที่เกี่ยวข้องกับงานนี้ ฟอร์มที่เกี่ยวข้องกับงานนี้ แมคโครที่เกี่ยวข้อง
จะได้มองหาได้ถูกจุดครับ ส่วนอื่นๆ ผมจะไม่ต้องเข้าไปดูครับ
23 @R01885
ผมได้ส่งไปทางเมล์พร้อมกับรายละเอียดแล้วน่ะครับ ขอบคุณครับ
24 @R01887
1 คุณวางลำดับงานสับสนครับ
-ถ้ากรณี user ไม่คลิ๊กอะไรเลยแล้วกดปุ่มคำสั่ง คุณคิดว่าจะเกิดอะไรขึ้น
-ถ้ากรณี user ติ๊กเอาเครื่องหมายออก แต่โปรแกรมของคุณก็ยังทำงานตรงนั้น เพราะคุณไม่ได้เช็คว่าเขาติ๊กเอา หรือติ๊กออก แต่คุณไปเช็คว่า ถูกคลิ๊กหรือไม่ เพราะในเหตุการณ์จริง แม้ user จะกำลังติ๊กเพื่อเอาออก แต่นั่นก็เกิดเหตุการณ์ onclick เช่นกัน

ผมเลยลบทิ้งทั้งหมด แล้วให้เหลือแค่ procedure เดียวดังนี้ครับ
Private Sub Command10_Click()
Dim sql As String
sql = "SELECT ID"
If check_name Then sql = sql & ", [type], [name]"
If check_section Then sql = sql & ", section"
If check_derivative Then sql = sql & ", equity,equity_start,equity_active,equity_expire,equity_id"
If check_single Then sql = sql & ", futures,futures_start,futures_active, futures_year,futures_expire,futures_id"

DoCmd.SetWarnings False
DoCmd.RunSQL sql & " INTO tmp FROM QryAll"

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "tmp", "Test12345.xls"
End Sub


จุดสังเกตุเพิ่มเติมอีก 4 จุด ระหว่างโค้ดเก่าของคุณกับของผม
1 คำว่า Type กับคำว่า Name เป็นคำสงวนของระบบ ถ้าจะเอาคำสงวนไปใช้ใน statement ต้องคร่อมด้วยเครื่องหมายวงเล็บสี่เหลี่ยมเสมอ
2 การอ้างชื่อฟิลด์ คุณอ้างผิด มันก็เลยเกิด dialog parameter มาให้คุณ ฟิลด์ที่คุณอ้างถึงนั่น มันเป็นอดีตไปแล้ว ตอนนี้มันมาเป็นฟิลด์ของ QyrAll แล้ว และมันก็ได้ถูกเปลี่ยนชื่อไปหมดแล้ว (โดยคุณเองนั่นแหละครับ ที่ใส่ As ให้มัน) เมื่อคุณจะอ้างถึงมันอีก คุณต้องเอาชื่อใหม่ของมัน
3 ก่อนสั่งรัน statement แบบ Action ไม่ควรให้มันแสดงคำเตือนอีก เพราะมันต้องรันบ่อยๆ user เขาจะรำคาญเอา ดังนั้น setwarnings เป็น false ไปเลยครับ
4 คุณต้องคิดเผื่อด้วยว่า กรณี user อยากลองเล่น คือกดปุ่มคำสั่งโดยไม่ติ๊กเลือกอะไรเลย คุณต้องสั่งให้ยกเลิกการทำงาน หรือ... อีกทางก็คือ ต้องให้มีอย่างน้อย 1 ฟิลด์ เพื่อให้โค้ดมันทำงานได้ต่อ โดยไม่เกิด error เช่นที่ผมยกตัวอย่างคือ อย่างน้อย ให้ได้ แค่ฟิลด์ ID ออกมา ก็ยังดี ดีกว่าไม่มีฟิลด์อะไรให้มันรัน
25 @R01895
เรียบร้อยครับ ขอบคุณครับ

เดี่ยวมีข้อสงสัยอื่นๆ จะมาสอบถามต่อครับ ขอบคุณมากครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2904s