คำถามง่ายๆ แต่โดน
กระทู้เก่าบอร์ด อ.Yeadram

 1,786   9
URL.หัวข้อ / URL
คำถามง่ายๆ แต่โดน

เรียนอาจารย์ทุกๆท่านครับ
ผมและอีกหลายๆคนในบอร์ดนี้เป็นมือใหม่ด้าน Access อยากขอถามคำถามโง่ๆ (สำหรับท่านที่ทำเป็นแล้ว)ให้อาจารย์ช่วยแนะนำด้วยครับ
๑. ปกติ เราคงเริ่มด้วยการสร้างตารางที่มีเรคคอร์ดที่เราต้องการใช้งาน จากนั้น เราเอาคิวรีเข้ามากรองเลือกเรคคอร์ดออกมาแสดงผล (เป็นเรคคอร์ดเซ็ท) แล้วเอาไปสร้างฟอร์ม เมื่อได้ฟอร์มมาแล้ว เราจึงมาเขียนโค้ดให้กับคอนโทรลต่างๆ ความเข้าใจในพื้นฐานเช่นนี้ถูกต้องไหมครับ?
๒. การเขียนโค้ด ถ้าเรารู้ชื่อคอนโทรล-รู้ค่าที่แน่นอน เราก็ระบุลงในโค้ดโดยตรง แต่ถ้าเราไม่รู้ว่าค่าแน่นอน เราจึงกำหนดตัวแปรขึ้นมา เข้าใจแบบนี้ถูกไหมครับ?
๓.การประกาศตัวแปร มีข้อกำหนด/ข้อจำกัดอย่างไรบ้างครับ? เราต้องรู้ว่าเราจะใช้ตัวแปรประเภทใด (integer, double, string) ใช่ไหมครับ?
๔.ผมเห็นบางครั้งอาจารย์แนะนำวิธีการสร้างตัวแปรซ้อนตัวแปร หลักการนี้ใช้ได้กับทุกตัวแปรหรือเปล่าครับ? ถ้าจะให้ได้ผลดี ควรใช้อย่างไรครับ?
๕.ส่วนประกอบของโค้ดต่างๆมีมากมาย ไม่ทราบว่าจะหาศึกษาได้จากไหนบ้างครับ? จะตัดสินใจอย่างไรว่าจะใช้ส่วนประกอบนั้น(บางครั้งอ่านภาษาอังกฤษแล้วไม่แน่ใจ ตัดสินใจไม่ถูกครับ อยากทราบว่าจะหาตัวอย่างเปรียบเทียบได้จากที่ไหน?)
ทั้งหมดนี้ คิดว่าพวกเรามือใหม่คงสนใจกัน
รบกวนอาจารย์ช่วยให้เป็นวิทยาทานด้วยนะครับ
ขอบคุณครับ

9 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R13095
ตากคำถามข้อ 3 ดูเหมือนจะไม่ได้เรียนมาทางคอมพิวเตอร์หรือเปล่าครับ ยังไงช่วยบอก background หน่อยว่าเป็นโปรแกรมเมอร์ ถนัดภาษาอะไร หรือชำนาญคอมพิวเตอร์ด้านไหน หรือว่าเป็นแค่ user ที่สนใจจะทำเอง

