谁肯拉小妹一把?(50分)

  • 主题发起人 主题发起人 冰雪
  • 开始时间 开始时间
MM也,,可能是我理解能力太差了,对你的要求越来越糊涂了,,,想帮你都不行了:(
 
kao,大富翁的家伙怎么大多数动物性本能都这么强呢?

to:冰雪,
已经有兄弟为了争着帮你牺牲了,我就明哲保身,不搅混水了

--the end
 
[:(!][:(!][:(!]

喂喂喂,我可要发急了,谁让你和delphi说886?

不管做什么,最怕自暴自弃了。一会儿唯我独尊,一会儿唯我独熊。哪能这样啊?

我的意思是说,你这么喜欢编程,其实是很不错的。但编程是一件很烦琐的事,也是一件对
技术性要求很高的事,更是一件对事前统筹安排要求很高的事。如果没有一定的经验,匆匆
上马,就怕越编越乱,到时下不了马。

要求很高,不是高不可攀!只要你肯动脑,肯学习,一定能达到那个高度。

我看你数据表设计的那么多,但尚且看不懂别人编的程序,那不是嘴小西瓜大?

所以我说,目前这个程序包出去也不是下策,谦虚一点,勤奋学习,前途也是不可限量的啊!

老天,少一个DELPHI大富翁,那我不成杀人抢劫犯了?

求求你,饶了我吧,别让我担这个罪名好不好?
 
[:O][:O][:O][:O]

兄弟们,拉人啊,怎么一个个都不吭声,全跑了?

见危不救,于心何忍啊?

人家说“拉小妹一把”,干嘛一个个全不动手了?

唉!世风如此啊…………

喂,小妹妹,不会生气了吧?对不起,我乱说话,把人都赶跑了,真是对不起哟。

我说:小妹妹,不要气馁哟,要相信自己啊。

我也要走了,再呆下去,别人看见了,还以为我别有用心呢。

对不起,我回家了。
 
我根据你的描述模拟了一个简单的数据库

CP.DB产品定义
-------------
CPBH 产品编号
CPNAME 产品名称

RK.DB入库主表
------------
RKDH 入库单号
KH 客户
CK 入库仓库
RKDATE 入库日期

RKMX.DB入库明细表
----------------
RKDH 入库单号
CPBH 产品编号
NUM 入库数量

CK.DB出库主表
-------------
CKDH 出库单号
CKKH 出库客户
CKCK 出库仓库
CKDATE 出库日期

CKMX.DB出库明细表
-----------------
CKDH 出库单号
CKCP 产品编号
CKSL 出库数量

要达到你设想的查询结果,Paradox一步很难做到
需要把复杂的SQL的语句分解为几个简单的步骤
中间步骤通过视图来完成。

使用Paradox的视图需要使用DataBase DeskTop工具完成
新建SQL文件,加入下列语句。文件存放在数据表相同目录下。

//建立入库主从明细表视图 RKALL.SQL
select a.*,b.*
from RK a left outer join RKMX b
on a.RKDH=b.RKDH

//建立入库的汇总统计视图 RKSUM.SQL
按照入库日期、产品分组统计视图RKALL.SQL
select RKDate,CPBH,SUM(NUM) AS SUMRK
from RKALL.SQL
group by RKDate,CPBH

//建立出库主从明细表视图 CKALL.SQL
select a.*,b.*
from CK a left outer join CKMX b
on a.CKDH=b.CKDH


//建立出库的汇总统计视图 CKSUM.SQL
按照出库日期、产品分组统计视图CKALL.SQL
select CKDATE,CKCP,SUM(CKSL) AS SUMCK
from CKALL.SQL
group by CKDate,CKCP

//搜索入库和出库记录里所有出现的日期 MyDate.SQL
select RKDATE as MyDate from RKSUM.SQL
Union
select CKDATE as MyDate from CKSUM.SQL
where CKDATE not in (select RKDATE from RKSUM.SQL)

//建立产品与日期关联视图 CDDATE.SQL
select distinct b.MyDate,a.CPBH,a.Name
from CP a, MyDate.SQL b

//最后的查询 QueryFinal.SQL
select a.CPBH,a.Name,b.RKDATE,b.SUMRK,
c.CKDATE,c.SUMCK
from CPDATE.SQL a left outer join
RKSUM.SQL b
on a.CPBH=b.CPBH and a.MyDate=b.RKDATE
left outer join
CKSUM.SQL c
on a.CPBH=c.CKCP and a.MyDate=c.CKDATE
where SUMRK<>0 or SUMCK<>0


使用
select * from QueryFinal.SQL
where ....
Order by ...

可以得到你需要的查询格式,至于结余数。我暂时没有实现,解决的办法仍然是建立视图(谁叫这是Paradox呢)。
自己仔细想想,多动动手。

不要做事做到一半就轻言放弃,否则我白帮你了。
 
好热闹啊,又是给QQ的,又是给SQL的,帮忙建表的,直接给代码的,这样做什么程序员啊.
还是MM吃香 :)
 
---“我想在查询里面按日期顺序通过一种什么方法能够查出每一条记录的结余数”
这个问题我也还在研究

 
呵呵,下辈子做女人,绝对不带把,女人真好!唉!
 
请节哀,下辈子做女人挺好[:D]
 
各位瞎忙活啥呀?谁知道是真MM还是假MM?
不要上当了。
 
HI,冰雪:
  你说,"我想在查询里面按日期顺序通过一种什么方法能够查出每一条记录的结余数"
通过几个小时的研究,我已经成功地实现了你所要的结果了。

 
小唐真用心呀!
也给兄弟们点时间吧(几分钟就行)
看看我的问题吧!http://www.delphibbs.com/delphibbs/DispQ.asp?LID=1252354
 
注意:要达到你所说的这样的效果:
产品代码 日期 入库数 出库数 结余数
A 2002-07-30 10 10
B 2002-08-01 5 5
是不可能的!因为,谁都知道,B产品没有入库是不会有所谓的出库的!

所以,你要达到的效果应该是下面这样:
产品代码 入库日期 入库数  出库日期 出库数 结余数
A 2002-07-30 10       10
A                  2002-08-01   3        7
A     2002-08-03   8                     15   
B 2002-08-01 20            20
B     2002-08-02   60                    80
B                  2002-08-06   25       35
如果你要达到的效果真是这样,那么请看我的实现方法:
1、首先用SQL选出在入库表和出库表中的所需要的字段,存为一个临时表,
注意按'产品代码'和'入库日期'来排序,以此达到上面看到的效果,
  具体的方法,前面众多朋友已经告诉你了,我就不再多说。
  我将这个临时表取名为rkckjc.db,它包含这几个字段:
  产品代码
  入库日期
  入库数
  出库日期
  出库数
  结存数
  用SQL得到的这个rkckjc.db表中的"结存数"字段的值我用第二步的方法得到。
2、通过一种我自定义的方法查出每一条记录的结余数,
这是不能用SQL的方法来实现的,
  因为SQL没有'当前记录'的概念,所以请看我的实现方法大意:
为了得到这个'结存数',我花了1小时研究算法,又花了1小时上机验证算法,
  请看我的得到'结存数'的方法:
(这8个步骤,我都放在了一个button的click事件里)
  1、定义两个局部变量rk和ck,再定义一个全局变量jc,并置全局变量为0;
2、打开第一步中的那个临时表,将当前记录定位在第一条记录;
  3、设置一个while do循环,直到当前记录转到最后一条记录才结束循环;
  4、在循环中将当前记录的'入库数'字段的值存到变量rk中,ck也是一样;
  5、如果当前记录既有入库数又有出库数,那么结存数就等于上一条记录
   的结存数加上当前记录的入库数减去当前记录的出库数;
  6、如果当前记录有入库数但没有出库数,那么结存数就等于上一条记录
   的结存数加上当前记录的入库数;
  7、如果当前记录没有入库数,但有出库数,那么结存数就等于上一条记录
   的结存数减去当前记录的出库数;
  8、将满足5,6,7三个条件之一的结存数赋给当前记录的'结存数'字段。
最后,将这个rkckjc.db显示在一个DBGrid网格中就大功告成了!
 
哈哈,为我加分吧!
 
Yves:
 你的那个问题不是已经有答案了吗?再说,你那个问题我也不会呀,不好意思了!
 
to 冰雪
你得为小唐加分,他这么辛苦(这么殷勤)而且这么多人帮了你,50分可分不过来:)
 
to Yves:
哈,说笑了。“这么辛苦(这么殷勤)”,辛苦一点是值得的,毕竟在这过程中,
我自身也得到了提高。至于殷勤吗,呵,谁你说吧。

to 冰雪:
现在已经有60多人回答了你的问题,可是总是答得不在点子上。
  我觉得是你的提问方式有些欠妥,没有将你的要求显而易见地表述出来,
从而使得大家对你的真正需求感到模糊不清。有几位说了,自已的理解力太差,
就是这个原因,呵,可不要生气呀。我也是在今天中午才真正猜懂了你的需求,
你的主要目的就是如何计算出结存数。
  我在上次的贴中讲了那么多,不知你明白了如何写代码没有?如果看不懂的话,
那就看下面这段计算出结存数的代码吧:
前提:首先,用SQL选出在入库表和出库表中的所需要的字段,存为一个临时表,
   这个临时表你可随意取名,我取的名字是rkckjc.db,字段包括:
   产品代码
   入库日期
   入库数
   出库日期
   出库数
   结存数
   注意:一定要按'产品代码'和'入库日期'来排序!这是关键!排序当然是
   用SQL语句了。
  然后,用下面的代码来操纵这个rkckjc.db,达到正确按日期计算出每种产品
的结存数的目的!
procedure TForm1.Button1Click(Sender: TObject);
var
rk,ck,jc :integer;
qytcpdm,dqcpdm : string;
begin
table1.first;
jc :=0;
while not table1.eof do
begin
qytcpdm :=table1.fieldbyname('产品代码').asString;
rk :=table1.fieldbyname('入库数').asInteger;
ck :=table1.fieldbyname('出库数').asInteger;
if (rk<>0) and (ck<>0) then jc :=jc+(rk-ck);
if (rk<>0) and (ck=0) then jc :=jc+rk;
if (rk=0) and (ck<>0) then jc :=jc-ck;
table1.edit;
table1['结存数'] :=jc;
table1.next;
dqcpdm :=table1.fieldbyname('产品代码').asString;
if dqcpdm <>qytcpdm then jc :=0;
end;
end;
 
怎么了?都走光了吗?
 
这也不是闹新房,看你美的!
 
瞧你说的,咱只不过是想听听其它高手的意见罢了,俺也想提高提高一下吗。
 
后退
顶部