Forum Replies Created
-
AuthorPosts
-
adminKeymaster
ดูจาไฟล์ละครับ ไล่โค๊ตไม่ไหว เขียนไปเยอะแล้วอ่ะครับ เอาเป็นว่าเขียนเป็นผังอธิบายให้ดูหน่อยได้ไหมครับว่าติดตรงไหนต้องการแบบไหน จะง่ายกว่าครับ เพราะจากที่อธิบายผมมา ผมยังงงอยู่เลยครับ ว่า master คืออะไร Transaction sub คืออะไร อธิบายแบบยกตัวอย่างได้ไหมครับ ไล่โค๊ตไม่ไหวครับ 555+
adminKeymasterขอดูตัวอย่างหน่อยได้ไหมครับ ว่า query ที่ union แล้ว ผลออกมาอย่างไร
แล้วที่จะเอาไปใช้งานต่อ อยากได้รูปแบบการแสดงผลแบบไหนครับ ผมนึกภาพไม่ออกอ่าครับadminKeymasterน่าจะเข้าใจผิดครับ ที่ผมแนะนำไปไม่ได้เอา database มารวมกันครับที่ตารางเดียวนะครับ ผมแนะนำให้ลิงค์ ตารางจากแต่ละก้อนมาไว้ที่ database เดียวกันครับ
ชื่อตารางที่ลิงค์มา จากแต่ละ database พอลิงค์มา จะต้องแก้ชื่อใหม่นะครับเช่น database1 ตารางชื่อ stock, database2 ตารางชื่อ stock เหมือนกัน แต่พอเราสร้าง database ใหม่อีกก้อน โดยลิงค์ตารางจาก database1,database2 เราอาจจะเปลี่ยนชื่อตารางที่ลิงค์แล้วเป็น stock_db1,stock_db2 แบบนี้ครับ
จะทำให้ก้อน database ใหม่ที่เราจะใช้รวมข้อมูลจากหลาย database ทำงานได้
จากนั้น ค่อยเขียน query union จากตารางที่ลิงค์มาแล้วตัวอย่างเช่น
select * from stock_db1 union all select * from stock_db2
แบบนี้เราก็จะได้ query ที่รวมข้อมูลเรียบร้อยแล้วครับ เซพเป็น query ไว้ ต่อไปก็เอาไปใช้งานได้ตามใจชอบครับ
จากแนวที่ผมแนะนำนี้ ไม่อะไรที่ติดขัดกับกฎ primary key เลยครับ ลองดูครับ^^
adminKeymasterลองเช็คตรง
property ของ combobox > Tab Data > ช่อง Control Source
เป็นชื่อฟิล์ดที่เก็บข้อมูลหรือยังครับ
adminKeymasterผมว่าไม่เกี่ยวกับ access ละครับ ต้องไปแก้ที่ข้อมูลใน excel มากกว่า ถ้าเป็นตัวเลข มันจะต้องไม่ขึ้นชื่อร้านนะครับ จะต้องขึ้นเป็นตัวเลข
adminKeymasterมันเป็นข้อจำกัดของโปรแกรมอ่ะครับ ผมก็ยังไม่มีวิธีให้มันค้นหาจากบางส่วนของคำใน ตัว combobox เหมือนกันครับ ได้แต่พิมพ์ตั้งแต่ตัวแรก เพื่อค้นหาเอา
adminKeymasterตามที่ผมเข้าใจ การใช้ lookup wizard เพื่อทำ combobox นั้น เวลาทำเสร็จแล้ว มันจะลิงค์ ฟิล์ดนี้ กับ ฟิล์ดของตารางอื่น คุณ Peerapach ได้เช็คหรือยังครับ ว่าอีกตารางนึงที่ไปลิงค์ มีข้อมูลครบตรงกับตารางแรกแล้วอ่ะครับ
adminKeymasterมันต้องเป็นแบบนั้นถูกแล้วครับ เพราะ type ไม่ตรง ทีนี้ เราต้องทำ type ให้ตรงตั้งแต่ตอนที่เป็น excel ครับ
ในไฟล์อ่ะครับ ถ้าสมมติเราจะทำ type ให้เป็น ตัวเลข คอลัมนั้นใน excel ทั้ง column ต้องไม่มีตัวหนังสือเลยนะครับ ช่องว่างเราก็ต้องทำเป็น 0 ทั้งหมดก่อน ไม่งั้นก๊อปช่องว่างไปก็เป็นตัวหนังสือครับส่วนเรื่องที่ใช้ lookup wizard แล้ว ข้อมูลหายไป ก็น่าจะเป็นจาก type นี่แหล่ะครับ เบื้องต้น ต้องทำให้ต้นฉบับ excel ที่เราจะก๊อปข้อมูลมา เป็น type ตัวเลยที่ถูกต้องก่อนครับ
adminKeymasterอย่างไรก็ต้องให้ type มันตรงกันครับ ถึงจะเอาจาก excel มาเข้าใน access ได้ ผมยังแปลกใจครับ ว่า ใน excel จัด type ให้ตรง ไม่ได้เหรอครับ ติดตรงไหนครับผมดูไม่ออกครับ ^^
adminKeymasterไม่ยากครับ สมมติ เราจะเอารายงานผลรวม ไว้ที่ไฟล์ใหม่ เราก็ลิงค์ table จาก 3 สโตร์ ไปไว้ที่ไฟล์ใหม่ได้เลยครับ (ถ้าใช้การลิงค์ table เวลาอัพเดทข้อมูลที่ไฟล์ต้นฉบับ ตารางที่เราลิงค์ที่ไฟล์ใหม่ก็จะอัพเดทด้วย ไม่งงนะครับ)
ตัวอย่างการลิงค์ table http://www.techonthenet.com/access/tables/link_table2013.php
ที่นี้ที่ไฟล์ใหม่เราจะได้ 3 ตาราง ของ 3 โปรแกรมใช่ไหมครับ ซึ่ง ถ้าเป็นตารางที่ก๊อปกันมา ฟิล์ด น่าจะเท่ากันอยู่แล้ว ใช้ query union all 3 ตาราง รวมเป็นข้อมูลเดียวกันก่อน แล้วเอา query ที่ได้ ไปหายอดสรุปรายการยอดวัสดุตามสูตรปรกติได้เลยครับตัวอย่างการใช้ union all http://www.thai-access.com/topic_post.asp?CategoryID=1&TopicID=475
adminKeymasterไช่ครับ
adminKeymasterเหมือนจะยากนะครับผมไม่ไล่โค๊ตละกัน แต่ผมมีวิธีง่าย ๆ ให้ลองทำตามดูครับ อันนี้ไม่ได้เกี่ยวกับที่คุณ HooHiiw ทำนะครับ
1. สร้างฟอร์ม หน้า Home menu แยกตามสิทธิ์ที่เข้าได้ เช่น มีสิทธิ์ user กับ admin เราก็สร้าง home menu ให้รวม ฟอร์มกับรายงานเท่าที่สิทธิ์ที่เราจะกำหนดให้ ในที่นี้ก็จะมี 2 ฟอร์ม คือ home menu ของ user กับของ admin
2. สร้างตาราง user ให้เก็บข้อมูล user pass แล้วก็ชื่อฟอร์ม home menu ที่คนนั้นเข้าได้
3. ปุ่ม login ของ ฟอร์ม login ให้เขียนโค๊ตในการเช็ค ว่า user กับ pass ที่กรอกในฟอร์มถูกต้องหรือไม่ ถ้าถูกต้องก็ให้เปิดฟอร์ม home menu ของสิทธิ์ของ user นั้น ๆ ตัวอย่างนะครับDim homemenu=Dlookup("[homemenu]","[tbl_user]","[tbl_user]![username]='" & Me.txt_username & "' and [tbl_user]![password]='" & Me.txt_password & "'") If (isnull(homemenu)) then msgbox "User หรือ password ไม่ถูกต้อง" Else DoCmd.OpenForm homemenu End If
เท่านี้ user ก็ใช้ได้แต่สิทธิ์ที่ตัวเองมีแล้วครับ แต่ว่าก่อนที่จะให้ user เอาโปรแกรมไปใช้ ต้องล็อค พวก navigation กับล็อคการกด shift key ตอนเปิดโปรแกรม ด้วยนะครับ เพื่อให้ user เข้าใช้ฟอร์มกับรายงานผ่านทางเมนูได้เท่านั้น
adminKeymasterยินดีครับ ^^
adminKeymasterปรกติแล้วผมจะเก็บราคาต่อหน่วยไว้ 2 ที่ครับ 1 คือตารางสินค้า ในที่นี้ผมหมายถึง ตารางที่คุณ HooHiiw บอกว่าแยกไว้แล้วนั่นแหล่ะครับ กับที่ที่สองคือรายละเอียกการขาย ในที่นี้ก็หมายถึง ตารารายละเอียดค่าไฟแต่ละเดือน
มีเหตุผลที่ต้องแยกอยู่ครับ ก็เพราะ ตารางรายละเอียกการขาย ถ้าไม่เก็บราคาต่อหน่วยไว้ จะต้องไปดึงราคาที่เป็นราคาล่าสุดอยู่ที่ตารางสินค้า มาคำนวณตลอด ซึ่ง สมมติว่า เดือน 1-4 ใช้ราคา 25 บาท แต่ เดือน 5 เป็นต้นไป ใช้ราคา 26 บาท
ทีนี้ เวลาเราจะเรียกดูรายงานเก่า ๆ มันจะเพี้ยนครับ เหตุเพราะว่าเราไม่ได้เก็บราคาเก่าไว้ที่ตารางรายละเอียดการขายนั่นเอง พอเข้าใจไหมครับผมเลยแนะนำว่าราคาให้เก็บไว้ทั้งสองที่ครับเผื่ออนาคตมีการเปลี่ยนแปลงราคา การแสดงผลรายงานจะได้ไม่เพี้ยนครับ
adminKeymasterจริง ๆ ตารางนี้ ผมแนะนำให้เก็บแค่ จำนวนหน่วย กับราคาต่อหน่วยไว้ก็พอครับ เพราะว่า เวลาเราเอาไปออกรายงานหรือคำนวณอะไร เราก็เขียน query เอาราคาต่อหน่วย คูณ จำนวนหน่วย ก็จะได้ยอดสุทธิครับ ไม่นิยมเอาผลการคำนวณเก็บไว้ในตาราง
แต่ถ้าอยากเก็บจริง ๆ ก็ทำได้ครับ แต่ต้องใช้ VBA ช่วย ครับ ไม่ทราบว่า คุณ HooHiiw พอมีความรู้เรื่อง VBA พอจะแกะโค๊ต VBA ได้ไหมครับ
adminKeymasterมีสองแนวทางครับ แบบยากกับแบบง่าย
1 แบบง่าย ที่ตารางห้องพัก ให้เพิ่มฟิล์ดเก็บสถานะห้องพักครับ ว่า ว่างหรือไม่ว่าง ให้ user อัพเดทเอง
2 แบบยาก เช็คจากตารางการเข้าพัก โดยปรกติจะมีวันเข้า-วันออก เราก็ดึงเอาแต่ record ล่าสุดของแต่ละห้องมาเช็ค
กรณีที่ 1 ไม่มี record (เพิ่งจะเพิ่มระบบใหม่อาจจะยังไม่ได้เก็บ)ก็แปลว่าห้องว่าง
กรณีที่ 2 ทั้งวันเข้าทั้งวันออก แปลว่าห้องว่างเช่นกัน เพราะคนเช่าออกไปแล้ว
กรณีที่ 3 มีวันเข้า แต่ไม่มีวันออก แปลว่าห้องไม่ว่าง คนยังเช่าอยู่แบบยากนี่จะเขียน query ยากหน่อยนะครับ แต่ก็ทำให้ไม่ต้องมาคอยอัพเดทสถานะเองเหมือนกัน ลองดูครับ
adminKeymasterต้องขอโทษพี่ด้วยนะครับ ถ้าอันไหนผมเคยทำผมจะให้คำตอบให้เลยไม่ปิดบัง แต่ว่าผมไม่เคยทำแบบที่พี่กำลังจะทำอ่ะครับ พี่ลองไปถามในบอร์ด http://www.thai-access.com/ น่าจะได้คำตอบครับ ขอโทษจริง ๆ ครับ
หรือถ้าพี่ไม่รีบ เด๋วว่าง ๆ ผมจะหาข้อมูลมาตอบให้ครับเรื่องนี้น่าจะต้องใช้เวลาซักหน่อย ^^
adminKeymasterต้องรบกวนฝากไฟล์ไว้ที่เว็บฝากไฟล์รูปก่อนนะครับ แล้วก๊อปลิงค์ที่เป็น
<img src="xxxxx
เข้ามาแปะในนี้ครับ อย่างไรไว้ว่าง ๆ ผมจะอัพเดทให้แนบไฟล์ได้ละกันนะครับตอนนี้ยังไม่ว่างเลย อิอิ10/06/2015 at 10:37 PM in reply to: การสร้างเงื่อน ถ้าเปิดฟอร์มนี้ ให้ Fixed ค่า Default ที่ Subform #525adminKeymasterถ้าให้ผมเดา ทั้ง 3 ฟอร์มนี่ เรียกใช้ subform เดียวกัน ไช่ไหมครับ วิธีการแก้ปัญหาคือสร้าง ก๊อป subform นั้น แล้วสร้างใหม่อีก 2 อัน แล้วก็ตั้งค่า default ของ type ไม่ให้เหมือนกันครับ ตามที่ต้องการ
ทีนี้ ไปที่ฟอร์มหลัก(ที่เรียกใช้ subform) ไปเปลี่ยน source object ให้ชื่อตรงกับ subform ที่เราตั้งค่าไว้ครับ ผมอธิบายย่อ ๆ ถ้างงก็บอกนะครับ ^^
adminKeymaster1 เราสามารถสร้าง Table เดียวว่า ค่าค่าสาธารณูปโภค โดยเก็บทั้งมิเตอร์น้ำและไฟ ได้ไหมครับ
ตอบ ได้ครับ แต่เราต้องมีฟิล์ดนึงที่เก็บว่า เป็น ค่าน้ำ หรือค่าไฟ หรือค่า อื่น ๆ อะไรก็แล้วแต่ครับ2 อยากทราบวิธีการเก็บค่ามิเตอร์ตั้งแต่ลูกค้าเข้ามาพักที่ห้อง โดยจะตัดยอดทุกๆวันที่ 25 โดยจะนำค่ามิเตอรืมาคำนวณเป็นค่าน้ำ ค่าไฟ ในแต่ละเดือน เอาเลขมิเตอร์ของเดือนล่าสุดเป็นตัวตั้ง แล้วก็ลบด้วยเลขมิเตอร์ของเดือนที่แล้ว
ตอบ ผมให้แนวคิดว่า ให้ใช้หลาย query ช่วยคำนวน แล้วเอาไปรวมกันที่ query สุดท้าย จะง่ายครับ เช่นquery1 หาเลขมิเตอร์เดือนล่าสุดของทุกห้อง
query2 หามิเตอร์เดือนก่อนหน้าของทุกห้อง
query3 เอา query1 query2 มารวมกัน
หาผลต่างของมิเตอร์แล้วเอาไปเข้าสูตรคำนวนค่าน้ำค่าไฟลองทำดูก่อนนะครับ โปรเจ็คนี้ไม่ยาก แต่ก็ไม่ง่ายสำหรับมือใหม่เหมือนกัน อย่างไรติดปัญหาตรงไหนก็มาถามได้เรื่อย ๆ นะครับ ^^
-
AuthorPosts