ส่วนคำตอบคร่าวก็
๑. ทั่วไปก็คือ ใช่
๒. ทั่วไปก็คือ ใช่
๓. เรียกว่าข้อจำกัดก็ไม่เชิง แต่เป็น scope ว่าตัวแปรนั้นสามารถเรียกใช้จากส่วนไหนของโปรแกรมได้บ้างมากกว่า มันก็มีระดับ local ซึ่งเรียกใช้ได้ภายใน procedure ที่กำหนดตัวแปรเท่านั้น กว้างขึ้นมาก็เป็นระดับ module ซึ่งเรียกใช้ได้จากทุก procedure ใน module/ นั้นๆ และระดับ public ที่เรียกใช้ได้จากทุกๆ module (module ก็คือ โค้ดทั้งหลายของฟอร์ม อ๊อปเจ็ค/รายงาน อ๊อปเจ็ค/โมดูล อ๊อปเจ็คนั้นๆนั้น) ส่วนประเภทตัวแปรนั้น ไม่ว่าจะโปรแกรมภาษาอะไรในโลก ก็ต้องมีประเภทตัวแปรทั้งนั้น แม้จะมีบางภาษาที่มีแค่ประเภทเดียว แต่มันก็การพิจารณาด้วยตัวมันเองว่าต้องแปลงไปเป็นประเภทอะไรในการทำงานอยู่ดี
๔. ไม่เข้าใจ ผมไม่รู้จักคำว่าตัวแปรซ้อนตัวแปร
๕. ถ้าคุณไม่มีพื้นฐานคอมพิวเตอร์ อันนี้ค่อนข้างยากทีเดียว เพราะการเขียนโปรแกรมนึงๆ ต้องอาศัยความรู้รอบในภาษานั้นๆ ต้องสร้างอัลกอริธึมหรือขั้นตอนการแก้ไขปัญหาเป็น ต้องรู้ว่าฟอร์ม/รายงาน/คิวรี่ทำงานยังไง ต้องออกแบบฐานข้อมูลเป็น ต้องรู้จักคำสั่งที่จะทำงานกับฐานข้อมูลเป็น ต้องเข้าใจการทำงานของฐานข้อมูล ต้องรู้ว่าอ๊อปเจ็นนั้นๆมี event, property และ method อะไรบ้าง และน่ามีอย่างอื่นอีกที่ผมยังนึกไม่ออกตอนนี้ ถ้าเริ่มต้น หนังสืออะไรก็ได้เอามาสักเล่ม ให้คุณคุ้นเคยกับตัว Access ก่อน ว่ามันมีอันนั้นอันนี้ให้เล่น แต่คุณอาจไม่เข้าใจการทำงานว่าทำไมมันถึงทำอย่างนั้น ก็ค่อยๆหาหนังสือต่างประเทศที่สูงขึ้นมา ง่ายๆก็หาจาก amazon.com ว่าหนังสือที่มีชื่อว่า Access เล่มไหนยอดฮิตบ้าง สำหรับผม ในโลกอินเทอร์เน็ตนี่แหล่ะที่เป็นแหล่งข้อมูลที่ดีที่สุด เวปถามตอบ Access ก็มีหลายที่ แหล่งใหญ่ที่สุดน่าจะเป็น www.utteraccess.com ที่นั่นคือที่นั่นคือที่สิงสถิตของเหล่าเทพ Access และอาจมีทีมโปรแกรมเมอร์ของ Microsoft เองเข้าไปตอบด้วย แน่นอนว่าเวปของ Microsoft เองก็เป็นแหล่งข้อมูลสำคัญ การกด F1 เพื่อดู Help (ภาษาอังกฤษ) ก็ใช้ตลอดเวลาเช่นกัน

