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

 278   5
URL.หัวข้อ / URL
เขียนคำสั่งรับค่า ให้ค่าได้อย่างไรครับ

Table1 มี ฟิลด์หลักดังนี้ครับ 1.Class (ระดับชั้นเรียน) 2. Room (ห้องเรียน)

Table2 มีฟิลด์หลักดังนี้ครับ
1.Class (ระดับชั้นเรียน) 2. Room (ห้องเรียน) 3. Name(ชื่อน.ร) 4. Lname (สกุล)


ฟอร์ม 1 จะเชื่อมกับ Table1 มี TxtClass กับ TxtRoom
เมื่อป้อนข้อมูล Class กับ Room แล้ว เมื่อคลิกที่ btnOpenForm2
ก็จะแสดงฟอร์ม 2 ขึ้นมา (ที่ฟอร์ม 2 เชื่อมกับ Table2 ซึ่งมี 4 ฟิลด์ครับ มี TextBox 4 ตัวครับ)

ทำอย่างไรครับ ถ้าต้องการ ให้ป้อนเฉพาะค่า Name กับ Lname โดยไม่ต้องป้อน Class กับ Room
แต่จะนำค่า Class กับ Room มาที่ Table2 เอง
โดยเอาค่าทั้ง 2 ค่า จาก Form1 หรือจาก Table1

-โดยที่ฟอร์ม 2 ไม่ต้องสร้างเป็น Subform และ นำมาแสดงในฟอร์ม 1
- และไม่ต้อง Link Child Field และ Link Master Field

============================
1. ถ้าจะใช้วิธีการเขียนโค้คดึงค่า จาก Textbox ในฟอร์ม 1 มาใส่ Textbox ที่ฟอร์ม 2 จะทำอย่างไรครับ
ในกรณีที่ฟอร์ม 2 มี Textbox ครบ 4 ตัว

2. ถ้าจะใช้วิธีการเขียนค่าจาก Table1.Field Class และ FieldRoom มาใส่
ใน FieldClass และ FieldRoom ของTable2 จะทำได้อย่างไรครับ
ในกรณีที่ฟอร์ม 2 มีแค่ Textbox Name กับ LastName ครับ
แต่ค่า Class+Room จะถูกบันทึกในTable2 ด้วย

ขอเรียนรู้แนวทางในการเขียนคำสั่งในลักษณะแบบนี้ด้วยครับว่าจะเขียนได้อย่างไรครับ

ขอขอบคุณอาจารย์ มากครับ

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

1 @R03562
คงต้องขอดูการออกแบบตารางต่างๆ ก่อนนะครับ เพราะจากที่ได้บอกว่า จะเห็นว่ามีการเก็บข้อมูลซ้ำกันอยู่

ผมว่าจะต้องแยกตารางออกเป็น 3 ตาราง โดยมีฟีลด์คร่าวๆ ดังนี้

Students: เก็บข้อมูลของนักเรียน
StudentID, FName, LName, ...

Rooms: เก็บข้อมูลของห้องเรียนต่างๆ
RooomID, BuildingName, ...

ClassRoom: เก็บข้อมูลการจัดการชั้นเรียน
AutoID, RoomID, StudentID

หรืออะไรทำนองนี้ครับ

ส่วนที่ถามว่า
-โดยที่ฟอร์ม 2 ไม่ต้องสร้างเป็น Subform และ นำมาแสดงในฟอร์ม 1
- และไม่ต้อง Link Child Field และ Link Master Field

ถ้าไม่ทำอย่างนี้ จะทำให้การจัดการคีย์ข้อมูลมีความยุ่งยาก และทำไม่ค่อยสะดวกเท่าที่ควร

ไม่แนะนำให้ทำอย่างนี้ครับ

แต่ถ้ามีเหตุผลเฉพาะ ก็ทำได้ครับ
ให้อ้างอิงข้อมูลจาก Form ที่ 1 ดังนี้

Me.Class = Forms!Form1!Class
Me.Room = Forms!Form1!Room


2 @R03568
ที่จริงตารางก็ไม่มีอะไรมากครับ ถ้าจะทำให้ถูกต้องก็คงจะทำแบบที่อาจารย์
แนะนำครับ คือแบ่งเป็น 3 แต่ว่าจุดมุ่งหมายอยากทราบวิธีการรับค่าส่งค่า
คืออ่านค่า ที่ได้ทราบก็อย่างที่อาจารย์แนะนำ มาคืออ้างอิงข้อมูลจาก Form1
ครับ แต่มีวิธีอื่นอีกหรือเปล่าครับในการอ่านค่า
เช่นอ่านจาก Table เลย เช่น

อ่านจาก Table1 ที่เก็บ Class มาใส่ใน Table2 Field Class
(ตัวนี้ไม่ต้องอาศัย Textbox ครับ )
คล้ายกับว่า
ตาราง2 ฟิลด์Class Curruent Recort = ตาราง 1ฟิลด์Class Curruent Recort คล้ายๆ แบบนี้ พอมีคำสั่งหรือเปล่าครับ
================
และอ่านจาก Table1 เรคคอร์ดสุดท้าย มาใส่ใน Textbox ที่ฟอร์ม2
(ซึ่งฟอร์ม 2 ปัจจุบัน เชื่อมโยงกับ Table2
แต่ว่า มีแค่ Textbox อันเดียวที่ต้องการอ่านค่าจาก Table1 ครับ
เมื่อได้ค่าจาก Tabel1 ตามต้องการแล้ว จะบันทึกค่าที่ได้ ลงใน Table2 ครับ
==============================
ขอบคุณ อ.สุภาพ ครับ
3 @R03569
ลองใช้ DLast() เข้าช่วยดูครับ อาจใช้กับ OnCurrent ของ Form2 เช่น

Private Sub Form_Current()
' ถ้าใส่ข้อมูลใหม่
If Me.NewRecord Then
Me.Class = DLast("Class","Table1")
Me.Room = DLast("Room","Table1")
End If
End If

ไม่รู้ว่าจะตรงกับความต้องการหรือเปล่านะ ลองปรับใช้ดูครับ

4 @R03570
ขอบคุณมากครับจะลองนำไปใช้ดูครับ
ถ้าไงมีปัญหาจะรบกวนถามอาจารย์อีกครั้งครับ
ขอบคุณมากครับสำหรับคำตอบที่มีประโยชน์
5 @R03574
ผมได้ลองใช้คำสั่งที่อาจารย์แนะนำทั้ง 2 อย่างแล้วครับ มันฟ้องว่า

Run-time error '2135'
คุณสมบัตินี้เป็นชนิดอ่านอย่างเดียว และไม่สามารถถูกตั้งค่าได้

จะแก้ไขอย่างไรครับ
ขอบคุณครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.1238s