不知该如何命题的问题?

tdkj6236 2004-10-08 07:07:06
问题描述:我欲做一个表单,上有GRID1和GRID2,分别与表S1和S2关联。表S1和S2有相同字段“合同号”和“重量”。表单上还有一个COMMAND1。表单功能如下:
1、点击GRID1的某条记录的“合同号”GRID2显示与其合同号有关的所有记录,且在末尾增加一条合计记录,合计“重量”。
2、点点击COMMAND1,GRID2增加一条记录,且在合计记录之前。
3、在GRID2新增记录中添加“重量”记录LOSTFOCUS后,合计记录中的重量重新合计。且GRID1相应记录的重量也随之变化。
问题:在GRID2的’重量‘列中加了一段代码,在表单运行初可以实现第三条功能。但点击南COMMAND1和GRID1的’合同号‘后这段代码好象就失效了,点击也不起作用。如何解决?
...全文
213 14 打赏 收藏 举报
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
LAIYANGPJ 2004-10-09
  • 打赏
  • 举报
回复
你的GRID1中的CLOUMN1.TEXT.CLICK事件:
thisform.grid2.recordsource='s2'
thisform.grid2.refresh
thisform.grid2.setfocus
的这段代码,在用生成的临时表中会出现数据源自动更换的现像,比方说你的的数据库结构是这样的:
产品名称 C(20)
科目编码 C(20)
合同号 C(20)
重量 N(14)
那你生成临时表后,GRID2会自动默认为产品名称与科目编码两个字段而不是合同号与重量了.
LAIYANGPJ 2004-10-09
  • 打赏
  • 举报
回复
TO:可没想认为很简单的插入命令INSERT[BEFORE][BLANK]竟不灵便
因为在你的数据表中用上了SET ORDER TO 它一排序当然要乱了,你想加的空行在表格尾的话,就建一个临时表把SET ORDER TO 去掉好了.这样还可以加上多条空记录在表格尾.
TO:刚才确定了造成问题的原因,确是用SQL语句改写S2造成的代码失效。
在这之前,你一定要先把你的数据源保护起来,也就是说先把数据源清空,我的代码中有的:thisform.grid2.recordsource=''
然后再找回来:.recordsource='lsb';
.Column1.controlsource='lsb.cpmc'
.column2.controlsource='lsb.wsdj'


LAIYANGPJ 2004-10-09
  • 打赏
  • 举报
回复
不好意思,上午单位让盘点库存,等中午(11:30)我会好好看一下你发的代码.想楼下也会有人解的.
LAIYANGPJ 2004-10-09
  • 打赏
  • 举报
回复
to :另外:如何把S2中的数据写回S3中去,有好的方法吗?
我常用INSET-SQL语句,别的更的还真的不知道.
tdkj6236 2004-10-09
  • 打赏
  • 举报
回复
刚才确定了造成问题的原因,确是用SQL语句改写S2造成的代码失效。
LAIYANGPJ 2004-10-09
  • 打赏
  • 举报
回复
你可以用
*********************
stor 合同号 to h 这一句去掉好了!
**********************
appe blank
repl 合同号 with h
m=0
count all to m
go top
x=0
FOR m=1 TO m
x=x+1
repl 序号 with x
skip
endfor
u=0
sum 重量 to u
appe blank
repl 合同号 with '合计',重量 with u
go top
thisform.grid2.recordsource='s2'
thisform.grid2.refresh
thisform.grid2.setfocus
我也没测试想来一定行的.
tdkj6236 2004-10-09
  • 打赏
  • 举报
回复
另外:如何把S2中的数据写回S3中去,有好的方法吗?
tdkj6236 2004-10-09
  • 打赏
  • 举报
回复
to LAIYANFPJ
(因为在你的数据表中用上了SET ORDER TO 它一排序当然要乱了,你想加的空行在表格尾的话,就建一个临时表把SET ORDER TO 去掉好了.)
我不明白的切好是数据表并没有排序。这个问题我一直没有解决,以前也碰到一次,但绕过去了。
这次帮我看看,表中的数据是SQL语句生成的。
tdkj6236 2004-10-08
  • 打赏
  • 举报