2 @R13101
ขอบคุณมากครับ อาจารย์สุภาพ
ผมเป็นแค่ user ที่มีความสนใจแบบ "ครูพักลักจำ" ครับ
พอมาพบบอร์ดนี้เข้า เลยติดใจเข้ามาบ่อย
สำหรับคำอธิบายของ อ.สุภาพ ทำให้ผมกระจ่างมากขึ้นครับ
ผมพอเข้าใจหยาบๆเรื่อง local procedure module บ้าง พอเข้าใจอัลกอริธึมบ้าง แต่ไม่ลึกซึ้งครับ คงเป็นเพราะไม่ได้เป็นโปรแกรมเมอร์ จึงขาดประสบการณ์ในการเขียนโปรแกรม
ผมได้อ่านหนังสือ Access หลายเล่ม และใช้ตัวอย่าง Northwind รวมทั้งอ่าน Help ช่วย และสร้างฟอร์มมาได้ ๓-๔ฟอร์ม ติดปัญหา จึงได้นำมาถามในบอร์ดนี้ แลได้ อ. yeadram มาช่วยตอบ
ผมเริ่มจะหัดใช้ภาษา C+ เขียนโค้ด แต่เนื่องจากไม่มีพื้น จึงคืบคลานไปไม่ค่อยได้ เวลาหัดเขียนโค้ดแล้วเครื่องขึ้นคำมาให้เลือก ก็ไปไม่ถูก เหมือนหลงเข้าไปในวังวน
สำหรับข้อ ๔ ที่ว่าตัวแปรซ้อน ผมคงใช้คำไม่ถูก คือเคยอ่านในกระทู้ เห็น อ.สุภาพเขียนแนะให้น้องเขาใช้ Select "*"...(Select...)นะครับ ก็เลยอยากรู้ว่า ถ้าเราจะเขียนโปรแกรม หรือสร้างโค้ด เราสามารถเขียนให้ถูก syntex โดยที่ซ้อนค่าต่างๆลงไปได้ ใช่หรือเปล่าครับ? มีหลัก-มีเทคนิกอะไรในการซ้อน syntex ครับ?
รวมความแล้ว ผมต้องฝึกให้มากกว่านี้ แต่ผมยังนึกไม่ออกว่าจะเอาตัวอย่างอะไรมาทำดี เห็นทีต้องเอาคำถามในเว็บบอร์ดนี้ ไปลองทำดู (ทำคู่ขนานกับคนโพสกระทู้ แต่ก็รู้ว่ายาก เพราะตัวขาดตัวตาราง ก็ทำงานลำบาก)
อาจารย์เข้าใจสภาพของผมแล้ว กรุณาให้คำแนะนำเพิ่มขึ้นนะครับ
ขอบคุณอีกครั้งครับ
3 @R13102
กราบขอโทษครับ เขียนชื่อ อ.สันติสุข ผิดไป
ขอโทษจริงๆครับ
4 @R13106
- อ.สุภาพเป็น อ.ที่ม.ขอนแก่น เป็นคนเริ่มสร้างเวปบอร์ดตอบคำถาม Access มีการใช้อยู่หลายปีจน HD เกิดปัญหาและไม่สามารถกู้ข้อมูลมาได้ บอร์ดนั้นจึงปิดตัวลง แต่ฟ้ายังเมตตา อ.Yeadram มีเก็บคำถามตอบบางส่วนไว้ จากนั้นอีกนาน อ.Yeadram จึงมาเปิดเวปบอร์ดอันนี้และได้เอาคำถามตอบจากบอร์ดอ.สุภาพมาลงไว้ และเริ่มต้นกันใหม่จากคำถามที่ 1 จนถึงปัจจุบันนี่แหล่ะครับ นอกจากนี้อ.สุภาพยังเป็นระดับเทพต้นๆใน UtterAccess ด้วยเช่นกัน

- ไม่ได้เรียนโปรแกรมมิ่งมา ผมไม่แนะนำที่จะเริ่มจาก C หรือ C++ เพราะภาษาพวกนี้ต้องอาศัยความเข้าใจเรื่อง memory, pointer อย่างถ่องแท้ทีเดียว ศึกษาจาก VB นี่แหล่ะครับ จะได้ไม่ปวดหัว ชำนาญแล้วค่อยไปภาษาอื่นๆ

- เราเรียก SQL Select statement ภายใน SQL statement หลักว่า "sub query" การคิวรี่เพื่อให้ได้คำตอบประเภทที่มีเงื่อนไขเป็นการเปรียบเทียบกับผลของคิวรี่หลัก บางทีเราต้องใช้ sub query ครับ เราสามารถใส่ sub query ใน SELECT clause, FROM clause, WHERE clause ได้ เราสามารถใส่ sub query ใน sub query ได้ (ไม่แน่ใจว่าซ้อนได้กี่ระดับ) รูปแบบก็เช่น

select (select...from...where...) as ..., ...
from (select...from...where...)
where (select...from...where...) ...

เราสามารถดู reference ของคำสั่งเหล่านี้ได้จากใน help file ของ Access ครับ อยู่ในหมวด Microsoft Jet SQL reference หรือไปค้นในเวปของ Microsoft ก็ได้ครับ

