ตรวจสอบว่ามี Table อยู่หรือไม่ มีกี่วิธี
กระทู้เก่าบอร์ด อ.Yeadram

 1,166   7
URL.หัวข้อ / URL
ตรวจสอบว่ามี Table อยู่หรือไม่ มีกี่วิธี

บ่อยครั้งที่เราเขียนสร้าง table หรือ import table เข้ามาไม่ได้เพราะมี table เดิมอยู่แล้ว

อยากถามว่าท่านอื่นใช้วิธีตรวจสอบว่ามี table... นี้อยู่หรือไม่อย่างไรกันบ้างครับ
อยากขอแชร์วิธีการ

สำหรับผมแล้วใช้วิธี

If Dcount("*","msysObjects","[Name] = 'Table...') Then
   ...
End If

ท่านอื่นหละครับ ใช้แบบผมหรือไม่


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

1 @R19522
อย่าไปยุ่งอะไรกับ system table จะดีกว่านะครับ

วิธีคือ

Dim F as Form
Dim Found as Boolean

Found = False
For Each F in CurrentProject.AllForms
   If F.Name = "ชื่อที่ต้องการค้นหา" Then
      Found = True
      Exit For
   End If
Next

ถ้าตัวแปร Found ให้ค่า True ก็แปลว่ามีชื่อเทเบิลที่ต้องการครับ
2 @R19524
เท่าที่นึกออกก็มี 3 วิธีสำหรับการดูชื่อตาราง คือ แบบ
1. ดูในตารางระบบ msysObjects
2. ดูโดยใช้ DAO
3. ดูโดยใช้ ADO

ซึ่งแบบ 2 กับ 3 จะคล้ายกันเพียงแต่เป็นคนละภาษา แต่จะความสามารถในการดูชื่อตารางจากไฟล์ภายนอกได้ด้วย

ปล. แบบของ อ.สันติสุข น่าจะดูชื่อฟอร์มนะครับ
3 @R19525
อ้าว ตาลายแล้วผม
4 @R19526
Dim DB as DAO.Database
Dim T as DAO.TableDef
Dim Found as Boolean

Found = False
Set DB = CurrentDB
For Each T in DB.TableDefs
   If T.Name = "ชื่อที่ต้องการค้นหา" Then
      Found = True
      Exit For
   End If
Next
5 @R19532
ทำไมถึงไม่ให้ไปยิ่งกับ system table หละครับ
6 @R19533
ถ้าทาง Microsoft แก้ไข system table   Microsoft ก็ไม่จำเป็นต้องแจ้งผู้พัฒนาว่าฉันจะแก้ไข system table แล้วนะ (และเชื่อว่าจะไม่แน่นอน) เพราะมันเป็นเทเบิลที่ใช้โดยระบบ Microsoft Access เอง   เขาไม่ได้ออกแบบมาเพื่อให้ผู้พัฒนาเข้าถึงส่วนนี้โดยตรง เขามีฟังก์ชั่นเพื่อให้เราทำงานตรงนี้อยู่แล้ว และเราก็จะไม่ต้องมานั่งปวดหัวแก้โปรแกรมเมื่อ system table เปลี่ยนไปด้วยครับ
7 @R19534
ออ... ขอบคุณครับ

ผมใช้ซะเยอะเลย
ทั้งใช้ตรวจสอบว่ามี table นั้นอยู่หรือไม่
ใช้ query หา 3 table ล่าสุด

ผมว่ามันสะดวกดี ^^
อย่างตอน query หา 3 table ล่าสุด
ตอนแรกก็คิดแบบ For Each T in DB.TableDefs
แต่ก็คิดไม่ออก
เอ๊ะ นี่ต้องลิสท์ table ทั้งหมดมาเก็บไว้ก่อน
แล้วค่อย sort หา 3 รายการล่าสุด
...พอดีนึกขึ้นได้ว่ามี msysobjects ก็เลยเข้าไป query เอาเลย
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3070s