Foxtable(狐表)用户栏目专家坐堂 → 导出当前表主键问题


  共有1371人关注过本帖树形打印复制链接

主题:导出当前表主键问题

帅哥哟,离线,有人找我吗?
lake163
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:276 积分:2971 威望:0 精华:0 注册:2010/9/20 11:21:00
导出当前表主键问题  发帖心情 Post By:2017/9/12 8:58:00 [只看该作者]

ACCESS格式数据源,其中一表要导出,但有大量表达式。
采取以下代码可以导出数据,但导出的表中没有主键。
不希望使用ACCESS操作确定主键,而希望通过代码直接完成,请问如何改造下述代码?

'导出当前表所有内容(所有列、所有行、所有表达式数据)

Dim dtb As New DataTableBuilder("临时")     '生成临时表,因为原始表有许多表达式列

Dim tbl As Table = Tables("原始")

'生成临时表结构

For Each c As Col In Tbl.Cols

    Dim dc As DataCol = c.DataCol          '原表列名

    Select Case dc.DataType.tostring.replace("System.", "")        '获得原表列属性,根据属性设置

        Case "String"

            dtb.AddDef(dc.name, Gettype(String), dc.MaxLength)

        Case "DateTime"

            dtb.AddDef(dc.name, Gettype(Date))

        Case "Boolean"

            dtb.AddDef(dc.name, Gettype(Boolean))

        Case "Int16"

            dtb.AddDef(dc.name, Gettype(Integer))

        Case "Int32"

            dtb.AddDef(dc.name, Gettype(Integer))

        Case "Int64"

            dtb.AddDef(dc.name, Gettype(Integer))

        Case "Single"

            dtb.AddDef(dc.name, Gettype(Single))

        Case "Double"

            dtb.AddDef(dc.name, Gettype(Double))

    End Select

Next

dtb.Build()            '生成临时表结构

'复制原始表列名到数组中,便于后面数据复制

MainTable = tbl

Dim drs As Integer = Tbl.rows.Count-1

Dim nma1,nmb1 As new List(Of String)    '集合

For Each c As Col In Tbl.cols

        nma1.add(c.Name)

        nmb1.add(c.Name)

Next

Dim nma  =nma1.ToArray()   '数组

Dim nmb  =nmb1.ToArray()

 

'复制内容复制到临时表中

tbl.StopRedraw

With Tbl

    For i As Integer = 0 To .rows.Count-1     '所有行

        CurrentTable.Position = i

        Dim dr As DataRow = DataTables("临时").AddNew

        For j As Integer = 0 To nma.Length - 1

            dr(nmb(j)) = .current(nma(j))

        Next

    Next

End With

Tbl.ResumeRedraw

 

'导出文件

MainTable = Tables("临时")

    Dim ex As New Exporter

    ex.SourceTableName = "临时" '指定导出表

Dim file As String = "D:\gbxx\cwhfa.mdb"

    ex.filepath = file  '指定目标文件

If FileSys.FileExists(file) Then '如果指定的文件存在

    FileSys.DeleteFile(file,2,2) '则彻底删除之

End If

    ex.Export() '开始导出

MessageBox.Show("导出已经完成!")

 


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/12 10:42:00 [只看该作者]


 回到顶部
帅哥哟,离线,有人找我吗?
lake163
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:276 积分:2971 威望:0 精华:0 注册:2010/9/20 11:21:00
  发帖心情 Post By:2017/9/12 11:38:00 [只看该作者]

DataTableBuilder 方式创建的新表就没有主键吗?
必须使用ADOXBuilder吗?

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/12 13:51:00 [只看该作者]

以下是引用lake163在2017/9/12 11:38:00的发言:
DataTableBuilder 方式创建的新表就没有主键吗?
必须使用ADOXBuilder吗?

 

是的,或者你用sql语句也行。资料都在2楼。


 回到顶部