ถามเรื่องการ copy
กระทู้เก่าบอร์ด อ.สุภาพ ไชยา

 721   29
URL.หัวข้อ / URL
ถามเรื่องการ copy

เห็น โปรแกรม clinic เวลาสั่งยาเป็นสูตรเช่น
A1 จะประกอบด้วยยา paracet
MTV
โดยเวลากดที่ A1 จะไปเพิ่มข้อมูลใน form ครับ

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

1 @R04883
ก็คงต้องเขียนโค้ดเข้าช่วย

โดยใช้ SQL Statement คล้ายๆ นี้

Dim dbs As Object
Set dbs = CurrentDb
dbs.Execute "insert into ตารางที่นำมาสร้างเป็นSubForm ([รหัสยา],[รหัสผู้ป่วย], ...) " _
& "values('รหัสยากที่อ้างอิงจากตัวที่เลือกในฟอร์มปัจุบัน', 'รหัสคนไข้จากฟอร์มข้างหลัง', ...)"
Forms!ชื่อฟอร์มหลัก!ชื่อSubForm.Requery
dbs.Close
Set dbs = Nothing

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

2 @R05105
อยากทำแบบนี้ได้บ้างเหมือนกันครับ
ลองทำแบบอาจารย์แล้ว อย่าง
"values('AA', 'BB', ...)" มันก็ก๊อปไปที่ฟอร์มหลักเป็นเท็กซ์ AA , BB
ทำยังไงให้มันก๊อปจากข้อมูลจากฟอร์มที่เปิดขึ้นมาใหม่ไปฟอร์มหลักครับ
อีกอย่างมันจะไปเพิ่มข้อมูลในฟอร์มหลัก
ถ้าเราจะให้มันไปอับเดทในเรคคอร์ดที่เปิดอยู่ที่ฟอร์มหลักได้หรือเปล่าครับ
อาจารย์ทำไฟล์ตัวอย่างให้ด้วยได้ก็ดีครับ

3 @R05107
อยากรู้ด้วยเหมือนกัน ท่านใดมีตัวอย่างบ้างค่ะ
4 @R05108
อาจารย์ช่วยทำให้ดูหน่อยครับ
5 @R05117
ขอดูด้วยคน
6 @R05118
สนใจครับ
7 @R05121
น่าจะได้นะครับ

"INSERT INTO ชื่อตารางที่นำมาทำเป็นSubForm ( รหัสผู้ป่วย, รหัสยา, ชื่อยา, จำนวน ) SELECT "& Forms!ชื่อฟอร์มหลัก!รหัสผู้ป่วย & ", รหัสยา, ชื่อยา, จำนวน FROM ชื่อตารางที่เป็นที่เก็บข้อมูลรหัสยา WHERE รหัสยา = '" & Forms!ชื่อฟอร์มที่เปิดขึ้นมาที่หลัง(สูตรยา)!ฟิลที่แสดงรหัสยา & "'"

Forms!ชื่อฟอร์มหลัก!ชื่อSubForm.Requery

งง
8 @R05125
ขอดูตัวอย่างด้วยครับ
9 @R05132
นี่เป็นตัวอย่างที่ผมทำใช้เองเป็นโปรแกรม บัญชีเล็กๆ และสามารถเลือกสูตรที่เราป้อนบ่อยๆได้ ก็น่าจะเอาไปประยุคใช้ได้นะครับ

ก่อนอื่นต้องเตรียมตารางสำหรับ เก็บสูตรก่อนในที่นี้คือ Template และ Template_Detail มีความสัมพันกันแบบ one-to-many (กรณีของคุณ 1 สูตรประกอบด้วยยาหลายตัว)

Private Sub Combo8_AfterUpdate()
On Error GoTo Combo8_Err:
Dim sql As String
Dim db As DAO.Database
Dim rs As DAO.Recordset



Set db = CurrentDb()


Me.Desc.Value = Me.Combo8.Column(1)


sql = "select * from tblTamplate_Detail where ID=" & Me.Combo8.Value
Set rs = db.OpenRecordset(sql)


sql = "delete * from tblDailyDetail where AccID=" & Me.AccID


DoCmd.SetWarnings False

db.Execute sql

Me.Refresh

Do While Not rs.EOF
sql = "insert into tblDailyDetail (AccID,AccCode,Dr,Cr) values(" & Me.AccID & ",'" & rs.Fields("AccCode") & "'," & _
rs.Fields("Dr") & "," & rs.Fields("Cr") & ");"

db.Execute sql

rs.MoveNext
Loop


Forms!frmDaily.Refresh
Me.tblDailyDetail_subform.Requery
DoCmd.SetWarnings True

Set rs = Nothing
Set db = Nothing
Exit Sub
Combo8_Err:
MsgBox Err.Number & ": " & Err.Description
End Sub

ถ้าไม่เข้าใจจะมาอธิบายใหม่นะครับ

10 @R05168
ขอรบกวนเป็นตัวอย่างได้ไหมครับ
11 @R05169
ขอดูด้วยค่ะ เพราะเป็นมือใหม่มาก ๆ เลย
12 @R05174
ผมทำตัวอย่างมาให้ดู ผมใช้ Access 2002(XP) และ Convert เป็น 97 ให้แล้วสำหรับท่านที่ยังใช้ 97 แต่ไม่รู้จะเปิดได้สมบูรณ์หรือป่าวนะครับยังไม่ได้ลองดู

ก็ลองดูตัวอย่างนะครับ จำรองมาอีกทีครับ ผิดพลาดประการได้ก็แจ้งมาได้ครับ
13 @R05182
ขอบคุณค่ะ จะได้นำไปศึกษาเพิ่มแล้ว
14 @R05194
ผมใช้วิธีการสร้างตัวแปร Global Variant ไว้

รับค่าฟิลด์นั้นๆ จากฟอร์ม lookup แล้วส่งกลับไปยังฟอร์มหลักอีกทีครับ
แล้วค่อยรัน dLookup เพื่อหาข้อมูลมาแสดงบนฟอร์มหลักครับ
15 @R05197
โห
16 @R05201
ขอถามเพิ่มหน่อยค่ะ
1.ถ้ารับยาเก่าที่ไม่ได้มีในสูตร จะทำอย่างไรค่ะ
2.gloal variant คืออะไรค่ะ แล้วมีหลักการใช้อย่างไร
17 @R05202
ขอดูตัวอย่างได้ไหมค่ะคุณ xyz ขอบคุณล่วงหน้าค่ะ
18 @R05203
ขอความกระจ่างครับคุณ xyz
19 @R05205
ขอเวลาผมนิดนึงละกัน เอาไว้จะตัดตัวอย่างจากโปรแกรมผมมา แล้วจะมาให้ดาวนโหลดครับ :-)

20 @R05207
ทำอย่างที่คุณ xyz บอกก็ได้ครับ แต่ถ้าเป็นผมจะไม่ทำตัวแปรมาเก็บ แต่จะสั่ง insert ข้อมูลในตารางเลย แล้ว สั่ง Requery ในฟอร์ม

สำหรับตัวอย่างที่ผมทำให้ถ้าอยากคีย์ยาเองและอยากสั่งเป็นสูตรด้วยให้ เอาส่วนที่เป็น Delete ออกครับ

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