แสดงกระทู้

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 - prajak

หน้า: [1] 2 3 4 ... 19
1
ถ้าจำเป็นต้องแยก Front / Back มีการใช้งานร่วมกันนั้นตัว Front-End พอจะป้องกันได้ตามที่ อ.OddyWriter แนะนำครับ
แต่ตัว Back-end ถ้ายังคงเป็น Access ผ่านการ map network drive จะทำหน้าฟอร์มใส่รหัสผ่านก็ไม่มีผลเนื่องจากจะไปป้องกันการกด F11,Shift ก็ไม่เหมาะเพราะมันคือฐานข้อมูลที่ผู้ดูแลอาจจะต้องมีการเข้าไปแก้ไข

แล้วถ้าทำ Back-end ให้เป็น MySQL หรือ SQL Server ล่ะโอเครไหม  :cool:// ขั้นตอน,วิธีการใช้งาน,ข้อดี-ข้อเสีย หาข้อมูลดูครับ
จะได้ Back-end ที่ไม่ต้อง map drive ไม่มีไฟล์ให้เข้าไปดูหรือคัดลอก แต่ใช้เข้าดู,แก้ไขผ่านหน้าเว็บหรือโปรแกรมฐานข้อมูลนั้นๆที่เราสามารถตั้งรหัสผ่านป้องกันได้โดยปริยายครับ :ninja:
ขอบคุณสำหรับการแนะนำนะครับ เรื่อง SQL ยังไม่เป็นครับ อาจต้องใช้เวลาศึกษา เบื้องต้นผมคงต้องใช้วิธีปิด Navigation pane ตัว Data ที่ map drive ไปก่อน อย่างน้อยๆเปิด data ขึ้นมาจะได้ไม่เห็น หรืออาจจะเป็นการซ่อน drive ที่ map ครับ

2
การจะปิดไม่ให้เปิดดูฐานข้อมูลนั้นเป็นเรื่องยากครับ มันมีโค้ดที่ปิดการกดปุ่ม F11 และทำให้การกดปุ่ม Shift แล้วเปิดโปรแกรมไม่ทำงานอยู่
การกดปุ่ม F11 คงไม่ต้องอธิบายนะครับ แต่การป้องกันการกดปุ่ม Shift เนี่ยมันมีผลข้างเคียงคือ ถ้าต้องการแก้ไขโปรแกรม ต้องไปทำที่ตัวโปรแกรมก่อนหน้าที่ยังไม่ได้เปิดการทำงาน Disable Shift Button

ลองดูวิธีการในนี้นะครับ

https://learn.microsoft.com/en-us/office/troubleshoot/access/disable-database-startup-options
ขอบคุณมากนะครับ

3
รบกวนสอบถามอาจารย์ทุกท่านหน่อยครับว่า การเชื่อมต่อฐานข้อมูล Access Back-end ที่เข้ารหัสฐานข้อมูลไว้  ในส่วนของfront-endเขาต้องกำหนดคำสั่งเพื่อเชื่อมฐานข้อมูลยังไง แล้วใส่ไว้ตรง event ไหนครับ
ปล.ปัจจุบันผมใช้การ link table ไปหาdriveที่ผมmapจากเครื่องserver แต่ปัญหาก็คือ ผู้ใช้งานสามารถเข้าดูฐานข้อมูลนั้นได้ครับ

ขอบคุณมากครับ

4
ถามเองตอบเอง ได้แล้วครับ
me.AllowDeletions=False

5
รบกวนสอบถามครับ ฟอร์มมุมมองแบบ datasheet หากเราต้องการป้องกันการลบ record แบบclickขวา delete หรือกดปุ่ม delete ที่ keyboard โดยมีเงื่อนไขว่า หากrecord นั้นฟิวด์ ItemUsed = 1 จะไม่สามารถลบข้อมูลแถวนั้นๆได้ ต้องเขียนคำสั่งยังไงครับ


