以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  区分外部数据库  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=120952)

--  作者:13861676007
--  发布时间:2018/6/26 22:11:00
--  区分外部数据库

请教老师:

     我使用的Access外部数据库,因多用户需要,复制多个不同access 名称的数据库,连接的数据源名称是相同的。

我通过下列代码,打开并替换数据源,现需判断如是不同结构的数据库,不予以执行,请教如何能判断结构不同?

Dim dlg As New openFileDialog \'定义一个新的SaveFileDialog
Dim c1 As String = projectpath
dlg.initialDirectory = c1
dlg.Filter= "Access文件|*.mdb" \'设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮
    Dim s As String =""
    \'遍历当前属于此数据源的表
    For Each dt As DataTable In DataTables
        If dt.C  Then
            s += "|" & dt.name
        End If
    Next
    s = s.Trim("|")
    \'卸载表
    DataTables.Unload(s)
    Dim s1 As String =  "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dlg.FileName & ";Persist Security Info=False"
    Connections.Delete("cw")
    Connections.add("cw",s1)
    DataTables.load(s)
    \'    Forms("开始界面").show
    Tables("凭证录入表").Cols("科目").DropForm = "凭证录入辅助下拉窗口" \'客户表的县市列也采用我们设计的下拉窗口输入数据.
    Tables("凭证录入表").Cols("摘要").DropForm ="凭证录入辅助摘要下拉窗口"
    Tables("负债表").Cols("报表分类B").Combolist = DataTables("科目").GetComboListString("报表分类","","科目代码")
    Tables("负债表").Cols("报表分类A").Combolist = DataTables("科目").GetComboListString("报表分类","","科目代码")
    \'    Forms("新建账簿").open
    For Each dr2 As Row In Tables("数据源表内").rows
        dr2("上次登录1") = False
    Next
    Dim dr3 As DataRow = DataTables("数据源表内").Find("数据源1 = \'" & dlg.filename & "\'")
    If dr3 IsNot Nothing Then
        dr3("上次登录1") = True
    Else
        Tables("数据源表内").AddNew
        Tables("数据源表内").Current("数据源1") = dlg.filename
        Tables("数据源表内").Current("上次登录1") = True
    End If
    Dim dr As Row = Tables("账簿启用").Rows(0)
    Dim c3 As String = dr("公司名称")
    StatusBar.Message1= "【东面软件】使用单位:" & c3
    Forms("用户登录").open
    MainTable = Tables("a")
End If


--  作者:有点蓝
--  发布时间:2018/6/26 22:46:00
--  
判断结构比较麻烦,要判断表名称,列名称以及列类型,列长度是否都完全一致

还是使用try处理吧,出现异常就是结构不一致了