以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 请老师验证下学生的代码是否正确 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=26944) |
||||
-- 作者:mamuaiqing -- 发布时间:2012/12/18 4:09:00 -- 请老师验证下学生的代码是否正确 项目中有个“订单”表跟“账面明细”表,想在“订单”表窗口中的“按钮”控件事件中加入以下代码实现单击控件后从外部数据库中查找符合条件的行并进行统计, 如果没有符合条件则在“账面明细”表中增加一行,将指定的数据填入“账面明细”表中
注:“账面明细”表中有个“项目”列,“订单”表中没有,数据为外部数据,后面加上注释,看下代码写的对不对
Dim cmd As New SQLCommand For i As Integer =0 To sCols.Length -1
求教老师指点一、二 |
||||
-- 作者:狐狸爸爸 -- 发布时间:2012/12/18 8:30:00 -- 看不懂你的代码,既然是按钮的代码,为什么代码中会出现e.DataRow? 你这个e.DataRow是什么? 还有下面这样,注释和代码是自相矛盾的啊: If DataTables("账面明细").Find("销售日期 = \'" & dr("日期") & "\'") Is Nothing Then 如果“账面明细”表中已经存在相同日期的行
请重新表述一下你这段代码的目的和逻辑。
|
||||
-- 作者:lin_hailun -- 发布时间:2012/12/18 8:49:00 -- 太乱。不好改,看2楼。 |
||||
-- 作者:mamuaiqing -- 发布时间:2012/12/18 13:48:00 -- 回老爹跟林总,
If DataTables("账面明细").Find("销售日期 = \'" & dr("日期") & "\'") Is Nothing Then 如果“账面明细”表中已经存在相同日期的行
“看不懂你的代码,既然是按钮的代码,为什么代码中会出现e.DataRow?”回:写的时候不知道如何入手先用 e.datarow表示下指定的列
上面代码实现的目的是在销售操作中进行结帐的时候验证后台账面明细表中是否存在相同日期跟相同项目内容的行,存在的话就将销售表中的销售金额跟账面明细表的收入进行相加,这样就可以实现当天所有销售收入的统计
代码写的很纠结,希望老师指点一、二 |
||||
-- 作者:lin_hailun -- 发布时间:2012/12/18 13:58: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(收入)", Filter) 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 -- 发布时间:2012/12/19 3:37:00 -- 感谢林总的代码
执行上面代码后出现第一个错误是fdr("销售金额") = DataTables("账面明细").Compute("Sum(收入)", Filter),错误提示“没有可访问的”Filter",执行了多次修改后未果,
在纠结半天后才发现原来这个代码是将外部数据合并到本表中,完全颠倒了自己想要的,再次请教老师,如果将本表数据合并到外部数据中,代码后面要怎么改? |
||||
-- 作者:mamuaiqing -- 发布时间:2012/12/19 3:59:00 -- 上传项目,请老师帮忙下 |
||||
-- 作者:mamuaiqing -- 发布时间:2012/12/19 3:59:00 --
此主题相关图片如下:666666.png |
||||
-- 作者:狐狸爸爸 -- 发布时间:2012/12/19 10:00:00 -- 下面这行出错:
fdr("销售金额") = DataTables("账面明细").Compute("Sum(收入)", Filter)
是因为你没有定义Filter这个变量。
改为:
fdr("销售金额") = DataTables("账面明细").Compute("Sum(收入)", "统计条件")
例如:
|
||||
-- 作者:mamuaiqing -- 发布时间:2012/12/19 23:48:00 -- 我搞郁闷了到底是怎么一回事,上图先 自己又测试了下帮助中的代码,出现了图里面的错误,按老爹改后的代码也同样出现了一样的错误,
Dim sCols() As String = {"列名1", "列名2", "列名3"} 这个代码不就是定义了数据的来源吗?为什么在表中执行错误提示找不到“列名1”???外部数据中的列名也没错,到底杂搞的?
Dim cmd As New SQLCommand |