แสดงกระทู้

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

หน้า: [1]
1
1.คำสั่ง DoCmd.RunSQL"......" 
    ผมเห็นมีหลายคำสั่งที่ใช้ได้ เช่น SELECT,UPDATE,INSERT INTO,DELETE,CREATE TABLE,ALTER TABLE,DROP TABLE
    ซึ่งลักษณะการใส่คำสั่ง เป็นลักษณะ DoCmd.RunSQL"SELECT [field name] FROM [table name]"
    ซึ่งถ้าผมจะสร้างคำสั่งนี้เป็น Function ไว้ใช้ใน Module อื่นๆ โดยอยากให้ [field name] และ [table name] เป็นตัวแปร
    จะสามารถทำได้ไหมครับ เช่น
    A = fieldname
    B = tablename
    DoCmd.RunSQL"SELECT A FROM B"
- .RunSQL method เป็นคำสั่งที่ต้องการ SQL statement ที่ไปทำอะไรกับข้อมูลเท่านั้น การอ่านเรคอร์ดออกมาเฉยๆด้วย SELECT statement นั้นใช้ไม่ได้กับ .RunSQL ครับ  แต่ถ้า SELECT ... INTO ... อันนี้ใช้ได้ เพราะเป็นการสร้างเรคอร์ดที่ได้จากการอ่านอีกที
- ทำเป็นฟังก์ชั่นได้ครับ แต่ผมไม่เห็นประโยชน์ในการทำอย่างนั้น เพราะฟังก์ชั่นจะมีแค่คำสั่งเดียวอยู่ดี ซึ่งไม่แตกต่างอะไรกับการสั่ง .RunSQL ตามธรรมดาๆเลย

2.คำสั่งต่างๆที่อ.สันติสุขให้ผมมาเพิ่มเติมเช่น DLookUp,DFirst,... เป็นคำสั่งของ SQL ใช่ไหมครับ ถ้าเป็น SQL ผมก็สงสัยแบบข้างบนน่ะครับ
- ไม่ใช่ครับ เป็นฟังก์ชั่นของตัว Access เอง ไม่ได้ผ่าน DAO/ADO แต่อย่างใด ทำงานได้เทียบเท่าบางคำสั่งของ SQL เท่านั้น

3.วิธีที่อ.สันติสุขแนะนำคือให้ Excel ไปสร้างตารางใน Access หรือ ให้ Access ไปอ่านค่าจาก Excel มาสร้างตารางครับ
    ผมงงตรงที่ อ.สันติสุข พูดถึงการอ่านค่าใน tblFactor ใน Excel เพื่อไปใส่ค่าใน Access ทีละ Record ครับ
- เพราะเห็นบอกว่าการป้อน tblFactor ลง Access ตรงๆ (เทเบิลที่มีฟิลด์ Row Header, Column Header, Pivot Value) อาจมี human error ได้ ผมก็เลยคิดว่างั้นก็ป้อนเป็นตารางใน Excel อย่างเดิมที่ส่งรูปมานี่แหล่ะ แต่ให้โค้ด VBA ใน Access อ่านตารางนี้ แล้วแปลง 1 pivot ใส่เป็น 1 เรคอร์ดลงเทเบิล tblFactor ใน Access อีกที (พอดีใช้ชื่อเดียวกันก็เลยทำให้สับสน)

4.Excel.Application คือคำสั่งให้ Access สามารถใช้งานคำสั่งใน Excel ได้รึเปล่าครับ ผมหาวิธีค้นหาในเวปนี้ไม่เจอน่ะครับ เห็นช่องค้นหา
   ในหน้าแรกแล้วไปค้นหาใน Google
- เป็น keyword ที่จะช่วยหากระทู้เก่าที่พูดคุยถึงโค้ดที่จะอ่านข้อมูลจาก Excel เท่านั้นครับ ลองดูอันนี้ น่าจะใกล้เคียงครับ www.thai-access.com/yeadram_view.php?topic_id=4430

5.สอบถามเพิ่มเติมเกี่ยวกับชื่อ table ครับ พอดีผม Import ข้อมูลออกมาจากโปรแกรมคำนวนทางวิศวกรรม
    แล้วชื่อเป็นลักษณะ [Frame Force Assignments] เลยอยากทราบว่าชื่อ Table ควรไม่มีเว้นวรรครึเปล่าครับ
    ผมจะสามารถลบเว้นวรรค หรือ แทนค่าเป็น _ จาก table ที่ผม Import 30 กว่า table ด้วย vba หรือ sql ได้ไหมครับ
