Foxtable(狐表)用户栏目专家坐堂 → [求助]这段代码怎么改才行


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

主题:[求助]这段代码怎么改才行

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


加好友 发短信
等级:三尾狐 帖子:760 积分:4714 威望:0 精华:0 注册:2011/12/17 18:37:00
[求助]这段代码怎么改才行  发帖心情 Post By:2012/8/25 23:06:00 [只看该作者]

   我想把数据源1内的数据赚到数据源2   执行了,但是数据没有复制过去,应该咋改?  表是一模一样的结构.

Dim cmd As New SQLCommand
cmd.C o n n e c t i o n N a m e = "数据源1"
Dim cmd2 As New SQLCommand
cmd2.C o n n e c t i o n N a m e = "数据源2"
Dim dt As DataTable
Dim lst As List(Of String)
lst = Connections("数据源1").GetTableNames
For Each nm As String In lst
    cmd.CommandText = "SELECT * From {" & nm & " }"
    dt = cmd.ExecuteReader()
    For Each dr As DataRow In dt.DataRows
        For Each dc As DataCol In dt.DataCols
            cmd2.CommandText = "Insert Into " & nm & " (" & dc.Name & ") Values (" & dr(dc.Name) & ")"
            cmd2.ExecuteReader()
        Next
    Next
Next
MessageBox.Show("成功")
[此贴子已经被作者于2012-8-25 23:07:52编辑过]

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


加好友 发短信
等级:三尾狐 帖子:760 积分:4714 威望:0 精华:0 注册:2011/12/17 18:37:00
  发帖心情 Post By:2012/8/26 0:41:00 [只看该作者]

Dim d1 As Date = Date.Now
Dim cmd As New SQLCommand
cmd.C
Dim cmd2 As New SQLCommand
cmd2.C
Dim str1 As String, str2 As String
Dim dt As DataTable
Dim lst As List(Of String)
lst = Connections("数据源1").GetTableNames
For Each nm As String In lst
    cmd.CommandText = "SELECT * From {" & nm & " }"
    dt = cmd.ExecuteReader()
    For Each dr As DataRow In dt.DataRows
        str1= ""
        str2= ""
        For Each dc As DataCol In dt.DataCols
            If dc.IsString Then
                str1 = str1 & dc.name & ","
                str2 = str2 & "'" &  dr(dc.name) & "',"
            ElseIf dc.IsNumeric Then
                str1 = str1 & dc.name & ","
                str2 = str2 & "" &  dr(dc.name) & ","
                'ElseIf dc.IsDate Then
                
                '    str2 = str2 & "#" &  dr(dc.name) & "#,"
            End If
        Next
        str1 = str1.TrimEnd(",")
        str2 = str2.trimEnd(",")
        cmd2.CommandText = "Insert Into " & nm & " (" & str1 & ") Values (" & str2 & ")"
        cmd2.ExecuteReader()
    Next
Next
Dim d2 As Date = Date.Now
MessageBox.Show((d2-d1).Totalseconds)
MessageBox.Show("成功")

在群里弄了半天 数值和时间还有逻辑怎么转?字符型搞定了.

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


加好友 发短信
等级:幼狐 帖子:139 积分:1021 威望:0 精华:0 注册:2012/1/18 14:40:00
  发帖心情 Post By:2012/8/26 0:55:00 [只看该作者]

insert 的 {}怎么没有?

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


加好友 发短信
等级:七尾狐 帖子:1732 积分:11266 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2012/8/26 8:40:00 [只看该作者]

以下是引用woiz在2012-8-26 0:55:00的发言:
insert 的 {}怎么没有?

可以不用的


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2012/8/26 10:06:00 [只看该作者]

……


            ElseIf dc.IsNumeric
                str2 = str2 & "" &  dr(dc.name) & ","
            ElseIf dc.IsBoolean Then
                str2 = str2 & "," &  dr(dc.name) & ","
            ElseIf dc.IsDate Then
                str2 = str2 & "#" &  dr(dc.name) & "#"

            End If
        Next

……

 

这样就应该行了吧


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


加好友 发短信
等级:七尾狐 帖子:1732 积分:11266 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2012/8/26 11:27:00 [只看该作者]

