นำข้อมูลที่หน้าฟอร์ม ไปเก็บลงตาราง
กระทู้เก่าบอร์ด อ.Yeadram

 12,186   11
URL.หัวข้อ / URL
นำข้อมูลที่หน้าฟอร์ม ไปเก็บลงตาราง

คือผมต้องการนำข้อมูลที่อยู่หน้าฟอร์ม ไปเก็บไวที่ตาราง ซึ่งผมสร้างตารางไว้ 3 ตาราง โดยที่ต้องคลิกปุ่ม command Button เพียงครั้งเดียว ต้องเขียนคำสั่งอย่างไรครับ
ตัวอย่าง ชื่อตารางมี
Tables1
Tables2
Tables3

ข้อมูลที่อยู่หน้าฟอร์ม มี 3 แถว
แถวที่1 ให้ Text Box = sec223, sec224 ให้ไปอยู่ในตาราง Tables1
แถวที่2 ให้ Text Box = sec333, sec334 ให้ไปอยู่ในตาราง Tables2
แถวที่3 ให้ Text Box = sec443, sec444 ให้ไปอยู่ในตาราง Tables3

แต่คำสั่งที่ผมใช้ก็บันทึกได้แค่ที่ละ ตาราง
ตัวอย่างคำสั่งครับ
Dim myDB As Database
Dim mySet As DAO.Recordset
Set myDB = DBEngine.Workspaces(0).Databases(0)
Set mySet = myDB.OpenRecordset("Tables1", dbOpenDynaset)
    mySet.AddNew
    mySet![dDiecast 135] = sec223
    mySet![dDiecast 250] = sec224
    mySet.Update
    mySet.Close
    myDB.Close
End Sub



ขอบคุณครับ



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

1 @R01415
ใช้การรัน คิวรี่ ดีกว่าครับ ไม่ต้องใช้ dao

Private Sub Commman_click()
docmd.setwarnings false
DoCmd.GoToRecord acDataForm, Me.Name, acFirst
docmd.runsql "Insert into table1(ชื่อฟิลด์, ชื่อฟิลด์) values(" & sec223 & ", " & sec224 & ")"
DoCmd.GoToRecord acDataForm, Me.Name, acNext, 1
docmd.runsql "Insert into table2(ชื่อฟิลด์, ชื่อฟิลด์) values(" & sec333 & ", " & sec334 & ")"
DoCmd.GoToRecord acDataForm, Me.Name, acNext, 1
docmd.runsql "Insert into table3(ชื่อฟิลด์, ชื่อฟิลด์) values(" & sec443 & ", " & sec444 & ")"
End sub
2 @R01602
ช่วยอธิบาย คำสั่งที่ละบรรทัดได้ไหมค่ะ มือใหม่ไม่เข้าใจค่ะ
3 @R01607
คำสั่งของอันไหนครับ
ในโจกท์ หรือในความเห็นของผม
4 @R01637
ความเห็นของอาจารย์ Yeadram ค่ะ
ขอบคุณค่ะที่เสียสละเวาลาตอบคำถาม
5 @R01645
ลักษณะงานที่ โปรแกรมย่อย (Procedure) นี้ทำ คือการสั่งบันทึกข้อมูลครับ
โดยให้ VBA (ภาษาการเขียนโปรแกรมขั้นสูงชนิดหนึ่ง ที่ประยุกต์มาจาก Visual Basic)   ทำงานร่วมกับ SQL (ภาษาการเขียนโปรแกรมขั้นสูง ชนิดหนึ่ง ที่มีรูปแบบคำสั่ง เพื่อจัดการกับข้อมูล ในฐานข้อมูล)

Private Sub Command_Click() เป็นชื่อโปรแกรมย่อย สังเกตแล้วจะเห็นว่าเป็นโปรแกรมย่อย ที่ผูกกับเหตุการณ์ ตอนที่ ปุ่มคำสั่งที่ชื่อ Command ถูกคลิ๊ก หรือเราจะเรียกโปรแกรมย่อยนี้ รวมๆ ว่า Event Procedure (โปรแกรมย่อยตามเหตุการณ์)
และมันจะต้องมีบรรทัดคำสั่ง เพื่อบ่งบอก VBA ว่า โปรแกรมย่อยนี้สิ้นสุด ตรงไหนด้วย นั่นคือ บรรทัดสุดท้าย End Sub เสมอ

ภายในโปรแกรมย่อยนี้ มี 7 บรรทัด
บรรทัดคู่ 2-3 จะเหมือนๆ กับ บรรทัด 4-5 และ 6-7 ดังนั้นผมจะตัดการอธิบายของบรรทัด ตั้งแต่ 4 ไปจน 7 ไม่นำมากล่าว

บรรทัดที่ 3 :
docmd.runsql "Insert into table1(ชื่อฟิลด์, ชื่อฟิลด์) values(" & sec223 & ", " & sec224 & ")"
(1) docmd.Runsql อันนี้เป็นคำสั่งของภาษา VBA เพื่อจะสั่งให้รัน ชุดคำสั่ง SQL