6
แก้ปัญหาด้วยการ ออกแบบใหม่แล้วครับ

7

พอดีเรื่องเขียนภาษาไม่เป็นครับ เลยดูตัวอย่างจากท่านอื่น รวมถึงท่านอื่นเคยทำตัวอย่างให้ ตอนนี้เลยเอามาประยุกต์ใช้กับฟอร์ม
** ปัญหาคือว่า อยากให้ข้อมูลใน subform แสดงเมื่อ IDfinal ใน subform เท่ากับ RID บน mainform ครับ
ปล.รูปแบบ field RID กับ IDfinal ไม่ใช่ numberนะครับ แต่เป็น text ส่วนเหตุผลว่าทำไมไม่ใช้ number มันผิดมาตั้งแต่แรกครับ ถ้ากลับไปแก้เรื่องยาวเลยครับ
รบกวนด้วยนะครับ ขอบพระคุณมากครับ



8
ห้อง MS Access / : การหายอดคงเหลือ
« เมื่อ: 08 ส.ค. 67 , 13:27:18 »
ตามที่คุณ Un บอกเลยครับ มีอาจารย์เคยให้แนวทางการ ยกยอด รับเข้า จ่ายออก คงเหลือ ใว้ในกระทู้ลองคนหาดูนะครับ
ขอบคุณครับ เดี๋ยวลองหาดูครับ

9
ห้อง MS Access / : การหายอดคงเหลือ
« เมื่อ: 07 ส.ค. 67 , 08:13:44 »
ผมก็ใช้วิธีการลองผิดลองถูกแบบนี้
โดยใช้ตัวอย่างจาก อาจารย์หรือเพื่อนๆ ในนี้
ทำบ่อยๆ จะพบจุดผิด จุดที่เป็นเงื่อนไข
ดูคำสั่งแล้วทำความเข้าใจ มันจะเอาไปประยุกต์
ใช้ได้อีกเยอะเลยครับ

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

10
ห้อง MS Access / : การหายอดคงเหลือ
« เมื่อ: 06 ส.ค. 67 , 13:49:23 »
เข้าใจครับมือใหม่ คือจะให้ทำให้เลย คนที่เค้ามาดูเค้าไม่รู้ว่า ตารางไหนคืออะไร
แล้วเค้าจะทำให้ได้งัย ผมดูไปชั่วโมงนึง ยังไม่รู้เลยว่า ตารางไหนคือรับ ตารางไหนจ่าย
มันมั่วไปหมด เลยอยากให้ลองทำ ให้เหลือ 3-4 คิวรี่ เอาส่วนที่เกี่ยวข้องในตารางต่างๆ
มารวมใน คิวรี่เดียวจนเหลือคิวรี่สุดท้าย อันไหนไม่ใช้ไม่ต้องดึงลงมา

แล้วจากที่ดู ถ้าออกแบบ 2 ตาราง เป็นตาราง รับ ตารางจ่าย พอมารวมกัน
ไอดีมันจะไม่สามารถลำดับได้ เช่น
ตารางรับ
ID    วันที่       จำนวน
1  30/7/2567    20
2  2/8/2567    10
3  2/8/2567      5
4  2/8/2567    15
5  2/8/2567    25
ตารางจ่าย
ID    วันที่       จำนวน
1   31/7/2567     2
2    1/8/2567      4
3    1/8/2567      5
4    1/8/2567      6
5    2/8/2567      3
ตารางรับ-จ่าย
ID    วันที่       จำนวนรับ    จำนวนจ่าย   คงเหลือ
1  30/7/2567    20             0            20
1  31/7/2567      0             2            18
2    1/8/2567      0             4            14
2    2/8/2567    10             0            24
3    1/8/2567      0             5            19
3    2/8/2567      5             0            ....
4    1/8/2567      0             6            ...
จะเห็นว่าพอเรียงตาม ID วันที่จะเรียงผิด
วิธีแก้คือ ต้องใช้ตารางเดียว หรือต้องเขียนให้โปรแกรมนับไอดี ต่อกันใน 2 ตาราง
ลองทำดูครับ
.........




ตอนนี้ผมทำตารางใหม่ตามที่แนะนำแล้วครับ โดยลำดับก่อนหลังจะมี ID เป็นตัวกำหนด แต่สินค้ามีหลายItem ซึ่งแต่ละ item จะมี product ID ของมันเอง แบบนี้เราต้องเขียนคำสั่งยังไงเพื่อไม่ให้มันมารวมกันครับ

ปล. ตอนนี้ช่อง balance ใช้คำสั่งนี้ครับ Balance: (SELECT Sum([In]-[Out]) FROM [Query13] AS q WHERE (q.ID<=[Query13].[ID]))
ผมลองใช้ตามนี้ Balance: (SELECT Sum([In]-[Out]) FROM [Query13] AS q WHERE (q.ID<=[Query13].[ID] and q.PD_ID=[Query13].[PD_ID]))
 
ปรากฏว่าได้ตามที่ต้องการครับ ไม่ทราบว่าถูกต้องไหมครับ

11
ห้อง MS Access / : การหายอดคงเหลือ
« เมื่อ: 06 ส.ค. 67 , 13:29:49 »
เข้าใจครับมือใหม่ คือจะให้ทำให้เลย คนที่เค้ามาดูเค้าไม่รู้ว่า ตารางไหนคืออะไร
แล้วเค้าจะทำให้ได้งัย ผมดูไปชั่วโมงนึง ยังไม่รู้เลยว่า ตารางไหนคือรับ ตารางไหนจ่าย
มันมั่วไปหมด เลยอยากให้ลองทำ ให้เหลือ 3-4 คิวรี่ เอาส่วนที่เกี่ยวข้องในตารางต่างๆ
มารวมใน คิวรี่เดียวจนเหลือคิวรี่สุดท้าย อันไหนไม่ใช้ไม่ต้องดึงลงมา

แล้วจากที่ดู ถ้าออกแบบ 2 ตาราง เป็นตาราง รับ ตารางจ่าย พอมารวมกัน
ไอดีมันจะไม่สามารถลำดับได้ เช่น
ตารางรับ
ID    วันที่       จำนวน
1  30/7/2567    20
2  2/8/2567    10
3  2/8/2567      5
4  2/8/2567    15
5  2/8/2567    25
ตารางจ่าย
ID    วันที่       จำนวน
1   31/7/2567     2
2    1/8/2567      4
3    1/8/2567      5
4    1/8/2567      6
5    2/8/2567      3
ตารางรับ-จ่าย
ID    วันที่       จำนวนรับ    จำนวนจ่าย   คงเหลือ
1  30/7/2567    20             0            20
1  31/7/2567      0             2            18
2    1/8/2567      0             4            14
2    2/8/2567    10             0            24
3    1/8/2567      0             5            19
3    2/8/2567      5             0            ....
4    1/8/2567      0             6            ...
จะเห็นว่าพอเรียงตาม ID วันที่จะเรียงผิด
วิธีแก้คือ ต้องใช้ตารางเดียว หรือต้องเขียนให้โปรแกรมนับไอดี ต่อกันใน 2 ตาราง
ลองทำดูครับ
.........




ตอนนี้ผมทำตารางใหม่ตามที่แนะนำแล้วครับ โดยลำดับก่อนหลังจะมี ID เป็นตัวกำหนด แต่สินค้ามีหลายItem ซึ่งแต่ละ item จะมี product ID ของมันเอง แบบนี้เราต้องเขียนคำสั่งยังไงเพื่อไม่ให้มันมารวมกันครับ

ปล. ตอนนี้ช่อง balance ใช้คำสั่งนี้ครับ Balance: (SELECT Sum([In]-[Out]) FROM [Query13] AS q WHERE (q.ID<=[Query13].[ID]))

