以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 本地mdb文件和内部表的结构比对 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=138524) |
-- 作者:zhangchi96 -- 发布时间:2019/8/2 17:03:00 -- 本地mdb文件和内部表的结构比对 1、说明: 本地文件 。。Data\\临时\\本地临时数据库.mdb 目的:由于本地mdb文件作用是,在与服务器连接中断时,代替服务器的表,而服务器的表结构不断调整 ,这就时常要把本地文件的表结构和服务器的表结构比对并同步
共5个问题,敬请老师指教!!
Dim 我的数据库 As String \'定义新增数据源时,数据源的名称 Dim 列类型 As String = "未知" For Each 服务器里的表 As Table In Tables ‘问题1:这里是先遍历的内部表,然后去查看本地文件的表,如何反之:先遍历本地文件里的表,再遍历表里的列名称 If 服务器里的表.name.IndexOf("网络") <> -1 Then \'--如果 含有 "网络"两个字 msgbox( 服务器里的表.name ) Vars("新增数据源序号") = Vars("新增数据源序号") + 1 我的数据库 = "数据库" & Vars("新增数据源序号") If FileSys.FileExists( ProjectPath & "Data\\临时\\本地临时数据库.mdb " ) Then \'如果指定的文件存在 Con_nections.Add( 我的数据库 , "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ProjectPath & "data\\临时\\本地临时数据库.mdb;Persist Security Info=False;Jet OLEDB:Dat_abase Password=mima") Dim cmd2 As new SQ_LCommand cmd2.Con_nectionName = 我的数据库 cmd2.Com_mandText = "se_lect * fr_om {"& 服务器里的表.name &"} where 1=2" ‘问题2:如果不存在【服务器里的表.name】,如何写个是否存在的判断语句 Dim dt2 As Dat_aTable = cmd2.Exe_cuteReader For Each dc As DataCol In DataTables(服务器里的表.name).DataCols If dt2.DataCols.Contains(dc.name) Then \'如果存在【...】列 Else If dc.IsNumeric Then 列类型 = "数值型" ElseIf dc.IsString Then 列类型 = "字符型" ElseIf dc.IsDate Then 列类型 = "日期型" ElseIf dc.IsBoolean Then 列类型 = "逻辑值型" End If ‘问题3:列类型是否就这么四种 If MessageBox.Show( " 本地: 无" & dc.name & " 是否新建该列?", "请确认", MessageBoxButtons.YesNo)=DialogResult.Yes Then If 列类型 = "数值型" Then cmd2.Com_mandText = "al_ter table {"& 服务器里的表.name &"} add dc.name DOUBLE;" ‘’问题4,下划线的写法是错误的,我改成 “& dc.name &”等多种表达方式都失败了 ElseIf 列类型 = "字符型" Then cmd2.Com_mandText = "al_ter table {"& 服务器里的表.name &"} add dc.name text(255);" ElseIf 列类型 = "日期型" Then cmd2.Com_mandText = "al_ter table {"& 服务器里的表.name &"} add dc.name timestamp;" ElseIf 列类型 = "逻辑值型" Then cmd2.Com_mandText = "al_ter table {"& 服务器里的表.name &"} add dc.name ??? ;" ‘问题5:对于逻辑值型,这里的问号部分该如何表达? End If End If End If Next End If End If Next [此贴子已经被作者于2019/8/2 17:25:33编辑过]
|
-- 作者:有点蓝 -- 发布时间:2019/8/2 17:40:00 -- 3、基本类型就这4种,如果要准确的,参考下面代码 Dim dc As DataCol = DataTables("表A").DataCols("第一列") output.show(dc.Name & " " & dc.IsNumeric & " " & dc.datatype.Name & dc.MaxLength) 4、 cmd2.CommandText = "alter table " & 服务器里的表.name & " add [" & dc.name & "] float;" 5、 cmd2.CommandText = "alter table " & 服务器里的表.name & " add [" & dc.name & "] bit;" |