(2) "Insert into table1(ชื่อฟิลด์, ชื่อฟิลด์) values(" & sec223 & ", " & sec224 & ")" อันนี้เป็นชุดคำสั่งภาษา SQL เพื่อให้นำข้อมูลจากคอนโทรลบนฟอร์ม ที่ชื่อ sec223(ชื่อคอนโทรล) กับข้อมูลบนฟอร์มที่อยู่ในช่อง sec224 เข้าไปบันทึกในตาราง ชื่อ Table1 ** ถ้าสงสัยส่วนนี้อีก ต้องศึกษาการเขียนคำสั่ง SQL เพิ่มเติมครับ

(3) คำสั่งในบรรทัดที่ 1 : docmd.setwarnings false
เป็นคำสั่งของ VBA สั่งไว้เพื่อเป็นงานช่วย คำสั่งใน (1) เพราะทุกครั้งที่มีการใช้คำสั่งใน (1) มันมักจะมีข้อความเตือนหรือข้อความที่ขอความมั่นใจประมาณว่า "คุณแน่ใจหรือไม่ที่จะทำสิ่งนี้" ขึ้นมาเตือนเสมอ แล้วเราก็ต้องคอยตอบ "OK" ทุกครั้งไป ดังนั้นคำสั่งบรรทัดที่ 1 นี้ จึงเป็นคำสั่งไปบอกมันว่า "ไม่ต้องเตือนหรอก ทำงานไปเหอะ"

(4) บรรทัดที่ 2, 4, 6
DoCmd.GoToRecord acDataForm, Me.Name..................
เป็นคำสั่ง VBA ใช้เลื่อนเคอร์เซอร์บนฟอร์ม ไห้ไปที่เรคคอร์ดที่เราต้องการ สมมติเช่น เมื่อเราเปิดฟอร์ม เคอร์เซอร์ ตัว ไอ-บีม (I-beam) มันจะกระพริบที่ บรรทัดแรก (ฟอร์มแบบคอนทินิวอัส) ถ้าเคอร์เซอร์มันอยู่ตรงบรรทัดนี้ เรคคอร์ดนี้ เมื่อเรามีการอ้างถึงข้อมูลในคอนโทรล มันจะเอาข้อมูลจากบรรทัดนี้เท่านั้น คือมันจะสนใจเฉพาะข้อมูลในบรรทัดที่เคอร์เซอร์อยู่   
ดังนั้นเมื่อเราต้องการอ้างถึงข้อมูลในบรรทัดไหนๆ เราจึงต้องสั่งให้เคอร์เซอร์เลื่อนไปอยู่ที่บรรทัดนั้นๆ ก่อน ค่อยทำการอ้างอิง

งง ไหมครับ
ไม่น่างงนะ เอาแบบภาษาชาวบ้านๆ ที่สุดแล้วนะเนี่ย อิอิ


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


ขอบคุณทุกท่านครับ

paitoon
7 @R04903
คุณ yeadram ครับ
ถามเกี่ยวกับการเขียน code ในการ insert ข้อมูลลงตารางครับ แล้วลงใน query ได้ไหมครับ โดยใน form มี combo box ด้วยครับ ตอนนี้งงมากครับ มือใหม่ครับ
8 @R04910
ตอนนี้งงมากเหมือนกันครับ อิอิ

insert คือการสั่งให้นำข้อมูลไปเก็บ โดยปกติแล้ว การจัดการข้อมูลเราเก็บข้อมูลในตารางอยู่แล้ว ครับ ไม่มีการเก็บในคิวรี่
ดังนั้น ไม่ต้องไป insert เข้าคิวรี่ครับ
- คิวรี่บางชนิดเพิ่ม หรือแก้ไขข้อมูลไม่ได้ อันนี้ Insert ไม่ได้แน่นอน
- คิวรี่บางชนิดเพิ่ม หรือแก้ไขข้อมูลได้ แต่เราก็ควรมองหาแหล่งข้อมูลของคิวรี่ แล้วนำข้อมูลไปเข้าตรง ที่แหล่งนั้นดีกว่าครับ ไม่ควรเข้าผ่านคิวรี่

.............. โดยในฟอร์ม มี Combo box อยู่ด้วย .......... ?!?!

เอ๋ ผมตอบตรงประเด็นหรือเปล่าเนี่ย ตอนนี้ผมก็งงมากเหมือนกันครับ
9 @R05011

ขอบคุณมากครับ สำหรับคำตอบ ผมเพิ่งหัดทำครับ ช่วยแนะนำทีครับ ผมต้องการนำข้อมูลจาก form เก็บลงใน table ครับ
10 @R05349
อยาก insert จากฟอร์ม 2 ฟอร์ม มาเก็บไว้ในตารางเดียวกันอ่ะค่า ทำได้ไหมค่า
11 @R05424
-ไม่เข้าใจคำถาม คุณ pinkgirl ครับ
- คุณเล็กครับ ตอนสร้างฟอร์ม ได้ใช้ วิซาร์ด พาสร้างหรือเปล่าครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2746s