关于combo的问题

vfp112233 2013-12-01 04:41:43
我想做一个表单,表单中有两个combo
有两个相应的表A和表B如图

两个表中的xx名称(1、2、3)是一样的。我想实现将combo1中选择xx名称(1)时,在combo2中只显示yy名称(1、2),combo1中选择xx名称(2)时,在combo2中只显示yy名称(3、4)等,这能否做,请指指点。因为菜鸟,请详细点,谢谢。
...全文
435 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
vfp112233 2013-12-11
  • 打赏
  • 举报
回复
表单运行后,Combo1 和 Combo2 值能正常显示选择,但是保存后combo2的值没有存到表中
vfp112233 2013-12-11
  • 打赏
  • 举报
回复
引用 7 楼 apple_8180 的回复:
哪步是空的? 是选择完 Combo1 后 Combo2 空的? 还是2个都有值只是没有存到表中?
combo2没有存到表中
vfp112233 2013-12-11
  • 打赏
  • 举报
回复
谢谢老师,代码改成后能正常保存到表里了。

现在还有一个问题,想请教一下:
在没有选择combo1的“乡名”之前选择combo2的“引水口名称”,此时相应的“引水口名称”直接从数据表里删除掉了,郁闷啊,请问什么原因造成的吗
十豆三 2013-12-11
  • 打赏
  • 举报
回复
保存之前 Messagebox(thisform.combo2.DisplayValue) Messagebox(thisform.combo2.Value)
十豆三 2013-12-10
  • 打赏
  • 举报
回复
哪步是空的? 是选择完 Combo1 后 Combo2 空的? 还是2个都有值只是没有存到表中?
vfp112233 2013-12-09
  • 打赏
  • 举报
回复
感谢十豆三老师,我按照你说的改了以后,combo1的值能正常录入,不能录入combo2的值,是空的。
引用 5 楼 apple_8180 的回复:
xm=alltrim(thisform.combo1.value) yshkmch=alltrim(thisform.combo2.value) 改为 xm=alltrim(thisform.combo1.DisplayValue) yshkmch=alltrim(thisform.combo2.DisplayValue)
十豆三 2013-12-03
  • 打赏
  • 举报
回复
xm=alltrim(thisform.combo1.value) yshkmch=alltrim(thisform.combo2.value) 改为 xm=alltrim(thisform.combo1.DisplayValue) yshkmch=alltrim(thisform.combo2.DisplayValue)
vfp112233 2013-12-02
  • 打赏
  • 举报
回复
首先感谢十豆三老师,combobox 控件的问题是解决了,但是表单“保存”按钮的代码失灵了,就是说表单运行后提示没有选择combo2的字段,这是怎么回事,我的“保存”按钮的代码如下(没有添加以上代码以前能正常运行)
Set Date YMD
Set Century On
Set Mark To "-"
xm=alltrim(thisform.combo1.value)
yshkmch=alltrim(thisform.combo2.value)
shxblsh=alltrim(thisform.Text1.value)
shxnbsh=ALLTRIM(thisform.text2.Value)
shxjdsh=ALLTRIM(thisform.text3.Value)
zhxblsh=ALLTRIM(thisform.text4.Value)
zhxnbsh=alltrim(thisform.Text5.value)
zhxjdsh=ALLTRIM(thisform.text6.Value)
xxblsh=ALLTRIM(thisform.text7.Value)
xxnbsh=ALLTRIM(thisform.text8.Value)
xxjdsh=alltrim(thisform.Text9.value)
yshshj=thisform.text10.Value
if empty(xm)
messagebox("请选择乡镇名称",16,"系统提示")
return
else
endif
if empty(yshkmch)
messagebox("请选择引水口名称",16,"系统提示")
return
else
endif
if empty(yshshj)
messagebox("请输入引水时间",16,"系统提示")
return
else
endif
*if empty(yshshj)
* messagebox("请输入引水时间",16,"系统提示")
* return
* else
* locate for 引水时间=CToD(ALLTRIM(thisform.Text10.value))
* if .not.eof()
* go top
* messagebox("不允许有重复的引水时间",16,"系统提示")
* thisform.Text10.setfocus
* return
* endif
* endif

