| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2947 人关注过本帖, 1 人收藏
标题:求助!datagrid列值求和
只看楼主 加入收藏
yujianding
Rank: 2
等 级:论坛游民
帖 子:26
专家分:19
注 册:2016-9-30
结帖率:75%
收藏(1)
已结贴  问题点数:100 回复次数:4 
求助!datagrid列值求和
各位大神,我有一个正在做的小软件,基本做完了就差最后一步,需要将查询与筛选出来显示在datagrid控件上的数据的某一列求值在text6中,之前有找人做过,但是感觉不行,我的想法是不管datagrid控件中的数据有一丁点的变化,那一列的求和值都能随着datagrid的变化而变化。求救,附上附件。
说明书统计.zip (18.8 KB)
搜索更多相关主题的帖子: 软件 
2016-11-26 08:55
chen3523
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:33
帖 子:223
专家分:1165
注 册:2013-2-12
收藏
得分:10 
在text1-5发生变化时,用SQL查询语句SUM合计某列,分别赋值给text6-8,关键是查询语句的编写。我复制一段我以前写的,希望对你有帮助。
      SQL = "SELECT sum(消费) FROM 消费表 where not exists" & _
            "(select 实收款 from 收款表 where 消费表.消费者=收款表.消费者 and 消费表.消费=收款表.消费) "
       = adCmdunknow            
       Adodc2.RecordSource = SQL
       Adodc2.Refresh
       Label3.Visible = True
       Label3.Caption = "应收未收款共:" & Adodc2.Recordset.Fields(0) & "元"

调试失败3次后,关机睡觉,当醒来时多有收获。
2016-11-26 10:31
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4938
专家分:30047
注 册:2008-10-15
收藏
得分:90 
新建一个函数
程序代码:
Public Sub DataGridReredsh(SqlWhere As String)
On Error Resume Next

Dim sql As String, sql2 As String

If Len(SqlWhere) > 0 Then sql2 = "where " & SqlWhere        '如果传入了条件,那么组合上条件动词,否则为空

sql = "select sum(客户总价) as s1 ,sum(加工商总价) as s2 from SMS " & sql2      '生成求和的SQL
    
    If rs.State <> adStateClosed Then           '如果rs没有关闭的情况下,先关掉
        rs.Close
        DoEvents                                '防止超时未关闭 rs
    End If
    rs.CursorLocation = adUseClient
    rs.Open sql, conn, adOpenKeyset, adLockOptimistic       '打开 rs
    
    Text6.Text = rs.Fields("s1")                '读值
    Text7.Text = rs.Fields("s2")
    rs.Close                                    '用完关
    DoEvents
    
sql = "select * from SMS  " & sql2              '生成显示数据用的 rs
    rs.CursorLocation = adUseClient
    rs.Open sql, conn, adOpenKeyset, adLockOptimistic
    Set DataGrid1.DataSource = rs.DataSource
    DataGrid1.Refresh
End Sub


然后,代码里,凡是涉及到 刷新 datagrid1 的操作,就使用调用这个过程。

程序代码:
Private Sub Command4_Click()
    On Error GoTo ToExit '打开错误陷阱
    '------------------------------------------------
    DataGridReredsh ""        '刷新数据,并统计
    MsgBox "数据刷新成功!", 64, "提示"
    '------------------------------------------------
    Exit Sub
    '----------------
ToExit:
    Resume Next
End Sub


再如:
程序代码:
Private Sub Form_Load()
    On Error GoTo ToExit '打开错误陷阱
    '------------------------------------------------
    Combo1.AddItem "彩雅丰"
    Combo1.AddItem "富康美"
    Combo1.AddItem "杰事杰"
    Combo1.AddItem "浩晨"
    Combo1.Text = Combo1.List(0)
    Call KKK(conn)
'    If rs.State <> adStateClosed Then
'        rs.Close
'    End If
'    rs.CursorLocation = adUseClient
'    rs.Open "select * from SMS where   工单  like '%" + Text1.Text + "%' and 加工商  like '%" + Combo1.Text + "%'", conn, adOpenKeyset, adLockOptimistic
'    Set DataGrid1.DataSource = rs.DataSource

DataGridReredsh (" 工单  like '%" + Text1.Text + "%' and 加工商  like '%" + Combo1.Text + "%'")

    '------------------------------------------------
    Exit Sub
    '----------------
ToExit:
    Resume Next
End Sub


简单粗暴的解决。

另外,删除那个部分没去看,可能需要事先保存SQL命令。


[此贴子已经被作者于2016-11-26 12:09编辑过]


授人于鱼,不如授人于渔
早已停用QQ了
2016-11-26 12:08
yujianding
Rank: 2
等 级:论坛游民
帖 子:26
专家分:19
注 册:2016-9-30
收藏
得分:0 
回复 3楼 风吹过b
感谢,非常感谢
2016-11-26 13:30
asad
Rank: 1
等 级:新手上路
威 望:1
帖 子:68
专家分:0
注 册:2019-12-6
收藏
得分:0 
学习了!!
2023-03-26 21:44
快速回复:求助!datagrid列值求和
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017361 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved