กระทู้เก่าบอร์ด อ.Yeadram
        
           1,694   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.0639s
    
      
		
อาจต้องให้อาจารย์สันติสุขหรืออาจารย์สุภาพ หรืออาจารย์ท่านอื่นๆ ที่เกิดนานกว่าผม (อิอิ คือทันยุค Access97 นะครับ)
แต่ไหนๆ ก็เข้ามาอ่านเข้ามาตอบแล้ว มองโค้ดคร่าวๆ เลยอยากลองแนะนำบ้าง เผื่อจะฟลุ๊คถูก อิอิ
ผมสังเกตเห็น Set db = currentDB() อ่านตามโค้ดคร่าวๆ ก็คือ ให้ตัวแปรออบเจคตัวนี้เป็น ดาต้าเบสตัวกำลังรันนี้
แล้วถ้าเรา set ให้มันเป็น ดาต้าเบสตัวที่เราต้องการล่ะ เราทำไม ไม่ระบุไปตรงนี้เลย ได้หรือไม่ได้ ต้องลองดูครับ
เปลี่ยนเป็น
Set db= "D:\Database_new.mdb"
ส่วนโค้ดบรรทัดอื่นๆ ก็คงจะไม่ต้องเปลี่ยนอะไร ลองดูหรือยังครับ