以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  这样更改字段名称报错  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=118785)

--  作者:xxfoxtable
--  发布时间:2018/5/10 22:46:00
--  这样更改字段名称报错
 Dim t1 As Table = Tables("采购")
    If t1.Cols.Contains("型号") = True Then
        Dim Builder As New ADOXBuilder("bjgl") \'要指定数据源名称
        \'Dim tbl As ADOXTable
        Builder.Open()
        With Builder.Tables(t.name)
            .RenameColumn("型号" ,"品名")
        End With
        Builder.Close()
        DataTables.unload("匹配出库|匹配出库临时|搜索匹配|搜索匹配临时|操作员档案|销售|采购")
        DataTables.Load("匹配出库|匹配出库临时|搜索匹配|搜索匹配临时|操作员档案|销售|采购")
    End If
错误提示:参数 @objname 不明确或所声明的 @objtype (column)有误。



--  作者:有点甜
--  发布时间:2018/5/10 23:03:00
--  

1、是不是这个代码导致的报错?

 

DataTables.Load("匹配出库|匹配出库临时|搜索匹配|搜索匹配临时|操作员档案|销售|采购")

 

注释掉看看

 

2、我这样测试正常

 

Dim t1 As Table = Tables("表A")
If t1.Cols.Contains("第二列") = True Then
    Dim Builder As New ADOXBuilder \'要指定数据源名称
    \'Dim tbl As ADOXTable
    Builder.Open()
    With Builder.Tables(t1.name)
        .RenameColumn("第二列" ,"品名")
    End With
    Builder.Close()
    DataTables.unload("表A")
    DataTables.Load("表A")
End If


--  作者:xxfoxtable
--  发布时间:2018/5/16 22:02:00
--  
With tbl
            .AddColumn("日期" ,ADOXType.DateTime)
            .AddColumn("说明" ,ADOXType.String, 12)
            .AddColumn("备注" ,ADOXType.String, 254)
            .AddColumn("操作员" ,ADOXType.String,12)
        End With
日期还是date 而不是datetime,有什么办法,变成datetime吗?

--  作者:有点甜
--  发布时间:2018/5/16 22:28:00
--  

设置列格式?

 

http://www.foxtable.com/webhelp/scr/1611.htm

 


--  作者:xxfoxtable
--  发布时间:2018/5/16 23:05:00
--  
Dim Builder As New ADOXBuilder("bjgl") \'要指定数据源名称
        Dim tbl As ADOXTable
        Builder.Open()
        tbl = Builder.NewTable("日志") \'创建表
        With tbl
            .AddColumn("日期" ,ADOXType.DateTime)
            .AddColumn("说明" ,ADOXType.String, 12)
            .AddColumn("品名" ,ADOXType.String, 60)
            .AddColumn("封装" ,ADOXType.String, 60)
            .AddColumn("备注" ,ADOXType.String, 254)
            .AddColumn("操作员" ,ADOXType.String,12)
        End With
        Builder.AddTable(tbl) \'增加表
        Builder.Close()
执行到Builder.AddTable(tbl) \'增加表,报错:在对应所需名称或序数的集合中,未找到项目。

--  作者:有点甜
--  发布时间:2018/5/16 23:38:00
--  
我测试了一下代码,代码没问题。肯定不是你5楼报的错。
--  作者:xxfoxtable
--  发布时间:2018/5/17 8:42:00
--  
If  Tables.Contains("日志") Then
    Else
        Dim Builder As New ADOXBuilder("bjgl") \'要指定数据源名称
        Dim tbl As ADOXTable
        Builder.Open()
        tbl = Builder.NewTable("日志") \'创建表
        With tbl
            .AddColumn("日期" ,ADOXType.DateTime)
            .AddColumn("说明" ,ADOXType.String, 12)
            .AddColumn("品名" ,ADOXType.String, 60)
            .AddColumn("封装" ,ADOXType.String, 60)
            .AddColumn("备注" ,ADOXType.String, 254)
            .AddColumn("操作员" ,ADOXType.String,12)
        End With
        Builder.AddTable(tbl) \'增加表
        Builder.Close()
        DataTables.unload("日志")
        DataTables.load("日志")
        DataTables("日志").DataCols("日期").SetDateTimeFormat(DateTimeFormatEnum.DateTime)
    End If
这是全部代码,没看出来哪有问题

--  作者:有点甜
--  发布时间:2018/5/17 8:44:00
--  

这个代码有错

 

        DataTables.unload("日志")
        DataTables.load("日志")
        DataTables("日志").DataCols("日期").SetDateTimeFormat(DateTimeFormatEnum.DateTime)

 

外部数据表(代码新建的),无法直接通过unload、load加入的

 

如果要加入,只能临时加入 http://www.foxtable.com/webhelp/scr/1279.htm

 

 


--  作者:xxfoxtable
--  发布时间:2018/5/17 9:09:00
--  
If  Tables.Contains("日志") Then
        DataTables("日志").DataCols("日期").SetDateTimeFormat(DateTimeFormatEnum.DateTime)
    Else
        Dim Builder As New ADOXBuilder("bjgl") \'要指定数据源名称
        Dim tbl As ADOXTable
        Builder.Open()
        tbl = Builder.NewTable("日志") \'创建表
        With tbl
            .AddColumn("日期" ,ADOXType.DateTime)
            .AddColumn("说明" ,ADOXType.String, 12)
            .AddColumn("品名" ,ADOXType.String, 60)
            .AddColumn("封装" ,ADOXType.String, 60)
            .AddColumn("备注" ,ADOXType.String, 254)
            .AddColumn("操作员" ,ADOXType.String,12)
        End With
        Builder.AddTable(tbl) \'增加表
        Builder.Close()
    End If
    \'
    \'\'\'升级增加缺少的字段
    Dim t As Table = Tables("销售")
    If t.Cols.Contains("最近出货时间") = False Then
        Dim Builder As New ADOXBuilder("bjgl") \'要指定数据源名称
        Dim tbl As ADOXTable
        Builder.Open()
        With Builder.Tables(t.name)
            .AddColumn("最近出货时间" ,ADOXType.Datetime)
        End With
        Builder.Close()
    Else
        DataTables("销售").DataCols("最近出货时间").SetDateTimeFormat(DateTimeFormatEnum.DateTime)
    End If
这样写的,还是报错

--  作者:有点甜
--  发布时间:2018/5/17 9:12:00
--  

每段代码单独测试;执行下面代码报什么错?

 

        Dim Builder As New ADOXBuilder("bjgl") \'要指定数据源名称
        Dim tbl As ADOXTable
        Builder.Open()
        tbl = Builder.NewTable("日志") \'创建表
        With tbl
            .AddColumn("日期" ,ADOXType.DateTime)
            .AddColumn("说明" ,ADOXType.String, 12)
            .AddColumn("品名" ,ADOXType.String, 60)
            .AddColumn("封装" ,ADOXType.String, 60)
            .AddColumn("备注" ,ADOXType.String, 254)
            .AddColumn("操作员" ,ADOXType.String,12)
        End With
        Builder.AddTable(tbl) \'增加表
        Builder.Close()

 

如果报【日志表已经存在】,那,说明你的外部数据库那里,已经存在日志表了。