回复
另外用COMMAND1本想在GRID2中插入一条除了重量为空的与上一条记录相同的记录,当然是要在合计的前面。可没想认为很简单的插入命令INSERT[BEFORE][BLANK]竟不灵便,不是插在最前就是最后,没办法才用现在的代码。哪位知道为什么?表S2没有索引。
还有是不是SQL语句改写S2造成的上述问题?
LAIYANGPJ 2004-10-08
  • 打赏
  • 举报
回复
不好意思,刚才那段代码是我用我的表测试的最后几句应是:
.column1.controlsource='lsb.cpmc'
.column2.controlsource='lsb.wsdj'
改为:
.column1.controlsource='lsb.合同号'
.column2.controlsource='lsb.重量'
这时只列出了两个字段,再要多加就看你的了.

tdkj6236 2004-10-08
  • 打赏
  • 举报
回复
to LAIYANGPJ
再详细点说:表S1是合同库,表S3是与S1相关的详细尺码单数据,表S2相当于你例中的‘lsb'.
我在表单的GRID1(数据源S1)中的column1.text1的click事件中的代码是:
public hhhh
hhhh=this.value
sele * from e:\vfp98\lz1\s3 where 合同号=allt(this.value) into dbf e:\vfp98\lz1\s2
sele s2
u=0
sum 重量 to u
appe blank
repl 合同号 with '合计',重量 with u
go top
thisform.grid2.recordsource='s2'
thisform.grid2.refresh
thisform.grid2.setfocus
在COMMAND1中的代码 是:
sele * from e:\vfp98\lz1\s3 where 合同号=allt(hhhh) into dbf e:\vfp98\lz1\s2
sele s2
go bottom

stor 合同号 to h
appe blank
repl 合同号 with h
m=0
count all to m
go top
x=0
FOR m=1 TO m
x=x+1
repl 序号 with x
skip
endfor
u=0
sum 重量 to u
appe blank
repl 合同号 with '合计',重量 with u
go top
thisform.grid2.recordsource='s2'
thisform.grid2.refresh
thisform.grid2.setfocus
在GRID2。COLUMN4。text1的代码为:
tt=0
sum 重量 for 合同号=allt(thisform.grid2.column2.text1.value) to tt
sele s2
go bottom
repl 重量 with tt
sele s1
repl 重量 with tt
thisform.refresh


LAIYANGPJ 2004-10-08
  • 打赏
  • 举报
回复
1.你在表单上先建立一个S3的数据环境.
2.增加GRID1,GRID2
GRID1的数据源为RECORDSOURCE:S3,其对象的数据源CONTROLSOURE:S3.合同号
GRID2的数据源为一数据表(SQL 生成的这里我命名为LSB),其对像的数据源为:LSB.合同 号.....LSB.重量等.
3.在表单的LOAD事件里生成LSB
4.在GRID1的对像TEXT1.DBCLICK事件里增加以下代码:
with thisform.grid2
.recordsource=''
sele cpmc,wsdj from S3 into table lsb where alltrim(cpmc)==thisform.grid1.column1.text1.value &&生成临时表时与这语句相当,最好是生成一个空表
SUM TO HJ 重量
appe blan
repl cpmc with '合计',WSDJ WITH 重量
GO TOP
.recordsource='lsb'
.column1.controlsource='lsb.cpmc'
.column2.controlsource='lsb.wsdj'
thisform.grid2.refresh
endwith

tdkj6236 2004-10-08
  • 打赏
  • 举报
回复
代码的晚上了,现在能说明的是还有一个表S3,第一项功能是:
1、点击GRID1的某条记录的“合同号”GRID2显示与其合同号有关的表S3中的所有记录,且在末尾增加一条合计记录,合计“重量”。
现在在外面无法把代码写出,先帮助看看如何实现上述功能,谢谢?
LAIYANGPJ 2004-10-08
  • 打赏
  • 举报
回复
把你的代友发过来看一下.
相关推荐
发帖
VFP

2572

社区成员

VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
帖子事件
创建了帖子
2004-10-08 07:07
社区公告
暂无公告