เรียนอาจารย์ครับผมต้องการเปิด DB ผมมี Code ดังนี้
กระทู้เก่าบอร์ด อ.Yeadram

 1,535   9
URL.หัวข้อ / URL
เรียนอาจารย์ครับผมต้องการเปิด DB ผมมี Code ดังนี้

Private Sub Request_Click()

DoCmd.SetWarnings False
DoCmd.OpenQuery "DelNew"
DoCmd.OpenQuery "InsertNew"
Set db = CurrentDb()
Set tbnew = db.OpenRecordset("NEW", DB_OPEN_TABLE)
Me![no] = tbnew!runno
If Me!no <> 0 Then
Me!newcode = catTXT & Right(newperiod, 3) & "-" & Num1 & "-" & Num2 & "-" & Format(no + 1, "000")
Else
Me!newcode = catTXT & Right(newperiod, 3) & "-" & Num1 & "-" & Num2 & "-" & "001"
End If
DoCmd.OpenQuery "InsertMKTDetail"
DoCmd.SetWarnings True

Dim Genno As String

Genno = Me!newcode
MsgBox "APPLICATION NO : " & Genno, 48
db.Close
tbnew.Close
End Sub

คำถาม ผมต้องการเปิด Database ที่ชื่อ database_new.mdb ที่อยู่ Drive D: ทีนี้ผมต้องการ Table ที่ชื่อ New Field ที่ชื่อ Runno มาเก็บไว้ ที่Me!no ไม่ทราบว่าต้องทำอย่างไรครับอาจารย์เพราะมั่วจนไม่รอดแล้วอะครับ

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

1 @R09167
นี่มัน DAO ค่อนข้างจะเต็มรูปเลย ผมเกิดช้าไปหน่อย ผมถนัดแต่ ADO
อาจต้องให้อาจารย์สันติสุขหรืออาจารย์สุภาพ หรืออาจารย์ท่านอื่นๆ ที่เกิดนานกว่าผม (อิอิ คือทันยุค Access97 นะครับ)

แต่ไหนๆ ก็เข้ามาอ่านเข้ามาตอบแล้ว มองโค้ดคร่าวๆ เลยอยากลองแนะนำบ้าง เผื่อจะฟลุ๊คถูก อิอิ

ผมสังเกตเห็น Set db = currentDB() อ่านตามโค้ดคร่าวๆ ก็คือ ให้ตัวแปรออบเจคตัวนี้เป็น ดาต้าเบสตัวกำลังรันนี้

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

เปลี่ยนเป็น
Set db= "D:\Database_new.mdb"
ส่วนโค้ดบรรทัดอื่นๆ ก็คงจะไม่ต้องเปลี่ยนอะไร ลองดูหรือยังครับ

2 @R09170
ลองแบบนี้ดูครับ

Set db= OpenDatabase("D:\Database_new.mdb")

หรือจะใช้ Select Query เอาก็ได้ครับ

สร้าง Query ขึ้นมาใหม่อันหนึ่ง แล้วไม่ต้องเลือกตารางใดๆ แล้วไปคลิกที่ SQL แล้วเอา Statement นี้ใส่ลงไปครับ

SELECT runno from New In 'd:\database_new.mdb';


     
3 @R09173


Option Compare Database
Dim db As Database
Dim db1 As Database
Dim tbnew As Recordset

Private Sub CateID_cmb_Change()
catTXT = CateID_cmb.Column(0)
End Sub

Private Sub Period_cmb_Change()
newperiod = Period_cmb.Column(0)
End Sub

Private Sub Request_Click()

DoCmd.SetWarnings False
DoCmd.OpenQuery "DelNew"
DoCmd.OpenQuery "InsertNew"
Set db = CurrentDb()
Set tbnew = db.OpenRecordset("NEW", DB_OPEN_TABLE)
Me![no] = tbnew!runno
If Me!no <> 0 Then
Me!newcode = catTXT & Right(newperiod, 3) & "-" & Num1 & "-" & Num2 & "-" & Format(no + 1, "000")
Else
Me!newcode = catTXT & Right(newperiod, 3) & "-" & Num1 & "-" & Num2 & "-" & "001"
End If
DoCmd.OpenQuery "InsertMKTDetail"
DoCmd.SetWarnings True

Dim Genno As String

Genno = Me!newcode
MsgBox "APPLICATION NO : " & Genno, 48
db.Close
tbnew.Close
End Sub

อาจารย์ครับผมแนบรูปกับ Code มาให้ดูครับผมลองวิธีแบบอาจารย์ทั้งหมดแล้ว มัน มันจะDebug ตรง Set tbnew = db.OpenRecordset("NEW", DB_OPEN_TABLE) เพราะผมต้องการเอา Field ใน Table New มาใช้ครับ
4 @R09174
5 @R09175
6 @R09180
ผมเข้าใจว่าคุณต้องการเปิด ตาราง New จากฐานข้อมูล D:\Database_new.mdb


ซึ่งอาจารย์สุภาพ ก็ได้แนะคำสั่งไปแล้วนั่นคือคุณต้อง set ค่าตัวแปรให้ถูกซะก่อน อาจารย์ให้มาคือ Set db= OpenDatabase("D:\Database_new.mdb")

แต่จากรูปที่คุณแนบมา ยังเป็นเป็น currentdb() อยู่เลยครับ

ปัญหาบรรทัดที่เกิด error อาจจะเป็นไปได้ว่า มันมองไม่เห็นตาราง ชื่อ New
- ตารางชื่อ New อยู่ที่ฐานข้อมูลปัจจุบันมีหรือเปล่า
- ตารางชื่อ New อยู่ในฐานข้อมูลใดกันแน่

ถ้าโค้ดทั้งหมด คุณยังต้องการทำงานบนฐานข้อมูลปัจจุบันจริงๆ เพียงแต่ต้องการข้อมูลเพิ่มเติมอีกนิดหน่อยจากฐานข้อมูลอื่น (D:\Database_new.mdb) นั่นคือต้องการ ฟิลด์ runno จากตาราง New

อาจารย์สุภาพ ได้แนะนำแล้วว่า ไม่ต้องไปใช้โค้ดเชื่อมต่อให้ยุ่งยากก็ได้ เพียงแค่ใช้คิวรี่ select เอามาก็ได้ เพราะว่าเราต้องการแค่ข้อมูลเดียว

สร้าง Query ขึ้นมาใหม่อันหนึ่ง แล้วไม่ต้องเลือกตารางใดๆ แล้วไปคลิกที่ SQL แล้วเอา Statement นี้ใส่ลงไปครับ

SELECT runno from New In 'd:\database_new.mdb';


7 @R09182
ทำได้แล้วครับขอบคุณครับที่นี้ผมขอถามเพิ่มเติมคือผมต้องการฟิลด์นั้นมาเก็บไว้ในตัวแปรต้องทำอย่างไรครับ เพราะต้องการเอาค่ามันมาใช้ + 1 นะครับ
8 @R09187
ถ้าสมมติคุณ สร้างคิวรี่ ตามที่อาจารย์สุภาพแนะนำไว้แล้ว ชื่อคิวรี่ว่า
qrSLrunno

เวลาเขียนโค้ดในที่ใดๆ ก็ตาม เราอยากได้ค่าจากมัน ก็
dim strNo
strNo = dlookup("runno","qrSLrunno")
ค่ามันก็เข้ามาในตัวแปรแล้วครับ

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