กระทู้เก่าบอร์ด อ.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 ไม่ทราบว่าต้องทำอย่างไรครับอาจารย์เพราะมั่วจนไม่รอดแล้วอะครับ
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
2 @R09170
ลองแบบนี้ดูครับ
Set db= OpenDatabase("D:\Database_new.mdb")
หรือจะใช้ Select Query เอาก็ได้ครับ
สร้าง Query ขึ้นมาใหม่อันหนึ่ง แล้วไม่ต้องเลือกตารางใดๆ แล้วไปคลิกที่ SQL แล้วเอา Statement นี้ใส่ลงไปครับ
SELECT runno from New In 'd:\database_new.mdb';
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 มาใช้ครับ
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 เอามาก็ได้ เพราะว่าเราต้องการแค่ข้อมูลเดียว
ซึ่งอาจารย์สุภาพ ก็ได้แนะคำสั่งไปแล้วนั่นคือคุณต้อง 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")
ค่ามันก็เข้ามาในตัวแปรแล้วครับ
ลองดูครับ
qrSLrunno
เวลาเขียนโค้ดในที่ใดๆ ก็ตาม เราอยากได้ค่าจากมัน ก็
dim strNo
strNo = dlookup("runno","qrSLrunno")
ค่ามันก็เข้ามาในตัวแปรแล้วครับ
ลองดูครับ
9 @R09189
ขอบคุณครับได้แล้วครับ
Time: 0.2858s
อาจต้องให้อาจารย์สันติสุขหรืออาจารย์สุภาพ หรืออาจารย์ท่านอื่นๆ ที่เกิดนานกว่าผม (อิอิ คือทันยุค Access97 นะครับ)
แต่ไหนๆ ก็เข้ามาอ่านเข้ามาตอบแล้ว มองโค้ดคร่าวๆ เลยอยากลองแนะนำบ้าง เผื่อจะฟลุ๊คถูก อิอิ
ผมสังเกตเห็น Set db = currentDB() อ่านตามโค้ดคร่าวๆ ก็คือ ให้ตัวแปรออบเจคตัวนี้เป็น ดาต้าเบสตัวกำลังรันนี้
แล้วถ้าเรา set ให้มันเป็น ดาต้าเบสตัวที่เราต้องการล่ะ เราทำไม ไม่ระบุไปตรงนี้เลย ได้หรือไม่ได้ ต้องลองดูครับ
เปลี่ยนเป็น
Set db= "D:\Database_new.mdb"
ส่วนโค้ดบรรทัดอื่นๆ ก็คงจะไม่ต้องเปลี่ยนอะไร ลองดูหรือยังครับ