| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 456 人关注过本帖
标题:再问多表表单问题
只看楼主 加入收藏
陶然愚者
Rank: 1
等 级:新手上路
帖 子:151
专家分:8
注 册:2012-12-13
结帖率:100%
收藏
已结贴  问题点数:14 回复次数:9 
再问多表表单问题
上次请教了一个问题,结果因期间有2天有事未能上论坛,还没等到求解就被通知“结帖”,只好自个儿再捉摸,修改了几个对象属性值,反复多次,问题仍未得到解决,只好再次将问题提出来,希望有热心朋友指点迷津。

还是这个界面——
图片附件: 游客没有浏览图片的权限,请 登录注册

说明:1、表单的数据环境中设置了两个数据库表:qyjbxxb.dbf(企业基本信息表)、qyzycpk.dbf(企业主要产品库),并设置了两表以共有字段jgdm建立的永久联系;
2、表单的功能目标是希望用户在TEXT1文本框中输入企业代码后,点击“查询”按纽,系统即从企业基本信息表中查找符合条件的记录,如果存在,则界面上部各文本框控件(或编辑框控件)中显示企业基本信息表中符合条件的记录相关字段的值;然后在企业主要产品库中搜索对应于该企业的产品记录,在界面下部的表格中显示出来;
问题:
如果设置表单的Bindcontrols属性为“.F.”,表单运行后,上部初始显示空值,在TEXT1文本框输入某个企业代码后,企业基本信息显示正常,而下部表格中没有相应数据显示(注:企业主要产品库中是存在该企业的产品记录的),界面也没有任何出错消息提示;如果设置设置表单的Bindcontrols属性为“.T.”,表单运行后,上部初始会显示企业基本信息表中第一条逻辑记录的值,下部表格中也有数据显示,但却是企业主要产品库中的全部记录。在TEXT1文本框输入某个企业代码后,点击“查询”按纽,界面中企业基本信息显示正常,表格中又没有任何数据显示。运行结果如下图:
图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册

注:在“查询”按纽的Click事件中抛入了如下代码:
SELECT qyzycpk

LOCATE for ALLTRIM(qyzycpk.jgdm)=qydm
IF FOUND()
thisform.BindControls=.T.
thisform.container2.grid1.recordsourcetype=4
SELECT qyzycpk.zycp as 产品名称,qyzycpk.cpbzdh as 执行标准编号,qyzycpk.cpbzmc as 执行标准名称,qyzycpk.cpbzdj as 标准等级,;
qyzycpk.cbbz as 是否采标,qyzycpk.hjmc as 获奖名称,qyzycpk.hjsj as 获奖时间,qyzycpk.yxqx as 有效期限,qyzycpk.xklx as 许可类型,;
qyzycpk.xkzh as 许可证号,qyzycpk.xksj as 获证时间,qyzycpk.xkqx as 许可期限 FROM qyzycpk WHERE jgdm=qyjbxxb.jgdm INTO CURSOR qycp
THISFORM.container2.GRID1.RECORDSOURCE="qycp"


thisform.Refresh

ELSE
MESSAGEBOX('该企业尚未登记任何产品')
ENDIF
请教各位大侠:我的问题到底出在哪里?跪求了!
搜索更多相关主题的帖子: 企业 数据库表 文本框 用户 
2013-01-07 16:58
月沐庭轩
Rank: 9Rank: 9Rank: 9
来 自:京城
等 级:贵宾
威 望:17
帖 子:393
专家分:1106
注 册:2011-7-24
收藏
得分:5 
在代码前面加上这样一句:THISFORM.container2.GRID1.RECORDSOURCE=.null.试试
即你的代码为:
程序代码:
SELECT qyzycpk
LOCATE for ALLTRIM(qyzycpk.jgdm)=qydm
IF FOUND()
THISFORM.container2.GRID1.RECORDSOURCE=.null.
SELECT qyzycpk.zycp as 产品名称,qyzycpk.cpbzdh as 执行标准编号,qyzycpk.cpbzmc as 执行标准名称,qyzycpk.cpbzdj as 标准等级,;
qyzycpk.cbbz as 是否采标,qyzycpk.hjmc as 获奖名称,qyzycpk.hjsj as 获奖时间,qyzycpk.yxqx as 有效期限,qyzycpk.xklx as 许可类型,;
qyzycpk.xkzh as 许可证号,qyzycpk.xksj as 获证时间,qyzycpk.xkqx as 许可期限 FROM qyzycpk WHERE jgdm=qyjbxxb.jgdm INTO CURSOR qycp
THISFORM.container2.GRID1.RECORDSOURCE="qycp"
thisform.container2.GRID1.Refresh

坚持学习vfp,QQ:306805680
2013-01-07 17:26
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9811
专家分:27017
注 册:2012-2-5
收藏
得分:5 
上传表单
Bindcontrols属性恢复默认设置.T.

[ 本帖最后由 sdta 于 2013-1-7 18:14 编辑 ]

坚守VFP最后的阵地
2013-01-07 18:12
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9811
专家分:27017
注 册:2012-2-5
收藏
得分:0 
以下是引用陶然愚者在2013-1-7 16:58:01的发言:

上次请教了一个问题,结果因期间有2天有事未能上论坛,还没等到求解就被通知“结帖”,只好自个儿再捉摸,修改了几个对象属性值,反复多次,问题仍未得到解决,只好再次将问题提出来,希望有热心朋友指点迷津。

还是这个界面——

说明:1、表单的数据环境中设置了两个数据库表:qyjbxxb.dbf(企业基本信息表)、qyzycpk.dbf(企业主要产品库),并设置了两表以共有字段jgdm建立的永久联系;
2、表单的功能目标是希望用户在TEXT1文本框中输入企业代码后,点击“查询”按纽,系统即从企业基本信息表中查找符合条件的记录,如果存在,则界面上部各文本框控件(或编辑框控件)中显示企业基本信息表中符合条件的记录相关字段的值;然后在企业主要产品库中搜索对应于该企业的产品记录,在界面下部的表格中显示出来;
问题:
如果设置表单的Bindcontrols属性为“.F.”,表单运行后,上部初始显示空值,在TEXT1文本框输入某个企业代码后,企业基本信息显示正常,而下部表格中没有相应数据显示(注:企业主要产品库中是存在该企业的产品记录的),界面也没有任何出错消息提示;如果设置设置表单的Bindcontrols属性为“.T.”,表单运行后,上部初始会显示企业基本信息表中第一条逻辑记录的值,下部表格中也有数据显示,但却是企业主要产品库中的全部记录。在TEXT1文本框输入某个企业代码后,点击“查询”按纽,界面中企业基本信息显示正常,表格中又没有任何数据显示。运行结果如下图:


注:在“查询”按纽的Click事件中抛入了如下代码:
SELECT qyzycpk

LOCATE for ALLTRIM(qyzycpk.jgdm)=qydm
IF FOUND()
thisform.BindControls=.T.
thisform.container2.grid1.recordsourcetype=4
SELECT qyzycpk.zycp as 产品名称,qyzycpk.cpbzdh as 执行标准编号,qyzycpk.cpbzmc as 执行标准名称,qyzycpk.cpbzdj as 标准等级,;
qyzycpk.cbbz as 是否采标,qyzycpk.hjmc as 获奖名称,qyzycpk.hjsj as 获奖时间,qyzycpk.yxqx as 有效期限,qyzycpk.xklx as 许可类型,;
qyzycpk.xkzh as 许可证号,qyzycpk.xksj as 获证时间,qyzycpk.xkqx as 许可期限 FROM qyzycpk WHERE jgdm=qyjbxxb.jgdm INTO CURSOR qycp
THISFORM.container2.GRID1.RECORDSOURCE="qycp"


thisform.Refresh

ELSE
MESSAGEBOX('该企业尚未登记任何产品')
ENDIF
请教各位大侠:我的问题到底出在哪里?跪求了!
红字处可以用SELECT-SQL语句替换,没必要这么复杂
qydm变量那来的
qyjbxxb这个表名那来的


[ 本帖最后由 sdta 于 2013-1-7 18:32 编辑 ]

坚守VFP最后的阵地
2013-01-07 18:16
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9811
专家分:27017
注 册:2012-2-5
收藏
得分:0 
SELECT qyzycpk

LOCATE for ALLTRIM(qyzycpk.jgdm)=qydm
IF FOUND()
thisform.BindControls=.T.
thisform.container2.grid1.recordsourcetype=4
SELECT qyzycpk.zycp as 产品名称,qyzycpk.cpbzdh as 执行标准编号,qyzycpk.cpbzmc as 执行标准名称,qyzycpk.cpbzdj as 标准等级,;
qyzycpk.cbbz as 是否采标,qyzycpk.hjmc as 获奖名称,qyzycpk.hjsj as 获奖时间,qyzycpk.yxqx as 有效期限,qyzycpk.xklx as 许可类型,;
qyzycpk.xkzh as 许可证号,qyzycpk.xksj as 获证时间,qyzycpk.xkqx as 许可期限 FROM qyzycpk WHERE jgdm=qyjbxxb.jgdm INTO CURSOR qycp
THISFORM.container2.GRID1.RECORDSOURCE="qycp"


thisform.Refresh

ELSE
MESSAGEBOX('该企业尚未登记任何产品')
ENDIF
qyjbxxb.dbf(企业基本信息表)、qyzycpk.dbf(企业主要产品库)两表的结构以及与上面这段代码有何关系
楼主的问题说的不是很明白

坚守VFP最后的阵地
2013-01-07 18:42
qjbzjp
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:尧的故乡
等 级:贵宾
威 望:48
帖 子:1914
专家分:4397
注 册:2007-3-14
收藏
得分:5 
删除空格试试:
LOCATE for ALLTRIM(qyzycpk.jgdm)=ALLTRIM(qydm)

相互学习,互相交流,共同提高。
2013-01-07 20:15
陶然愚者
Rank: 1
等 级:新手上路
帖 子:151
专家分:8
注 册:2012-12-13
收藏
得分:0 
回各位热心朋友:
1、关于变量qydm:之前有定义并赋值为qydm=alltrim(thisform.container1.text1.value)
2、qyjbxxb、qyzycpk两表都有jgdm这个字段,并且都建立了索引;这两个表都是数据库表,并且添加到了表单的数据环境里
2013-01-08 08:22
qjbzjp
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:尧的故乡
等 级:贵宾
威 望:48
帖 子:1914
专家分:4397
注 册:2007-3-14
收藏
得分:0 
最好将表单及相关的表传上来,表中保留少量修改过的记录,这样可以尽快找到问题所在。

相互学习,互相交流,共同提高。
2013-01-08 09:21
陶然愚者
Rank: 1
等 级:新手上路
帖 子:151
专家分:8
注 册:2012-12-13
收藏
得分:0 
谢谢各位热心关注。问题已解决。
2013-01-08 16:56
月沐庭轩
Rank: 9Rank: 9Rank: 9
来 自:京城
等 级:贵宾
威 望:17
帖 子:393
专家分:1106
注 册:2011-7-24
收藏
得分:0 
怎么解决也不共享?

坚持学习vfp,QQ:306805680
2013-01-08 19:09
快速回复:再问多表表单问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018442 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved