请教一个常用的表单如何设计!还有一个事务问题!

winsonruan 2004-10-22 02:38:28
请教:1.使用一个combox来选择a表的一个字段,当选定某个值的时候,转到下面的表格控制b表,其中b表中的一个字段的值要和combox的值一样(实际上就是a表与b表形成一对多关系!),并要在表格中显示出来,表格其他字段要求使用者输入,可以通过特定的触发事件根据使用者的要求不断增加记录。求这段代码。万分感谢!!!


2.发现使用事务处理后记录难以定位,有时是负数,有时又不是,请教各位如何能在事务处理中准确定位,上面的程序最好是在事务处理中的,谢谢。




...全文
140 16 打赏 收藏 举报
写回复
16 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
LAIYANGPJ 2004-10-24
  • 打赏
  • 举报
回复
把这段代码改一下:
2.thisform.grid1.column1.text1.DBLCLICK代码:
with thisform.grid2
.recordsource=''
select distinct a.* from zhucheng a,cailiao b where alltrim(a.hpdm)==alltrim(thisform.grid1.column1.text1.value) into dbf zhucelsb
.recordsource='zhucelsb'
go top
.setfocus
.refresh
endwith
********************************
2.thisform.COMBO1.INTERACTIVECHANGE代码:
with thisform.grid2
.recordsource=''
select distinct a.* from zhucheng a,cailiao b where alltrim(a.hpdm)==alltrim(thisform.COMBO1.text) into dbf zhucelsb
.recordsource='zhucelsb'
go top
.setfocus
.refresh
endwith

winsonruan 2004-10-23
  • 打赏
  • 举报
回复
请教LAIYANGPJ(小丑)!我的combox如何写代码呢?其实我关键就是combox那段代码不会写,不知道如何能让我增加的记录的zhucheng.hpdm(组成库的货品代码)直接等于combox选定的值。
十豆三 2004-10-23
  • 打赏
  • 举报
回复
To: dfwxj(清风) 版主

我发现你的方法总是与别人不太一样,不错,这样可以向你学习不同方法!!!
dfwxj 2004-10-23
  • 打赏
  • 举报
回复
好象不是太复杂的,

例如表格的数据源为TB,COMB的数据源为TA.F1,通用字段为F1

表格初始:
sele tb
set filt to .f.
go top
thisform.grd1.refresh

COMB的INTERACTIVECHANGE事件:
sele tb
set filt to allt(f1)==allt(this.displayvalue)
go top
thisform.grd1.refresh
十豆三 2004-10-23
  • 打赏
  • 举报
回复
我建了一表单,表单上有两个控件,一个为Combo1,一个为Grid1

1、在表单的load事件中输入:
PUBLIC C_BM
SELECT 2
USE zhucheng
SELECT 1
USE cailiao

2、在表单的Combo1的Valid事件中输入:
SELECT 1
C_BM=ALLTRIM(This.Value)
SELECT 2
SET FILTER TO ALLTRIM(hpdm)==C_BM
GO TOP
thisform.grid1.SetFocus
thisform.grid1.refresh

运行表单后,选择Combo1的任意值(即Cailiao表的任意Cldm),然后Grid1表中显示Hpdm等于选定的Cldm的记录。


不知道这是你要的的吗?如果不是,请详细说明一下!
winsonruan 2004-10-23
  • 打赏
  • 举报
回复
关键是要实现combox选定cailiao.cldm的时候,下面的表格中的zhucheng.hpdm要等于cailiao.cldm!而且是每增加一个马上能在下面的表格显示出来,我主要是这在这个功能上被卡住了!另外事务处理中的记录定位也是个问题!麻烦大家帮忙实现这段代码!小弟感激不尽!
淡蓝冰 2004-10-23
  • 打赏
  • 举报
回复
首先A表與B表以一個主關鍵字建立一個一對多的索引呀﹐然后在顯示B表的控件中設置更新就應該可以實現呀。至于表格的其它字段可以通过特定的触发事件根据使用者的要求不断增加记录﹐可以在文本框中寫代碼來完成。
LAIYANGPJ 2004-10-23
  • 打赏
  • 举报
回复
对了,数据源分别是CAILAO.DBF 与ZHUCELSB.DBF
LAIYANGPJ 2004-10-23
  • 打赏
  • 举报
回复
这会你可说明白了,你现在这两个库中的CAILIAO.CLDM与ZHUCHENG.HPDM是关联的.你加上以下代码看下:
1.THISFORM.LOAD代码:
select * from zhucheng into dbf zhucelsb where recno()<1
2.thisform.grid1.column1.text1.DBLCLICK代码:
with thisform.grid2
.recordsource=''
select distinct a.* from zhucheng a,cailiao b where alltrim(a.hpdm)==alltrim(thisform.grid1.column1.text1.value) into dbf zhucelsb
.recordsource='zhucelsb'
go top
.setfocus
.refresh
endwith
3.COMMAND1.CLICK  &&增加一行
with thisform.grid2
.recordsource=''
if used('zhucelsb')
select zhucelsb
else
use zhucelsb
endif
append blank
.recordsource='zhucelsb'
go top
.setfocus
.refresh
endwith
&&其它的需要你把ZHUCELSB增加的数据记录到原来的表ZHUCHENG就要你加代码了,当然以上的代码也可以用SET DELETE ON实现,但这语句不提倡用,我也没写这代码.
winsonruan 2004-10-23
  • 打赏
  • 举报
回复
惨!看来是我表达得不清楚了!cailiao.cldm(材料代码)在combox选定一个后,下面的grid要通过一个事件在zhucheng表增加记录,比如一个按钮的click!增加一条记录之后,每一条被增加的记录的hpdm(货品代码)都要等于combox选定的cailiao.cldm。我这个表的目的是要通过combox和grid的结合输入一个材料的各个组成部分,cailiao.cldm是这个材料的代码,cailiao库记录着这个材料的信息,zhucheng库是cailiao库中每一个材料的组成,比如:材料是灯,组成库会有这灯的材料代码,并用n条记录记录着这灯的各个组成部分(比如:钨丝,玻璃灯头)的相关信息!能理解吗??麻烦各位大侠!不好意思!小弟再次感谢!
winsonruan 2004-10-22
  • 打赏
  • 举报
回复
麻烦各位!!帮忙搞定这段代码!谢谢!
LAIYANGPJ 2004-10-22
  • 打赏
  • 举报
回复
弄错了,本人语言水平较差,不过你也说的不清楚.我现在更看不懂了这A.B表都只有一个字段,怎么能成为一对多关系?再讲一遍吧!!打几个字不麻烦吧!
winsonruan 2004-10-22
  • 打赏
  • 举报
回复
什么啊??cailiao.cldm是字段啊!zhucheng.hpdm也是字段啊!!
LAIYANGPJ 2004-10-22
  • 打赏
  • 举报
回复
那你就在数据库中建立A表与B表cailiao.cldm表ZHcheng.hpdm的关联.然后分别把这四个表生都生成其临时表LSBA,LSBB,LSBC,LSBD做为其数据源.
winsonruan 2004-10-22
  • 打赏
  • 举报
回复
假设a表叫cailiao表(材料表),b表叫组成表(zhucheng),cailiao.cldm(材料代码)与zhucheng.hpdm(货品代码)形成一对多关系。麻烦apple_8180(十豆三)了!
十豆三 2004-10-22
  • 打赏
  • 举报
回复
能举个例子吗?
发帖
VFP

2576

社区成员

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