Office中国论坛/Access中国论坛

标题: 采用文本框+ Dlookup 函数 代替组合框作为录入界面控件的demo [打印本页]

作者: fd901028    时间: 2015-8-16 17:33
标题: 采用文本框+ Dlookup 函数 代替组合框作为录入界面控件的demo
本帖最后由 fd901028 于 2015-9-27 11:56 编辑

本demo尝试采用文本框+ Dlookup 函数 代替组合框,作为录入界面控件的方法,解决组合框只能录入其中一列值的问题。
demo还包含一个通用参照模式的雏形,还有许多问题,请论坛各位高手看看这种思路是否可行,还需要如何改进,谢谢!
作者: roych    时间: 2015-8-17 14:31
怎么说呢?一对一是没问题的,一对多时候,还是组合框方便一些。
事实上,组合框只需要列出一个字段就够了,没必要每个字段都列出来。
作者: zpy2    时间: 2015-8-18 15:46
求助:请高手抽空斧正一下下O(∩_∩)O~

1、上面这个办法,主窗体上的控件(文本框)能够实现。子窗体的控件却不能用事件“获得焦点”来实现立即更新!用了“退出”,显示慢半

这个问题,听不太明白,是要做成什么?
作者: zpy2    时间: 2015-8-18 15:57
本帖最后由 zpy2 于 2015-8-18 16:09 编辑

2、通用参照窗体的值来源于一个临时表,是否可以代码动态加载,比如用listBox承载候选值,筛选时遍历LiitBox,但这个筛选本人写不出来。
你写的,我都看不懂,需要达到什么效果,什么叫 动态加载,附件本身 是 删除 添加 就是动态的。

筛选时遍历LiitBox
是指用 非绑定的 listBox?

总之,不太明白需要达到什么效果?
--------------------------------------------
'用文本框录入的用法,相对来说代码多点麻烦点,但是界面更整洁美观
相对于 组合框吗? 貌似差不多。见附件[attach]57081[/attach]

'文本框的失去焦点,用Dlookup返回值

Private Sub Customer_LostFocus()
     '1、用 Dlookup 从数据源获取值,用两个条件: 代码= 或 值=, 这样用户可以输入值或代码均可
   
    '2、返回值可能为空(用户输入错误),用 Nz
   
    Me.Customer = Nz(DLookup("[cusName]", "tblCustomer", "[cusCode]='" & Me.Customer & "' Or [cusName]='" & Me.Customer & "'"), "")
   
End Sub

作者: fd901028    时间: 2015-8-19 20:39
zpy2 发表于 2015-8-18 15:57
2、通用参照窗体的值来源于一个临时表,是否可以代码动态加载,比如用listBox承载候选值,筛选时遍历LiitBo ...

     用“文本框+Dlookup”代替组合框的原因:录入人员提出“是否可以录入物料编码或物料名称均可”,但是“未经改造”的组合框一旦绑定,要么录入物料编码要么录入物料名称,二者不可得兼。在VBA中改造组合框似乎很难,目前还在找“在VBA中自定义控件”的资料。
作者: fd901028    时间: 2015-8-19 20:57
本帖最后由 fd901028 于 2015-8-19 21:28 编辑
zpy2 发表于 2015-8-18 15:46
求助:请高手抽空斧正一下下O(∩_∩)O~

1、上面这个办法,主窗体上的控件(文本框)能够实现。子窗体的控 ...

frm Refer“参照窗体”  是想做成一个通用参照模块(一处水源供全国)。
  参照的思路是:从一个主窗体A的控件B“离开”,打开通用参照窗体,完成筛选后返回值C,A窗体成为当前窗体,离开时的控件B再次“getfocus”,事件getfocus将返回值C赋值给控件B,完成参照过程。
  问题:A窗体的子窗体当前控件D却不能用事件getfocus来刷新,我理解是:当A窗体再次成为当前时,虽然子窗体控件D“似乎”获得焦点(光标在闪),但“真正”获得焦点的是他的父窗体?
   抑或:当我们把一个窗体“数据表化”后,在当前子窗体内,同时出现了“n个控件D”(n行),Access如何确定我们想getfocus的那一行控件D?
   在VS中,表格控件datagridview用Rowindex和Columnindex定位一个单元格(同理,Excell也是这样)。

作者: zpy2    时间: 2015-8-20 05:39
嗯,你说的对,这种多字段的的确用文本框+DLookup了
作者: zpy2    时间: 2015-8-20 05:56
题:A窗体的子窗体当前控件D却不 能用事件getfocus来刷新,我理解是: 当A窗体再次成为当前时,虽然子窗体 控件D“似乎”获得焦点(光标在闪), 但“真正”获得焦点的是他的父窗体? 一种是用vb网格控件,另一种,在进入输入窗体时,保存 引用 如 set ctl= Screen.PreviousControl,返回后,用ctl.setfocus,行列,应是 调出输入窗体前的控件被激活。 如果就一列即名称一个控件,用硬编码,直接指定控件名称setfocus也行
作者: zpy2    时间: 2015-8-20 06:00
或:当我们把一个窗体“数据表 化”后,在当前子窗体内,同时出现 了“n个控件D”(n行),Access如何确 定我们想getfocus的那一行控件D? 把一个非绑定的文本框放到有绑定文本框的 数据表视图 窗体?这恐怕不行。
作者: zpy2    时间: 2015-8-20 06:00
或:当我们把一个窗体“数据表 化”后,在当前子窗体内,同时出现 了“n个控件D”(n行),Access如何确 定我们想getfocus的那一行控件D? 把一个非绑定的文本框放到有绑定文本框的 数据表视图 窗体?这恐怕不行。
作者: zpy2    时间: 2015-8-20 06:06
fd901028 发表于 2015-8-19 20:57
frm Refer“参照窗体”  是想做成一个通用参照模块(一处水源供全国)。
  参照的思路是:从一个主窗体 ...

或:当我们把一个窗体“数据表 化”后,在当前子窗体内,同时出现 了“n个控件D”(n行),Access如何确 定我们想getfocus的那一行控件D?
把一个非绑定的文本框放到有绑定文本框的 数据表视图 窗体?这恐怕不行。
你说的应是MsFLexGrid吗?不是DataGridView,DataGridView是.net的吧?
作者: langtaoim    时间: 2018-4-10 15:43
多谢老师。
作者: langtaoim    时间: 2018-4-11 03:35
[attach]62567[/attach]请问老师,这个窗体打开后,显示空白行待输入,而不是表中已有的数据,请问这是怎么做到的呢?





欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3