- ที่อยากแนะนำคือ ถ้างานของคุณเน้นทำกับข้อมูลในฐานข้อมูลเป็นหลัก ก็ให้ไปศึกษาเรื่อง การออบแบบฐานข้อมูล (Database Design), รู้จัก SQL statement ต่างๆ, รู้จัก Transaction Control (BeginTransaction, CommitTransaction, Rollback) ซึ่งส่วนเหล่านี้คุณอาจไม่จำเป็นต้องเขียน VBA โค้ดเลย เพราะมันเป็นส่วนของเทเบิลและคิวรี่เท่านั้น จากนั้นก็ศึกษาฟอร์ม/รายงาน ที่เชื่อมเข้ากับเทเบิล/คิวรี่ซึ่งควบคุมการทำงานด้วยแมโครเท่านั้นไปก่อนเพราะจะให้คุณได้คุ้นเคยกับว่า Access มันมีแมโครอะไรให้เราใช้ได้ (มันไม่สามารถทำงานได้เก่งเท่าการเขียน VBA โค้ด) คุณจะแก้ไขปัญหาโดยใช้เท่าที่แมโครมีให้ใชได้แค่ไหน จากนั้นก็เริ่มเข้าสู่โลกของ VBA โดยคุณต้องรู้ส่วนต่างๆของภาษา และศึกษาส่วนต่างๆของอินเทอร์เฟส (object, event, property, method) ที่เป็นตัวจัดการให้เราสั่งงานกับฐานข้อมูลซึ่งก็มีเทคโนโลยี่ที่เรียกว่า DAO และ ADO (ใน help file อยู่ในหมวด Microsoft DAO 3.60 และ Micorosft ActiveX Data Object ตามลำดับ   แน่นอนว่าเป็นของไมโครซอฟท์) เชื่อว่าพอถึงจุดนี้ คุณก็สามารถทำอะไรที่มัน advance ได้ระดับนึงแล้ว จากนั้นก็กลับมาที่ฟอร์ม/รายงานอีกที ศึกษาว่ามันมี event, property, method อะไรให้ใช้บ้าง สุดท้ายก็เอาทั้งหมดนี่แหล่ะ ยำรวมกัน ก็จะได้เป็นแอพพลิเคชั่นอย่างที่ใจต้องการครับ
5 @R13108
แก้ไข "คุณจะแก้ไขปัญหาโดยใช้เท่าที่แมโครมีให้ใชได้แค่ไหน" เป็น "คุณจะแก้ไขปัญหาโดยใช้เท่าที่แมโครมีให้ใช้ได้ แค่ไหน ก็แค่นั้น"

แก้ไข "ที่เป็นตัวจัดการให้เราสั่งงานกับฐานข้อมูล" เป็น "ที่เป็นอ๊อปเจ็คให้เราเรียกใช้เพื่อสั่งงานกับฐานข้อมูล"
6 @R13109
ขอบคุณครับ อ.สันติสุข
นั่นเป็นคำแนะนำที่ตรงใจผม และแก้ปัญหาของผมเป๊ะเลย
ผมจะศึกษาตามที่อาจารย์แนะนำครับ

อาจารย์ครับ ผมเข้าใจผิดคิดว่า ภาษา C กับ vb เป็นอันเดียวกันเสียอีก
อาจารย์พอจะช่วยบอกความแตกต่าง(หลักๆ)ให้ได้ไหมครับ?

ดีจัง ได้รู้ประวัติความเป็นมาของบอร์ดนี้ด้วย

