เขียนcode Access อย่างไรค่ะ
กระทู้เก่าบอร์ด อ.สุภาพ ไชยา

 336   8
URL.หัวข้อ / URL
เขียนcode Access อย่างไรค่ะ

คืออันนี้ copy มาจาก query ค่ะ ต้องแปลงให้เป็น code น่ะ ถ้าจะเขียนให้ถูกต้องทั้งหมดต้องเขียนอย่างไรค่ะ
INSERT INTO acc_salary ( DataID, PersonId, TypeYear, TypeMonth, PayDate, NotShop, KeyDate, Tax )
SELECT acc_salarydata.dataid, acc_salarydata.personid, acc_salarydata.TypeYear, acc_salarydata.TypeMonth, acc_salarydata.Paydate, acc_salarydata.Receive, acc_salarydata.KeyDate, acc_salarydata.tax
FROM acc_salarydata
WHERE (((acc_salarydata.TypeYear)=[forms]![Frm_Add_NewDr]![text30]) AND ((acc_salarydata.TypeMonth)=[forms]![Frm_Add_NewDr]![text33]) AND ((acc_salarydata.Paydate)=[forms]![Frm_Add_NewDr]![text6]) AND ((acc_salarydata.KeyDate)=[forms]![Frm_Add_NewDr]![text4]) AND ((acc_salarydata.ItemID)=27));

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

1 @R02823
แล้แต่จุดประสงค์ของการเขียนครับ

เช่นจะเขียนเพื่อสั่งให้โค้ดนี้ทำงาน ลองแบบนี้ครับ

Private Sub Test()
Dim dbs As Object, strSQL As String
Set dbs = CurrentDb
strSQL = "INSERT INTO acc_salary ( DataID, PersonId, TypeYear, TypeMonth, PayDate, NotShop, KeyDate, Tax ) " _
& "SELECT acc_salarydata.dataid, acc_salarydata.personid, acc_salarydata.TypeYear, " _
& "acc_salarydata.TypeMonth, acc_salarydata.Paydate, acc_salarydata.Receive, acc_salarydata.KeyDate, " _
& "acc_salarydata.tax " _
& "FROM acc_salarydata " _
& "WHERE (((acc_salarydata.TypeYear)=[forms]![Frm_Add_NewDr]![text30]) " _
& "AND ((acc_salarydata.TypeMonth)=[forms]![Frm_Add_NewDr]![text33]) " _
& "AND ((acc_salarydata.Paydate)=[forms]![Frm_Add_NewDr]![text6]) " _
& "AND ((acc_salarydata.KeyDate)=[forms]![Frm_Add_NewDr]![text4]) " _
& "AND ((acc_salarydata.ItemID)=27));"
dbs.Execute strSQL
dbs.Close
Set dbs = Nothing
End Sub

ลองปรับใช้ดูครับ


2 @R02831
Dim dbs As Object, strSQL As String
Set dbs = CurrentDb
แล้วสองบรรทัดนี้คืออะไรค่ะ
3 @R02834
Dim ทั้งหลาย เป็นการประกาศตัวแปรสำหรับใช้ในฟังก์ชันของเราครับ

ผมประกาศตัวแปร dbs ให้เป็น Object และ strSQL ให้เป็น String

จากนั้นค่อยบอกว่า dbs คือ Object อะไร ซึ่งก็คือบันทัดถัดมาครับ คือ CurrentDb ซึ่งหมายถึง ตัวฐานข้อมูลที่เปิดอยู่

ให้ลองดูกระทู้ http://www.thai-access.com/suphap.php?topic_id=1178 เพิ่มเติมครับ

ตกลงจะให้แปลง SQL ให้เป็นโค้ดเพื่อวัตถุประสงค์อะไรครับ
4 @R02837
คือว่าเคยไปอ่านกระทู้ของ เวบนี้แล้วเพื่อนสมาชิกบอกว่า การเขียน code จะสามารถทำให้การทำงานเร็วขึ้นใช่หรือไม่ ซึ่งทุกครั้งหนูจะทำใน query เป็นส่วนมากก้อเลย ทำเป็น code ไม่เป็นค่ะ ต้องปรึกษาอาจารย์อีกเยอะ ช่วยแน่ะนำด้วยน่ะค่ะ
5 @R02838
อาจารย์ค่ะจริงหรือเปล่าที่ใช้ code ที่กำหนดให้ค่าเป็น string สามารถส่งค่าได้แค่ 255 อักขระ แล้วถ้าตัวหนังสือมากกว่านี้จะทำอย่างไหรค่ะ แล้วcode ที่อาจารย์เขียนให้สามารถนำไปใช้ได้เลยรึเปล่า ค่ะ
6 @R02845
เขียน Code ไม่เป็นเหมือนกัน ทำใน Query ทั้งหมด ปัญญาอ่อนไหม
7 @R02851
ก็ยังเป็นที่ถกเถียงกันอยู่นะครับว่า Stored Queries หรือเรียกอีกอย่างหนึ่งว่า Predefined Queries / Saved Queries หรือ Queries ต่างๆ ที่ได้สร้างแล้วบันทึกไว้ จะทำงานได้ไวกว่า SQL Statement ที่เขียนจากโค้ด

แต่ผมว่าถ้าเป็น Select Query ถ้าเป็น Stored Query จะทำงานไว้กว่าครับ

แต่ถ้าเป็น Action Queries ทั้งหลาย ผมว่าใช้ผ่านโค้ดจะไวกว่ามากนะครับ

ส่วนถ้าตัวแปรแบบ String นั้นสามารถรับได้เยอะนะครับ ผมยังไม่เคยเจอว่ามันมีขีดจำกัดอยู่ที่เท่าไร เพราะผมเคยส่งค่าจากฟีล์ดที่เป็น Memo ไปเก็บไว้ใน String ข้อความก็ไม่ได้ถูกตัดทอนไปครับ

ส่วนการเขียน SQL Statement ผมเองก็ไม่ค่อยจะชอบเขียนเองเท่าไรครับ มักจะให้ Access ทำให้โดยสร้างเป็น Query ก่อน โดยเฉพาะ Query ที่ซับซ้อนมากๆ แล้วนำ SQL ที่ได้ไปเขียนเป็นโค้ดอีกทีหนึ่งครับ ส่วนมากไม่ต้องปรับอะไรอีก

ค่อยๆ ศึกษาไปเรื่อยๆ ครับ อย่าท้อแท้ก่อนก็แล้วกัน

*** Edited by Supap Chaiya *** 5/14/2003 9:13:12 PM
8 @R02868
ตอนแรกก้อใช้ query ค่ะ แต่เวลาทำงานเชื่อมโยงกับฐานข้อมูลแล้วจะค่อนข้างช้ามากค่ะ แต่ถ้าใช้เป็นแบบเครื่อง standalon ก้อจะปกติ ส่วนเรื่องของ ตัวแปร string ก้อไม่รู้จะทำงัยค่ะ เพราะลองใส่อักษรมากกว่า 255 ไม่ได้เลย ค่ะ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.0612s