以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  向系统修复必须的列  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=169876)

--  作者:yifan3429
--  发布时间:2021/7/5 8:42:00
--  向系统修复必须的列
\'Dim e As RequestEventArgs = args(0)
Dim e  = args(0)
\'\'\'寻找系统必备列 如果没有那就增加
Dim cmd As New SQLCommand
Dim dt As DataTable
Dim sjy As  String = e.Form.Controls("数据源").Value
cmd.ConnectionName = sjy
For Each nm As String In Connections(sjy).GetTableNames
    cmd.CommandText = "SEL ECT * F rom "& nm & " where 1=2"
    dt = cmd.ExecuteReader()
    \'如果存在就删除他
    Dim Builder As New  ADOXBuilder(sjy) \'要指定数据源名称
    Builder.Open() \'打开ADOXBuilder
    \'With Builder.Tables(nm)
    \'If dt.datacols.contains("sys_日期") Then
    \'.DeleteColumn("sys_日期")
    \'End If
    \'If dt.datacols.contains("sys_姓名") Then
    \'.DeleteColumn("sys_姓名")
    \'End If
    \'If dt.datacols.contains("sys_部门") Then
    \'.DeleteColumn("sys_部门")
    \'End If
    \'If dt.datacols.contains("sys_log") Then
    \'.DeleteColumn("sys_log")
    \'End If
    \'\'If dt.datacols.contains("权限组") Then
    \'.DeleteColumn("权限组")
    \'End If
    \'If dt.datacols.contains("审核") Then
    \'.DeleteColumn("审核")
    \'End If
    \'End With
    
    With Builder.Tables(nm)
        \'\'重新增加列代码
        .AddCol umn("sys_日期" ,ADOXType.DateTime)
        .AddColu mn("sys_姓名" ,ADOXType.String, 5) \'增加字符型列,长度指定为12
        .AddColu mn("sys_部门" ,ADOXType.String, 10)
        .AddColu mn("sys_log" ,ADOXType.String, 30)
        .AddColu mn("权限组" ,ADOXType.String, 250)
        .AddColu mn("审核" ,ADOXType.Boolean)
        
    End With
    Builder.Close() \'关闭ADOXBuilder
Next
MessageBox.Show( sjy & ": 完成了数据处理")
Syscmd.Project.Open(ProjectFile) \'重新启动系统

现在的代码是先删除再增加,我取消了删除就会报错。如何在不删除原有的列情况下,给没有的表增加必须列
[此贴子已经被作者于2021/7/5 8:42:34编辑过]

--  作者:有点蓝
--  发布时间:2021/7/5 8:57:00
--  
if dt.datacols.contains("sys_日期" )=false then
.AddCol umn("sys_日期" ,ADOXType.DateTime)
end if
if dt.datacols.contains("sys_姓名)=false then
.AddCol umn("sys_姓名" ,ADOXType.String, 5)
end if