以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [讨论]来一个超级困难的问题,麻烦大哥们指导.  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=1341)

--  作者:菜鸟foxtable
--  发布时间:2008/12/8 17:36:00
--  [讨论]来一个超级困难的问题,麻烦大哥们指导.
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:项目报表.table

项目里有客户/固定/临时三个表,客户表为主表,以客户ID为关联.

固定:指固定消费,有时间延续性.只要停止时间为空,则每天计一次.停止时间不为空,则停止计费,则该固定消费总数=小计*累计天数.

临时:指临时消费,只发生一次.没有时间延续性.

固定与临时消费可存在相同项目



要求实现:

1.某客户某日消费清单(包括固定和临时)查询与打印.

2.某客户所有消费清单(包括固定和临时)查询与打印.{该客户所有固定消费均已停止.}


用报表?还是另设临时表?
请大哥们指点.


图片点击可在新窗口打开查看此主题相关图片如下:001.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2008-12-8 17:40:16编辑过]

--  作者:狐狸爸爸
--  发布时间:2008/12/8 21:22:00
--  
这个问题啊。
你只能学会专业报表了,那样才能无所不能,轻松就能搞定这个问题。
[此贴子已经被作者于2008-12-8 21:22:33编辑过]

--  作者:菜鸟foxtable
--  发布时间:2008/12/8 21:42:00
--  
图片点击可在新窗口打开查看我看也是...入门级报表根本实现不了...可是专业报表说明里面也没有这样类似的问题啊....

能否提供个思路?或者是一开始的表间关系的路子就走错了?
[此贴子已经被作者于2008-12-8 21:43:59编辑过]

--  作者:狐狸爸爸
--  发布时间:2008/12/8 21:50:00
--  

一样的,既然是编码,就可以将两个表打印在一起。
两段基本一致的代码,改改表名即可。
建议你先学一下专业报表。


--  作者:菜鸟foxtable
--  发布时间:2008/12/8 23:07:00
--  
图片点击可在新窗口打开查看经过研究,专业报表好象也不能实现吧?因为固定消费有时间延续....

哪位大哥帮帮忙.....
[此贴子已经被作者于2008-12-9 10:55:13编辑过]

--  作者:菜鸟foxtable
--  发布时间:2008/12/9 10:56:00
--  
图片点击可在新窗口打开查看顶起来...这个是最特殊的问题....不可能再找到类似的.
--  作者:don
--  发布时间:2008/12/9 16:18:00
--  

\'\'\'
Dim dr1,dr2 As DataRow
Dim Cb1,Cb2,mk As String
Cb1 = e.form.Controls("ComboBox1").value
Cb2 = e.form.Controls("ComboBox2").value

dim h As integer= date.now.hour
Dim Da As DataTable = DataTables("固定")
Dim ls As  List(of DataRow) = da.Select("停止时间 Is null")

if cb1 Is Nothing then
     MessageBox.Show("请输入客户ID!", "提示")
Else
   if Cb2 > "" then
         mk = "[客户ID] = \'" & Cb1 & "\'and [开始时间] = #"& Cb2 & "#"
   Else
         mk = "[客户ID] = \'" & Cb1 & "\'"
   End if 
   dr1 =  Da.Find(mk) 
   dr2 =  DataTables("临时").Find(mk.Replace("开始","使用")) 
   If  dr1 Is Nothing OrElse dr2 Is Nothing Then
        MessageBox.Show("不存在此记录!", "提示")
   Else
             For Each dr1 in Ls
                     Dim d As Date = dr1("开始时间")
                     dr1("日期差") = (date.Today-d).days+iif(h >11,1,0)
              Next


             Dim dtb As New DataTableBuilder("查询")
             dtb.AddDef("客户ID", GetType(String),10)
             dtb.AddDef("项目", GetType(String), 32)
             dtb.AddDef("单价", GetType(Integer))
             dtb.AddDef("数量", GetType(Integer))
             dtb.AddDef("小计", GetType(Integer))
             dtb.AddDef("开始时间", GetType(Date))
             dtb.AddDef("停止时间", GetType(Date))
             dtb.AddDef("金额", GetType(Integer))
             dtb.AddDef("类型", GetType(String),2)
             dtb.Build()

             dim f As New Filler
             f.SourceTable = Da \'指定数据来源
             f.SourceCols = "客户ID,项目,单价,数量,小计,开始时间,停止时间,金额,类型" 
             f.DataTable = DataTables("查询") \'指定数据接收表
             f.DataCols = "客户ID,项目,单价,数量,小计,开始时间,停止时间,金额,类型" 
             f.Filter  = mk
             f.Fill() \'填充数据

             f.SourceTable = DataTables("临时") 
             f.SourceCols = "客户ID,项目,单价,数量,小计,使用时间,小计,类型" 
             f.DataTable = DataTables("查询") 
             f.DataCols = "客户ID,项目,单价,数量,小计,开始时间,金额,类型" 
             f.Filter  = mk.Replace("开始","使用")
             f.Fill() \'填充数据
             MainTable = Tables("查询")
     end if
end if


--  作者:狐狸爸爸
--  发布时间:2008/12/9 16:22:00
--  

呵呵,楼主真幸福....

图片点击可在新窗口打开查看


--  作者:菜鸟foxtable
--  发布时间:2008/12/9 17:03:00
--  
图片点击可在新窗口打开查看FOX老爹,马上奖励don大哥十套商业版foxtable......
论坛里最热情,最无私奉献的就是他了..

don老哥,我研究研究代码..
--  作者:狐狸爸爸
--  发布时间:2008/12/9 17:06:00
--  
以下是引用菜鸟foxtable在2008-12-9 17:03:00的发言:
图片点击可在新窗口打开查看FOX老爹,马上奖励don大哥十套商业版foxtable......
论坛里最热情,最无私奉献的就是他了..

don老哥,我研究研究代码..


呵呵,希望你学有所成后,也能象don这么无私。