以下是引用czy在2012-8-26 10:06:00的发言:

……


            ElseIf dc.IsNumeric
                str2 = str2 & "" &  dr(dc.name) & ","
            ElseIf dc.IsBoolean Then
                str2 = str2 & "," &  dr(dc.name) & ","
            ElseIf dc.IsDate Then
                str2 = str2 & "#" &  dr(dc.name) & "#"

            End If
        Next

……

 

这样就应该行了吧

            ElseIf dc.IsBoolean Then
                str2 = str2 & "" &  dr(dc.name) & ","  '多了逗号
            ElseIf dc.IsDate Then
                str2 = str2 & "#" &  dr(dc.name) & "#"  ‘理论是这样,但是插入时间就报错,foxtable时间格式为 YYYY/MM/DD 星期X 这种格式 SQL似乎不支持啊


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2012/8/26 13:10:00 [只看该作者]

以下是引用jspta在2012-8-26 11:27:00的发言:
            ElseIf dc.IsBoolean Then
                str2 = str2 & "" &  dr(dc.name) & ","  '多了逗号
            ElseIf dc.IsDate Then
                str2 = str2 & "#" &  dr(dc.name) & "#"  ‘理论是这样,但是插入时间就报错,foxtable时间格式为 YYYY/MM/DD 星期X 这种格式 SQL似乎不支持啊

 

不会多个逗号吧,我测试过的。

如果是SQL数据源就不能用#符号,用'符号即可


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2012/8/26 13:12:00 [只看该作者]

这是合成的sql语句,没多余逗号的

 

Insert Into 订单 (产品,客户,雇员,单价,折扣,数量,日期,逻辑) Values ('PD01','CS03','EP04',18,0.15,80,#1999-01-04#,True)


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


加好友 发短信
等级:七尾狐 帖子:1732 积分:11266 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2012/8/26 14:24:00 [只看该作者]

以下是引用czy在2012-8-26 13:12:00的发言:

这是合成的sql语句,没多余逗号的

 

Insert Into 订单 (产品,客户,雇员,单价,折扣,数量,日期,逻辑) Values ('PD01','CS03','EP04',18,0.15,80,#1999-01-04#,True)

str2 = str2 & "," &  dr(dc.name) & ","    没说清楚,这句话多了逗号。。。。

#1999-01-04# 这个值没问题,但是 YYYY/MM/DD 星期X 这样格式的就有问题,必须吧星期去掉才行。挺麻烦的


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


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57634 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2012/8/27 8:14:00 [只看该作者]

Dim d1 As Date = Date.Now
Dim cmd As New SQLCommand
cmd.C
Dim cmd2 As New SQLCommand
cmd2.C
Dim str1 As String, str2 As String
Dim dt As DataTable
Dim lst As List(Of String)
lst = Connections("数据源1").GetTableNames
For Each nm As String In lst
    cmd.CommandText = "SELECT * From {" & nm & " }"
    dt = cmd.ExecuteReader()
    For Each dr As DataRow In dt.DataRows
        str1= ""
        str2= ""
        For Each dc As DataCol In dt.DataCols
            str1 = str1 & dc.name & ","
            If dc.IsString Then
                str2 = str2 & "'" &  dr(dc.name) & "',"
            ElseIf dc.IsNumeric
                str2 = str2 & "" &  dr(dc.name) & ","
            ElseIf dc.IsBoolean Then
                str2 = str2 & "," &  dr(dc.name)& ","
            ElseIf dc.IsDate Then
                str2 = str2 & "#" &  dr(dc.name) & "#"
            End If
        Next
        str1 = str1.TrimEnd(",")
        str2 = str2.trimEnd(",")
        cmd2.CommandText = "Insert Into " & nm & " (" & str1 & ") Values (" & str2 & ")"
        cmd2.ExecuteReader()
    Next
Next
Dim d2 As Date = Date.Now
MessageBox.Show((d2-d1).Totalseconds)
MessageBox.Show("成功")


  代码现在改成这样  ,但是执行了却没有导入成功.

 回到顶部
总数 15 1 2 下一页