if empty(shxblsh)
messagebox("请输入上旬比例水",16,"系统提示")
return
else
endif
if empty(shxnbsh)
messagebox("请输入上旬内部水",16,"系统提示")
return
else
endif
if empty(shxjdsh)
messagebox("请输入上旬机动水",16,"系统提示")
return
else
endif
if empty(zhxblsh)
messagebox("请输入中旬比例水",16,"系统提示")
return
else
endif
if empty(zhxnbsh)
messagebox("请输入中旬内部水",16,"系统提示")
return
else
endif
if empty(zhxjdsh)
messagebox("请输入中旬机动水",16,"系统提示")
return
else
endif
if empty(xxblsh)
messagebox("请输入下旬比例水",16,"系统提示")
return
else
endif
if empty(xxnbsh)
messagebox("请输入下旬内部水",16,"系统提示")
return
else
endif
if empty(xxjdsh)
messagebox("请输入下旬机动水",16,"系统提示")
return
else
endif
msg=messagebox('确定要保存记录吗?',32+4,"系统提示")
if msg=6
INSERT INTO 渠道引水量(乡名,引水口名称,上旬比例水,上旬内部水,上旬机动水,中旬比例水,中旬内部水,中旬机动水,下旬比例水,下旬内部水,下旬机动水,引水时间);
VALUES(alltrim(thisform.combo1.value),;
alltrim(thisform.combo2.value),;
alltrim(thisform.Text1.value),;
ALLTRIM(thisform.text2.Value),;
alltrim(thisform.Text3.value),;
ALLTRIM(thisform.text4.Value),;
alltrim(thisform.Text5.value),;
ALLTRIM(thisform.text6.Value),;
alltrim(thisform.Text7.value),;
ALLTRIM(thisform.text8.Value),;
ALLTRIM(thisform.text9.Value),;
ctod(ALLTRIM(thisform.Text10.value)))
thisform.grid1.Refresh
GO bottom
thisform.combo1.SetFocus
thisform.combo1.Value=""
thisform.combo2.Value=""
thisform.Text1.value=""
thisform.Text2.value=""
thisform.text3.Value=""
thisform.text4.Value=""
thisform.Text5.value=""
thisform.Text6.value=""
thisform.text7.Value=""
thisform.text8.Value=""
thisform.text9.Value=""
thisform.text10.Value=""
thisform.Refresh
ENDIF
然后,代码中红色部分第二个条件语句不能正常运行,麻烦你帮我看一下,谢谢。
十豆三 2013-12-01
  • 打赏
  • 举报
回复
在第1个 Combobox 控件的 InteractiveChange 事件加代码 If !Empty(Alltrim(This.DisplayValue)) Thisform.COMBO2.RowSource=Null Select yy名称 Into Cursor cTable1 From 表B Where Alltrim(XX名称)=Alltrim(This.DisplayValue) Order By yy名称 Thisform.COMBO2.RowSource='cTable1.yy名称' Endif
lygcw9602 2013-12-01
  • 打赏
  • 举报
回复
COMBO1属性设置: COLUMNCOUNT=1 ROWSOURCE=[表A] ROWSOURCETYPE=2 在表单的COMBO1的CLICK事件中写入代码: SELECT * FROM 表B WHERE ALLTRIM(xx名称)==ALLTRIM(THISFORM.COMBO1.VALUE) INTO CURSOR T WITH THISFORM.COMBO2 .COLUMNCOUNT=2 .ROWSOURCE=[T] .ROWSOURCETYPE=2 ENDWITH 在表单的COMBO2的CLICK事件中写入代码: THISFORM.COMBO2.DISPLAYVALUE=THISFORM.COMBO2.LIST(THISFORM.COMBO2.LISTINDEX,2)
tlliqi 2013-12-01
  • 打赏
  • 举报
回复
引用 2 楼 apple_8180 的回复:
在第1个 Combobox 控件的 InteractiveChange 事件加代码 If !Empty(Alltrim(This.DisplayValue)) Thisform.COMBO2.RowSource=Null Select yy名称 Into Cursor cTable1 From 表B Where Alltrim(XX名称)=Alltrim(This.DisplayValue) Order By yy名称 Thisform.COMBO2.RowSource='cTable1.yy名称' Endif
加 Thisform.COMBO2.RowSourcetype=6

2,749

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