- Access/DAO/ADO รองรับชื่อที่มี space อยู่ภายในได้ เวลาอ้างถึงก็เพียงใส่ [ ] ครอบชื่ออย่างที่คุณเขียนมานี่แหล่ะครับ

ขอบพระคุณ อ.สันติสุข มากๆเลยครับ
- ขอบคุณครับ
โพสต์นี้ได้รับคำขอบคุณจาก: Parnu

2
- ถ้าจะไม่ต้องยุ่งกับ DAO/ADO เลยก็คือ สั่ง INSERT/UPDATE/DELETE ผ่านคำสั่ง
  DoCmd.RunSQL "INSERT/UPDATE/DELETE statement"

- อ่านค่าฟิลด์จากเรคอร์ด (อ่านได้เรคอร์ดเดียวเท่านั้น)
  ตัวแปร = DLookup("ชื่อฟิลด์", "ชื่อเทเบิล/คิวรี่", "เงื่อนไขการเลือกเรคอร์ด")

- อ่านค่าฟิลด์จากเรคอร์ดแรก/สุดท้ายที่หาได้
  ตัวแปร = DFirst/DLast("ชื่อฟิลด์", "ชื่อเทเบิล/คิวรี่", "เงื่อนไขการเลือกเรคอร์ด")

- อ่านค่าฟิลด์ที่มากสุด/น้อยสุดจากเรคอร์ดที่หาได้
  ตัวแปร = DMax/DMin("ชื่อฟิลด์", "ชื่อเทเบิล/คิวรี่", "เงื่อนไขการเลือกเรคอร์ด")

- อ่านจำนวนเรคอร์ดที่หาได้
  ตัวแปร = DCount("ชื่อฟิลด์", "ชื่อเทเบิล/คิวรี่", "เงื่อนไขการเลือกเรคอร์ด")

- อ่านค่าเฉลี่ยของฟิลด์จากเรคอร์ดที่หาได้
  ตัวแปร = DAvg("ชื่อฟิลด์", "ชื่อเทเบิล/คิวรี่", "เงื่อนไขการเลือกเรคอร์ด")

- อ่านค่าผลรวมของฟิลด์จากเรคอร์ดที่หาได้
  ตัวแปร = DSum("ชื่อฟิลด์", "ชื่อเทเบิล/คิวรี่", "เงื่อนไขการเลือกเรคอร์ด")

- กรณีอ่าน tblFactor ใน Excel คิดว่าคุณคงทำได้อยู่แล้ว ก็ลูปไปทีละบรรทัด จนกว่าหัวคอลัมน์จะว่างๆ (ไม่มี Type ต่อไปแล้ว) ก็จะขึ้นบรรทัดใหม่ ถ้าหัวบรรทัดว่างๆ ก็แปลว่าไม่มี Case ต่อไปแล้ว ส่วนค่า Pivot ก็เอาเฉพาะที่ไม่เป็นค่าว่างเขียนลง tblFactor ใน Access และเนื่องจากเราสร้างโครงสร้างเทเบิลให้เรคอร์ดนึงมี 3 ฟิลด์ คือ Row Header, Column Header, Pivot Value ดังนั้นไม่ว่าใน Excel จะมีกี่ Type (Column) กี่ Case (Row) เราก็เอาลงเทเบิลใน Access ทีละเรคอร์ดได้ไปเรื่อยๆโดยไม่ต้องแก้โครงสร้างใดๆครับ

- สำหรับคำสั่งให้ Access ไปอ่านไฟล์ Excel   คุณลองค้นด้วยคำว่า Excel.Application ในเวปนี้ดูครับ
โพสต์นี้ได้รับคำขอบคุณจาก: Parnu

3
tblFactor สร้างใน Access ไปเลยได้ไหม ให้อยู่ในรูปแบบ Row Header, Column Header, Pivot Value เช่น

1,A,1
1,B,2
2,A,1
2,B,1
2,C,2
3,A,2

tblType ก็นำเข้า Access เช่นกัน ใช้โครงสร้างตามที่คุณเขียนมาได้
โพสต์นี้ได้รับคำขอบคุณจาก: Parnu

หน้า: [1]