ผมจะพยายามศึกษาด้วยตัวเองตามแนวทางที่อาจารย์แนะนำมาอย่างเต็มที่
ไปสดุดอะไร จะมาโพสถามอาจารย์อีกครับ
ขอบคุณมากๆครับ อาจารย์
7 @R13110
VB (Visual BASIC(Beginner's All-purpose Symbolic Instruction Code)) ตามชื่อมันเลยครับ เป็นภาษาสำหรับผู้เริ่มต้นและสำหรับงานทุกประเภท (อันนี้ชื่อมันโม้ไปหน่อยว่าสำหรับทุกงาน) เป็นภาษาที่มีมานานพอควร เป็นภาษาที่อ่านแล้วเดาได้ว่าทำอะไร ไม่มีการใช้สัญญลักษณ์อะไรเยอะแยะ ตัวภาษาทำมาเพื่อให้ใกล้ชิดมนุษย์มากกว่าฮาร์ดแวร์ของคอมพิวเตอร์ ที่เป็นตัวบ่งชี้ก็คือภาษาไม่มีความสามารถโดยตรงในการจัดการหน่วยความจำ (ไม่ทราบว่า VB.NET จะมีความสามารถเพิ่มขึ้นมาหรือเปล่า) ตัวภาษาจะมีการแปลงประเภทข้อมูลให้โดยอัตโนมัติเมื่อมันเห็นว่าจำเป็น ดังนั้นผู้เขียนจึงไม่ต้องเข้าใจประเภทของข้อมูลและการทำงานของคำสั่งอย่างลึกซึ้งสักเท่าไหร่

ในขณะที่ C (ภาษาที่พัฒนาต่อจากภาษา B เข้าใจว่าคนตั้งมันขี้เกียจตั้งชื่อแล้วมั๊ง ) เป็นภาษาที่ใช้สัญญลักษณ์เยอะ ภาษาอยู่ในระดับที่ใกล้ชิดกับหน่วยความจำและฮาร์ดแวร์อย่างมากความสามารถ ดังนั้นโปรแกรมที่เขียนด้วย C จึงมีความเร็วสูงมากและคนเขียนต้องแม่นประเภทของข้อมูล (Data Type) ต้องรู้ว่าแต่ละคำสั่งมันจัดการกับข้อมูลที่เกี่ยวข้องยังไง เนื่องจากความสามารถนี้ทำให้มันเป็นภาษาแรกที่ใช้เขียนส่วนที่เป็นแกนของระบบปฏิบัติการได้นอกเหนือจากเดิมที่จะต้องใช้แต่ภาษา Assembly เท่านั้น (ซึ่งเป็นภาษาที่เป็นยากมากๆเพราะใกล้ชิด CPU ที่สุดแล้ว) ถ้าเป็นผู้ที่ไม่มีพื้นฐานคอมพิวเตอร์หรือยิ่งเป็นคนที่ไม่มีหัวทางด้านวิทย์ ไม่แนะนำที่จะให้เริ่มจากภาษา C ครับ

ในโลกนี้มีภาษาคอมพิวเตอร์เยอะทีเดียว บางภาษาเหมาะกับงานเฉพาะประเภท ใช้ภาษาให้ถูกต้องจะช่วยลดเวลาโดยรวมของงานที่ต้องทำลงไปได้มากครับ และลองไปหาประวัติภาษาต่างๆจาก Google ดูด้วยคำว่า BASIC Language, VB Language และ C Language ดูครับ
8 @R13112
มีตัวอย่างภาษาอีกภาษาที่อยากให้ดูสนุกๆ

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

http://www.youtube.com/watch?v=CVFcpoULWq4
9 @R13114
ขอบคุณอีกครั้งครับ อาจารย์
คำอธิบายของอาจารย์ช่วยให้ผมกระจ่างขึ้นมาก และผมคิดว่า คงเป็นประโยชน์แก่ผมและคนอื่นๆที่กำลังเริ่มต้นกันอยู่ในขณะนี้
ผมซื้อหนังสือ vbมาอ่าน 2-3เล่ม ทำตามในหนังสือก็ทำได้ แต่ apply มาใช้งานไม่ถูก

ผมเริ่มงานคอมฯในยุค๘บิท เห็นโปรแกรมเมอร์เขาเขียนโปรแกรมเป็นซีเควนส์ทีละบรรทัดๆ แล้วค่อยๆรัน ค่อยๆแก้ ก็เดาเอาเองว่า ยุคแรกๆ คงต้องอาศัยความสามารถในการคาดเดาการทำงานของเครื่อง บวกกับประสบการณ์ตัวโปรแกรมเมอร์ในการทำให้โปรแกรมใช้งานได้
ต่อมา เพื่อนอีกคนหนึ่ง เขียนโปรแกรม FoxPro ให้กับงานที่ผมใช้งานอยู่ แล้วก็ให้โค้ดผมมาด้วย
ผมเพียรพยายามศึกษา แต่ไม่สำเร็จ
พอมี MS Access ผมก็กลับมาศึกษาใหม่ ซื้อหนังสือมาอ่านหลายเล่ม เรียกว่าเข้าใจตาราง-คิวรี-ฟอร์ม ได้พอสมควร แต่มาติด macro กับ vb นี่แหละครับ (สมัยนั้น ยังไม่มีอินเตอร์เน็ท ไม่มีเว็บบอร์ดอย่างแห่งนี้) ผมจึงคางานไว้หลายปีทีเดียว จึงได้หวนกลับมาใหม่ในครั้งนี้
ฟอร์ 4`5 ฟอร์มที่สร้างขึ้นมา ตอนนี้ใช้งานได้เกือบหมดแล้ว
ขั้นต่อไป คิดว่าจะกลับไปศึกษานับหนึ่งใหม่ อย่างที่ อ.สันติสุขแนะนำครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2671s