Tìm thủ thuật nhanh hơn với chức năng tìm trong Blog

14/11/09

Code kiểm tra sự tồn tại của table


Public Function KIEMTRA(TableName As String)As Boolean
   ' Khai báo biến cục bộ truy xuất đến Database Access
     Dim DB As Database
   ' Biến N lưu trữ số Tables của Database (dùng Byte là đủ)
     Dim N As Byte
   ' Biến i để duyệt qua từng Table
     Dim i As Byte
   ' Khởi tạo biến DB
    Set DB = DBEngine.Workspaces(0).Databases(0)
   ' Lấy số Tables có trong Database
    n = DB.TableDefs.Count
  ' Duyệt tuần tự từng Table
    For i = 0 To n - 1
         ' Nếu tên Table thứ i bằng với tên Table muốn tìm
         If DB.TableDefs(i).Name = TableName Then
             ' Hàm trả về giá trị TRUE
              KIEMTRA = True
             ' Thoát khỏi hàm
               Exit Function
          End If
     ' Chuyển qua Table kế
       Next i
     ' Nếu ra khỏi vòng lặp mà vẫn chưa tìm thấy thì hàm trả về False
       KIEMTRA = False
  End Function
____________________________________________________________________________________
Thảo luận thêm tại: http://thuthuataccess.co.cc/forum

5 nhận xét:

  1. Nặc danh17:43 14/12/09

    Có thể dùng For Each table in DB được không bác Noname:
    Function Kiemtra(TableName as string) as boolean
    Dim DB as Database
    Dim table as tabledefs
    Set DB = currentdb()
    For Each table in DB.TableDefs
    If table = TableName
    KIEMTRA = True
    Exit Function
    End if
    Next Table
    KIEMTRA = False
    End Function

    Sent by: haquocquan

    Trả lờiXóa
  2. Cũng được. Nhưng chú ý chỗ phát biểu If
    If Table.Name = TableName then

    Trả lờiXóa
  3. Nặc danh07:47 17/12/09

    Thanks voi doan code kiem tra su ton tai cua table cua ban nhe! Vi minh dang can no!
    Nhung o vong lap for, ban nen gan i=0, neu khong se khong tim thay table dau tien
    trong csdl neu no la table dang can tim!

    Trả lờiXóa
  4. Cảm ơn bạn góp ý! :) Mình sẽ sửa lại! :)

    Trả lờiXóa
  5. Cám ơn các anh em! Xưa mình học Visual Fox... 2.0. Nay mày mò access! Mấy hôm nay theo dõi chủ đề này và đã làm được một đoạn code. Hiện nó đã tạo được thư mục, tạo được file database và table trong thư mục đó.
    Mong quý anh em xem xét góp ý thêm!
    Mình có ý định là làm sao để sau khi tạo csdl, các bảng, sẽ tiếp tục tạo liên kết giữa các bảng đó, rồi lấy dữ liệu từ các bảng trong file cơ sở dữ liệu khác đưa vào các bảng của csdl trong thư mục vừa tạo luôn.
    Rất mong sự chỉ giáo!
    Sub create_F_D_T()
    Dim tenfolderTest As String
    Dim thang As String
    Dim duongdan As String
    Dim csdl As Database
    Dim tencsdl As String
    Dim bang As TableDef
    Dim tenbang As String
    Dim i As Integer
    i = 0

    duongdan = Application.CurrentProject.Path
    tenfolder = duongdan & "\" & Trim(Str(Year(Date)))
    thang = Format(Trim(Str(Month(Date) - 1)), "00")
    tencsdl = tenfolder & "\" & Trim(Str(Year(Date)))
    tenbang = thang
    ' create folder "tenfolder" if not exists

    If Dir(tenfolder, vbDirectory) = "" Then
    MsgBox "Tao thu muc"
    MkDir tenfolder
    End If
    ' create database "tencsdl" if not exists

    Set wrkDefault = DBEngine.Workspaces(0)
    If Dir(tencsdl & ".*") = "" Then
    MsgBox "Chua co csdl doi tao tao csdl cho may"
    Set csdl = wrkDefault.CreateDatabase(tencsdl, dbLangGeneral)
    Set csdl = OpenDatabase(tencsdl)
    Else
    MsgBox "Co csdl roi khoi tao nua nghe may"
    Set csdl = OpenDatabase(tencsdl)
    End If
    ' create table tenthang
    For i = 0 To csdl.TableDefs.Count - 1
    If csdl.TableDefs(i).Name = tenbang Then
    MsgBox "bang nay da co roi nghe may", vbOKOnly
    Exit For
    Else
    MsgBox "doi de tao tao bang cho may"
    Set bang = csdl.CreateTableDef(tenbang)
    bang.Fields.Append bang.CreateField("MaKH", dbText, 3)
    bang.Fields.Append bang.CreateField("TenKH", dbText, 10)
    csdl.TableDefs.Append bang
    csdl.Close
    Exit For
    End If
    Next
    MsgBox "Chuc mung: Da tao duoc thu muc va csdl trong do!"
    End Sub

    Trả lờiXóa

» Hãy để lại tên, email của bạn khi bạn post comment, để mình có thể dễ dàng trả lời comment của bạn khi cần.
» Có thể sử dụng các thẻ < b>,< i>,< a>. Và các icon thông dụng trên YM