Foxtable(狐表)用户栏目专家坐堂 → 请老师验证下学生的代码是否正确


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

主题:请老师验证下学生的代码是否正确

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


加好友 发短信
等级:四尾狐 帖子:824 积分:6288 威望:0 精华:0 注册:2012/3/1 3:17:00
  发帖心情 Post By:2012/12/19 23:49:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:错误1.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:图2.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:四尾狐 帖子:824 积分:6288 威望:0 精华:0 注册:2012/3/1 3:17:00
  发帖心情 Post By:2012/12/20 0:20:00 [只看该作者]

按帮助文件中的“手工编码填充数据”里的代码来说的话,DataTables("表A").Select("[金额] > 100")这个代码不就是说明来源列的表吗
 

Dim Cols1() As String = {"来源列一","来源列二","来源列三"}
Dim
Cols2() As String = {"接收列一","接收列二","接收列三"}
For Each
dr1 As DataRow In DataTables("表A").Select("[金额] > 100")
    Dim
dr2 As DataRow = DataTables("表B").AddNew()
    For
i As Integer = 0 To Cols1.Length -1
       
dr2(Cols2(i)) = dr1(Cols1(i
))
    Next
Next

 

再回过头来看外部的,dt.DataRows 数据来源与外部数据里的(员工)表,既然数据来源与外部表, Dim nr As DataRow = DataTables("员工").AddNew(),这个又代表什么?自相矛盾?实在不解错误的原因在哪

 

Dim sCols() As String = {"列名1", "列名2", "列名3"}
Dim
dCols() As String = {"列名A", "列名B", "列名C"}
cmd
.ConnectionName = "数据源名称"
cmd
.CommandText = "SELECT * From {员工}"
dt
= cmd.ExecuteReader()    

For Each dr As DataRow In dt.DataRows
    Dim
nr As DataRow = DataTables("员工").AddNew()
    For
i As Integer =0 To sCols.Length -1
       
nr(dCols(i)) = dr(sCols(i))
    Next
Next
     


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


加好友 发短信
等级:四尾狐 帖子:824 积分:6288 威望:0 精华:0 注册:2012/3/1 3:17:00
  发帖心情 Post By:2012/12/20 0:32:00 [只看该作者]

再回过头重新看了下帮助文件里

 

例如项目中有一个员工表,要从一个外部文件中合并数据到这个员工表中,希望在合并过程中检查身份证号码,如果员工表已经存在相同身份证号码的行,则跳过此行。
假定被合并的表和员工表的结构相同,代码如下:

 

 

Dim cmd As New SQLCommand
Dim
dt As DataTable
cmd.ConnectionName =
"数据源名称"
cmd.CommandText =
"SELECT * From {员工}"
dt = cmd.ExecuteReader()

For
Each dr As DataRow In dt.DataRows
    If
DataTables("员工").Find("身份证号码 = '" & dr("身份证号码") & "'") Is Nothing Then
        Dim
nr As DataRow = DataTables("员工").AddNew()
        For
Each dc As DataCol In dt.DataCols
            nr(dc.name) = dr(dc.name)

        Next
    End
If
Next

 

可见要自己设计一个功能更强的Merger,其实是件很简单的事情。

如果两个表的结构不同,可以参考下面的代码:

Dim cmd As New SQLCommand
Dim
dt As DataTable
Dim
sCols() As String = {"列名1", "列名2", "列名3"}
Dim
dCols() As String = {"列名A", "列名B", "列名C"}
cmd
.ConnectionName = "数据源名称"
cmd
.CommandText = "SELECT * From {员工}"
dt
= cmd.ExecuteReader()
For Each
dr As DataRow In dt.DataRows
    Dim
nr As DataRow = DataTables("员工").AddNew()
    For
i As Integer =0 To sCols.Length -1
       
nr(dCols(i)) = dr(sCols(i))
    Next
Next

 

要从一个外部文件中合并数据到这个员工表中”这个说明是不是错误了,既然要从外部文件中合并数据到员工表,为什么还要从外部的员工表中读取数据?这样的话打个比方外部文件用“表A”来说明

cmd.CommandText = "SELECT * From {员工}"  这个代码不是要改成   cmd.CommandText = "SELECT * From {表A}"   ????数据来源是“表A”不是员工表。

 


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


加好友 发短信
等级:四尾狐 帖子:824 积分:6288 威望:0 精华:0 注册:2012/3/1 3:17:00
  发帖心情 Post By:2012/12/20 0:37:00 [只看该作者]

再从帮助文件里的“手工编码填充数据”里的代码来看

 

Dim Cols1() As String = {"来源列一","来源列二","来源列三"}
Dim
Cols2() As String = {"接收列一","接收列二","接收列三"}
For Each
dr1 As DataRow In DataTables("表A").Select("[金额] > 100")
    Dim
