| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 992 人关注过本帖
标题:求VFP分类汇总代码,(多条件的)
只看楼主 加入收藏
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:0 
以下是引用liyzzyil在2013-12-24 14:36:56的发言:

字段分别的:物料编号 物料描述  单位  数量  单价  总金额 单号  订单号 收货单位 收货仓位 日期 备注
介执行你说的“sele 订单号,物料编号,sum(数量) 数量 from 表 grou by 订单号,物料编号”只显示几件字段,其它的不显示了?为什么
还有,能不能生成一个新表存起来,麻烦你在说一下

sele 物料编号,物料描述,单位,数量,单价,总金额,单号,订单号,收货单位,收货仓位,日期,备注,订单号,物料编号,sum(数量) 数量 from 表 grou by 订单号,物料编号
2013-12-25 00:11
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
滿意了沒?

授人以渔,不授人以鱼。
2013-12-25 11:58
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
程序代码:
CLEAR ALL
SET PROCEDURE TO "D:\Projects\MyTools\MyTools"
SET SAFETY OFF
CLEAR
Create_SourceDBF()
Create_TargetDBF()
Main()
CLOSE TABLES ALL
CLEAR ALL
RETURN 

PROCEDURE Main()
    LOCAL loForm
    loForm = CREATEOBJECT("C_Form1")
    WITH loForm
        .Caption = "多條件統計演示程序"
        .MinHeight = 400
        .MinWidth = 600
        .WindowState = 2
        .Show
        .Button1.SetFocus
    ENDWITH
    READ EVENTS
ENDPROC 

PROCEDURE Create_SourceDBF()
    CREATE TABLE dbf1 FREE (訂單號 C(10), 物料編號 C(10), 數量 N(4))
    INSERT INTO dbf1 (訂單號, 物料編號, 數量) VALUES ("1", "1", 1)
    INSERT INTO dbf1 (訂單號, 物料編號, 數量) VALUES ("2", "2", 2)
    INSERT INTO dbf1 (訂單號, 物料編號, 數量) VALUES ("1", "1", 3)
    INSERT INTO dbf1 (訂單號, 物料編號, 數量) VALUES ("2", "2", 5)
    INSERT INTO dbf1 (訂單號, 物料編號, 數量) VALUES ("3", "1", 7)
    INDEX ON 訂單號+物料編號 TO dbf1
    GOTO TOP IN dbf1
ENDPROC 

PROCEDURE Create_TargetDBF()
    CREATE TABLE dbf2 FREE (訂單號 C(10), 物料編號 C(10), 數量 N(4))
    INDEX ON 訂單號+物料編號 TO dbf2
ENDPROC 

PROCEDURE Collect_Statistics()

    IF RECCOUNT("dbf2") > 0
        DELETE ALL IN dbf2
    ENDIF
   
    SELECT dbf1
    SET DELETED ON
    SCAN ALL
        IF !SEEK(dbf1.訂單號 + dbf1.物料編號, "dbf2", "dbf2")
            INSERT INTO dbf2 (訂單號, 物料編號, 數量) VALUES (dbf1.訂單號, dbf1.物料編號, 0)
        ENDIF
        REPLACE dbf2.數量 WITH dbf2.數量 + dbf1.數量
    ENDSCAN
   
ENDPROC 

DEFINE CLASS C_Form1 AS myForm

    ADD OBJECT Grid1 AS Grid
    ADD OBJECT Grid2 AS Grid
    ADD OBJECT Button1 AS CommandButton WITH Caption = "統計", Height = 25, Width = 60
   
    PROCEDURE Arrange
        WITH This.Button1
            .Top = ThisForm.Height - .Height - 5
            .Left = 20
        ENDWITH
        WITH This.Grid1
            .Top = 5
            .Left = 5
            .Height = ThisForm.Button1.Top - .Top - 5
            .Width = (ThisForm.Width / 2) - .Left - 5
        ENDWITH
        WITH This.Grid2
            .Top = This.Grid1.Top
            .Left = This.Grid1.Left + This.Grid1.Width + 5
            .Height = This.Grid1.Height
            .Width = ThisForm.Width - .Left - 5
        ENDWITH
    ENDPROC
   
    PROCEDURE Grid1.Init
        WITH This
            .RecordSourceType = 1
            .RecordSource = "dbf1"
            .ReadOnly = .T.
            .HighlightStyle = 2
            .DeleteMark = .F.
            .SetAll("FontBold", .T., "Header")
        ENDWITH
    ENDPROC
   
    PROCEDURE Grid2.Init
        WITH This
            .RecordSourceType = 1
            .RecordSource = "dbf2"
            .ReadOnly = .T.
            .HighlightStyle = 2
            .DeleteMark = .F.
            .SetAll("FontBold", .T., "Header")
        ENDWITH
    ENDPROC
   
    PROCEDURE Button1.Click
        Collect_Statistics()
        ThisForm.Refresh
    ENDPROC 

ENDDEFINE

如果給了這樣的示範還不知道怎麼修改成任意多條件統計和靈活的表格輸出,那就悲催了。

[ 本帖最后由 TonyDeng 于 2013-12-25 15:13 编辑 ]

授人以渔,不授人以鱼。
2013-12-25 14:14
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:0 
以下是引用liyzzyil在2013-12-24 14:36:56的发言:

字段分别的:物料编号 物料描述  单位  数量  单价  总金额 单号  订单号 收货单位 收货仓位 日期 备注
介执行你说的“sele 订单号,物料编号,sum(数量) 数量 from 表 grou by 订单号,物料编号”只显示几件字段,其它的不显示了?为什么
还有,能不能生成一个新表存起来,麻烦你在说一下
VFP 9.0的标准语句:

SELECT T1.物料编号,物料描述,单位,T2.数量,单价,总金额,单号,T1.订单号,收货单位,收货仓位,日期,备注 ;
   FROM 原始表 T1 ;
      JOIN (SELECT 订单号,物料编号,SUM(数量) 数量 FROM 原始表 GROUP BY 1,2) T2 ;
         ON ALLTRIM(T1.物料编号)=ALLTRIM(T2.物料编号) AND ;
            ALLTRIM(T1.订单号)=ALLTRIM(T2.订单号) ;
   INTO TABLE 新表

这条语句可达到你的目的,但未经测试,供你参考。
2013-12-25 14:35
bccn0906
Rank: 9Rank: 9Rank: 9
来 自:广州
等 级:蜘蛛侠
威 望:2
帖 子:414
专家分:1183
注 册:2013-10-16
收藏
得分:0 
以下是引用liyzzyil在2013-12-24 14:39:42的发言:

sele 订单号,物料编号,收货单位, sum(数量) 数量,单位,总金额,单号,收货仓位,日期,备注 from 未开票 grou by 订单号,物料编号,收货单位
我知道了,但能不能生成新表?
1.VFP6.0
SELECT  订单号,物料编号,收货单位, sum(数量) 数量,单位,总金额,单号,收货仓位,日期,备注 FROM 未开票 INTO dbf 新表  GROUP  BY  订单号,物料编号,收货单位
2.VFP9.0
SET ENGINEBEHAVIOR 70
SELECT  订单号,物料编号,收货单位, sum(数量) 数量,单位,总金额,单号,收货仓位,日期,备注 FROM 未开票 INTO dbf 新表  GROUP  BY  订单号,物料编号,收货单位
2013-12-25 22:10
快速回复:求VFP分类汇总代码,(多条件的)
数据加载中...
 
   



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

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