12
ห้อง MS Access / : การหายอดคงเหลือ
« เมื่อ: 05 ส.ค. 67 , 12:50:13 »
เข้าใจครับมือใหม่ คือจะให้ทำให้เลย คนที่เค้ามาดูเค้าไม่รู้ว่า ตารางไหนคืออะไร
แล้วเค้าจะทำให้ได้งัย ผมดูไปชั่วโมงนึง ยังไม่รู้เลยว่า ตารางไหนคือรับ ตารางไหนจ่าย
มันมั่วไปหมด เลยอยากให้ลองทำ ให้เหลือ 3-4 คิวรี่ เอาส่วนที่เกี่ยวข้องในตารางต่างๆ
มารวมใน คิวรี่เดียวจนเหลือคิวรี่สุดท้าย อันไหนไม่ใช้ไม่ต้องดึงลงมา

แล้วจากที่ดู ถ้าออกแบบ 2 ตาราง เป็นตาราง รับ ตารางจ่าย พอมารวมกัน
ไอดีมันจะไม่สามารถลำดับได้ เช่น
ตารางรับ
ID    วันที่       จำนวน
1  30/7/2567    20
2  2/8/2567    10
3  2/8/2567      5
4  2/8/2567    15
5  2/8/2567    25
ตารางจ่าย
ID    วันที่       จำนวน
1   31/7/2567     2
2    1/8/2567      4
3    1/8/2567      5
4    1/8/2567      6
5    2/8/2567      3
ตารางรับ-จ่าย
ID    วันที่       จำนวนรับ    จำนวนจ่าย   คงเหลือ
1  30/7/2567    20             0            20
1  31/7/2567      0             2            18
2    1/8/2567      0             4            14
2    2/8/2567    10             0            24
3    1/8/2567      0             5            19
3    2/8/2567      5             0            ....
4    1/8/2567      0             6            ...
จะเห็นว่าพอเรียงตาม ID วันที่จะเรียงผิด
วิธีแก้คือ ต้องใช้ตารางเดียว หรือต้องเขียนให้โปรแกรมนับไอดี ต่อกันใน 2 ตาราง
ลองทำดูครับ
.........
ขอบพระคุณมากนะครับ ผมคงต้องทำใหม่ตามที่แนะนำครับ ผิดตั้งแต่ออกแบบตารางใช้งาน

13
ห้อง MS Access / : การหายอดคงเหลือ
« เมื่อ: 05 ส.ค. 67 , 11:12:32 »
การออกแบบตารางดูสับสนมากเลยครับ
ถ้าเราออกแบบตารางดี มันจะเขียนโปรแกรมง่าย
ตอนนี้นั่งไล่ตาราง คิวรี ก็งงแล้ว ใช้เวลาสักพัก

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

14
ต้องรบกวนด้วยนะครับ คือผมอยากหายอดคงเหลือของสินค้าแต่ละรายการ ซึ่งจะมีการรับเข้าและเบิกออกในแต่ละวัน  ใน Query12 ช่อง balance มันต้องทำยังไงครับ โดยยอดคงเหลือของสินค้าไหนก็เป็นของสินค้านั้นๆ ( สินค้าแต่ละตัว จะมี ID_product ของมัน  ส่วนอันไหนก่อนหลังจะอยู่ที่ DateBill และ ID ) ทั้งนี้ผมได้แนบไฟล์มาเพื่อให้อาจารย์ช่วยดูและแนะนำด้วยครับ
https://drive.google.com/file/d/1GQ2La_LmomiVDgoGXbGWY9a4NytCb4SZ/view?usp=sharing


15
ห้อง MS Access / : การหายอดคงเหลือ
« เมื่อ: 03 ส.ค. 67 , 11:26:53 »
ถ้ากระทู้นี้ต่อยอดมาจาก กระทู้ที่แล้วนะครับ
ผมว่ามันทำไม่ได้ครับ เนื่องจากมันไม่มีอะไรอ้างอิงก่อนหลัง
จากตารางที่ออกแบบ มีวันที่เป็นตัวอ้างอิง ซึ่ง มันมีวันที่ซ้ำกันได้
ทำให้วันเดียวกันมันจะคำนวนผิด การคำนวนแบบนี้เรียก
Running sum ค้นหาจากกระทู้เก่าๆ ได้ครับ

การคำนวนแบบนี้ ส่วนใหญ่ จะใช้อยู่ในตารางเดียวกัน
และใช้ไอดี เป็นตัวบอกก่อนหลัง

ผมส่งตัวอย่างให้ดู ว่ามันจะไม่ได้ยังงัย
แล้วถ่าผมมี ID กำกับ ในรูปต้องเขียนยังไงครับ

ผมเปลี่ยนวิธีใหม่โดยมี ID และวันที่กำกับก่อนหลังแล้วครับ ได้มาเป็น Query12 แต่ไปต่อไม่เป็นครับ ทั้งนี้ผมได้แนบไฟล์มาให้ช่วยดูตามlink ด้านล่างนี้นะครับ ขอขอบพระคุณล่วงหน้าด้วยนะครับ
ปล.สินค้าจะมีหลายรายการ แต่ว่าแต่ละรายการจะมี ID Product ของมันครับ


https://drive.google.com/file/d/1GQ2La_LmomiVDgoGXbGWY9a4NytCb4SZ/view?usp=sharing

ปล.สินค้าจะมีหลายรายการ แต่ว่าแต่ละรายการจะมี ID Product ของมันครับ

16
ห้อง MS Access / : การหายอดคงเหลือ
« เมื่อ: 03 ส.ค. 67 , 08:59:21 »
ขออนุญาตเปลี่ยนเป็น google drive ตามที่แนะนำนะครับ

https://drive.google.com/file/d/1oXuWLsnHV77rYbZDV_8F1C6rNAwVv3T9/view?usp=sharing

17
ห้อง MS Access / : การหายอดคงเหลือ
« เมื่อ: 02 ส.ค. 67 , 17:15:02 »
เบื้องต้นผมแนบไฟล์ตามลิง้ค์นี้ครับ ผมรบกวนช่วยดูตรง Query12 ให้ทีนะครับ ขอบคุณมากครับ

https://wetransfer.com/downloads/9d6f9512df3aa6d6c994114f9d8339af20240802101146/bdb50cb1fdb83d14b2989d3f9b505b3720240802101219/86a723?trk=TRN_TDL_01&utm_campaign=TRN_TDL_01&utm_medium=email&utm_source=sendgrid

18
ห้อง MS Access / : การหายอดคงเหลือ
« เมื่อ: 02 ส.ค. 67 , 16:44:39 »
ถ้ากระทู้นี้ต่อยอดมาจาก กระทู้ที่แล้วนะครับ
ผมว่ามันทำไม่ได้ครับ เนื่องจากมันไม่มีอะไรอ้างอิงก่อนหลัง
จากตารางที่ออกแบบ มีวันที่เป็นตัวอ้างอิง ซึ่ง มันมีวันที่ซ้ำกันได้
ทำให้วันเดียวกันมันจะคำนวนผิด การคำนวนแบบนี้เรียก
Running sum ค้นหาจากกระทู้เก่าๆ ได้ครับ

การคำนวนแบบนี้ ส่วนใหญ่ จะใช้อยู่ในตารางเดียวกัน
และใช้ไอดี เป็นตัวบอกก่อนหลัง

ผมส่งตัวอย่างให้ดู ว่ามันจะไม่ได้ยังงัย
แล้วถ่าผมมี ID กำกับ ในรูปต้องเขียนยังไงครับ

หน้า: [1] 2 3 4 ... 19