dr2 As DataRow = DataTables("表B").AddNew()
    For
i As Integer = 0 To Cols1.Length -1
       
dr2(Cols2(i)) = dr1(Cols1(i
))
    Next
Next

 

指定来源数据为表A,接收的为表B,代码执行完全没错误,一切正常

 

天那~~~~到底是我错了,还是帮助文件错了?


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


加好友 发短信
等级:四尾狐 帖子:824 积分:6288 威望:0 精华:0 注册:2012/3/1 3:17:00
  发帖心情 Post By:2012/12/20 2:01:00 [只看该作者]

Dim cmd As New SQLCommand
Dim dt As DataTable
Dim sCols() As String = {"日期", "销售金额", "付款渠道"}
Dim dCols() As String = {"日期", "收入", "收入渠道"}
cmd.C
cmd.CommandText = "SELECT * From {销售订单}"
dt = cmd.ExecuteReader()
For Each dr As DataRow In dt.DataRows
    Dim fdr As DataRow = DataTables("账面明细").Find("日期 = '" & dr("日期") & "'")
    If fdr IsNot Nothing Then
        If fdr("项目") = "门市收入"
            fdr("收入") = DataTables("销售订单").Compute("Sum(销售金额)", "日期 = '" & dr("日期") & "'")
        Else
            Dim nr As DataRow = DataTables("账面明细").AddNew()
            For i As Integer =0 To sCols.Length -1
                nr(dCols(i)) = dr(sCols(i))
            Next
            nr("项目") = "门市收入"
        End If
    End If
Next

 

最后代码改为这样,无效!


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


加好友 发短信
等级:四尾狐 帖子:824 积分:6288 威望:0 精华:0 注册:2012/3/1 3:17:00
  发帖心情 Post By:2012/12/20 2:07:00 [只看该作者]

 

Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.C
cmd.CommandText = "SELECT * From {销售订单}"
dt = cmd.ExecuteReader()
For Each dr As DataRow In dt.DataRows
    If DataTables("销售订单").Find("日期 = '" & dr("日期") & "'") Is Nothing Then     
        Dim nr As DataRow = DataTables("账面明细").AddNew()
        For Each dc As DataCol In dt.DataCols
            nr(dc.name) = dr(dc.name)
        Next
    End If  
Next

 

按照自己表里的列名进行更改后测试无效!两张表列类型都一样

 

 

Dim cmd As New SQLCommand
Dim
dt As DataTable
cmd.ConnectionName =
"数据源名称"
cmd.CommandText =
"SELECT * From {员工}"
dt = cmd.ExecuteReader()

For
Each dr As DataRow In dt.DataRows
    If
DataTables("员工").Find("身份证号码 = '" & dr("身份证号码") & "'") Is Nothing Then
        Dim
nr As DataRow = DataTables("员工").AddNew()
        For
Each dc As DataCol In dt.DataCols
            nr(dc.name) = dr(dc.name)

        Next
    End
If
Next

 

 


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


加好友 发短信
等级:四尾狐 帖子:824 积分:6288 威望:0 精华:0 注册:2012/3/1 3:17:00
  发帖心情 Post By:2012/12/20 2:20:00 [只看该作者]

再测试底下那代码,测试成功,员工表增加了一行,并把指定的数据填充

Dim cmd As New SQLCommand
Dim dt As DataTable
Dim sCols() As String = {"来源列一", "来源列二", "来源列三"}
Dim dCols() As String = {"接收列一", "接收列二", "接收列三"}
cmd.C
cmd.CommandText = "SELECT * From {表G}"
dt = cmd.ExecuteReader()
For Each dr As DataRow In dt.DataRows
    Dim nr As DataRow = DataTables("员工").AddNew()
    For i As Integer =0 To sCols.Length -1
        nr(dCols(i)) = dr(sCols(i))
    Next
Next


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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/12/20 9:23:00 [只看该作者]

 呵呵,楼主自己捣鼓出来了。学习就应该是这样的,拿来即用的没有什么成就感。

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


加好友 发短信
等级:四尾狐 帖子:824 积分:6288 威望:0 精华:0 注册:2012/3/1 3:17:00
  发帖心情 Post By:2012/12/20 13:13:00 [只看该作者]

图片点击可在新窗口打开查看林总又取笑我了,我想实现条件填充那又得怎么实现,代码不起作用啊

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


加好友 发短信
等级:四尾狐 帖子:824 积分:6288 威望:0 精华:0 注册:2012/3/1 3:17:00
  发帖心情 Post By:2012/12/20 13:19:00 [只看该作者]

图片点击可在新窗口打开查看老爹人呢,代码到底怎么的搞法

 回到顶部
总数 21 上一页 1 2 3 下一页