Office中国论坛/Access中国论坛

标题: 能不能把两个文本框的内容对应起来? [打印本页]

作者: wuhanshayo    时间: 2005-10-13 19:51
标题: 能不能把两个文本框的内容对应起来?
我分别想把区名和号码(只允许6位)的前两位对应起来

区别      号码

中区      01XXXX

东区      02XXXX

南区      03XXXX

西区      04XXXX

北区      05XXXX

我希望在选择了地区的时候号码的前两位就自动填上,该如何实现?


作者: 一点通    时间: 2005-10-13 22:25
可以在[区别]文体框的更新事件中写入下面代码,本代码默认值为0001,有号码时自动递增

Private Sub 区别_BeforeUpdate(Cancel As Integer)



If IsNull(DLookup("[号码]", "区别表", "[区别]=" & "'" & 区别 & "'")) Then '查询表中是否有该区别有号码

'没有时增加一个区别号+号码

    If Me.区别 = "中区" Then

       Me.号码 = "010001"

    ElseIf Me.区别 = "东区" Then

        Me.号码 = "020001"

    ElseIf Me.区别 = "南区" Then

        Me.号码 = "030001"

    ElseIf Me.区别 = "西区" Then

        Me.号码 = "040001"

    ElseIf Me.区别 = "北区" Then

        Me.号码 = "050001"

    Else  '如果不在区别范围内发出提示

        MsgBox "输入的区别有误,请重输入", , "系统提示"

    End If

Else  '如果表中有该区别,在原号码基础上+1

   Me.号码 = DMax("[号码]", "区别表", "[区别]=" & "'" & 区别 & "'") + 1

End If



End Sub



[此贴子已经被作者于2005-10-13 14:31:16编辑过]


作者: wuhanshayo    时间: 2005-10-13 23:31
可是,这些号码不是连续的能不能让号码只显示前两位或者光标停在第三位数的地方?
作者: eyewitnes    时间: 2005-10-14 02:52
以下是引用wuhanshayo在2005-10-13 11:51:00的发言:

我分别想把区名和号码(只允许6位)的前两位对应起来

区别      号码

中区      01XXXX

东区      02XXXX

南区      03XXXX

西区      04XXXX

北区      05XXXX

我希望在选择了地区的时候号码的前两位就自动填上,该如何实现?



select case 区名

          CASE 中区

                号码="01"

          CASE 东区

           。。。。

end select

不过有另外一个办法,将区名控件改为值列表,2列数据,第一列宽度为0,然后添加值:01;中区;02;东区......;然后在区名的更新事件中加入代码 me.号码=me.区名

[此贴子已经被作者于2005-10-13 18:56:40编辑过]


作者: zyz218    时间: 2005-10-14 03:13
用二列解决这个问题比较,其中一列为自动编号(表属性中:格式为0000)一列为号码,在区别控件的更新后事件中这样写:If Me.区别 = "中区" Then

            Me.号码 = "01"&me.自动编号

       end if

       If Me.区别 = "东区" Then

            Me.号码 = "02"&me.自动编号

       end if

       If Me.区别 = "南区" Then

            Me.号码 = "03"&me.自动编号

       end if

       If Me.区别 = "西区" Then

            Me.号码 = "04"&me.自动编号

       end if

       If Me.区别 = "北区" Then

            Me.号码 = "05"&me.自动编号

       end if我想你的区别应是组合框并且是限于列表。这样不知是不是一个好的解决方法????


作者: zyz218    时间: 2005-10-14 03:15
自动编号可以设为从0001开始计数的,想必你知道:)
作者: 一点通    时间: 2005-10-14 08:37
以下是引用wuhanshayo在2005-10-13 15:31:00的发言:



可是,这些号码不是连续的

能不能让号码只显示前两位

或者光标停在第三位数的地方?



可以的
作者: wuhanshayo    时间: 2005-10-14 18:53
to eyewitnes:

方法1,不知道为什么,什么也不运行?……

方法2,添加了01;中区;02;东区.....后,更新事件中加入代码 me.号码=me.区名,运行,号码和区名一样显示为中文,如何能使号码显示为区名的第一列?

to zyz218

您说:其中一列为自动编号(表属性中:格式为0000)一列为号码,

这个能设置列的标题的吗?这“自动编号”怎么跑出来的?

能不能再说明白点,或者给个案例我看看?……

谢谢了!

[此贴子已经被作者于2005-10-14 10:55:19编辑过]


作者: wuhanshayo    时间: 2005-10-14 19:04
以下是引用一点通在2005-10-14 0:37:00的发言:





可以的

如何能做到把光标停在第三位????

[此贴子已经被作者于2005-10-14 11:05:05编辑过]


作者: eyewitnes    时间: 2005-10-14 19:45
以下是引用wuhanshayo在2005-10-14 10:53:00的发言:



to eyewitnes:

方法1,不知道为什么,什么也不运行?……

方法2,添加了01;中区;02;东区.....后,更新事件中加入代码 me.号码=me.区名,运行,号码和区名一样显示为中文,如何能使号码显示为区名的第一列?

方法1在我这里可以跑吖

方法2要注意这里:将区名控件改为值列表,格式中列数=2,第一列宽度为0,第二列宽度最好跟控件一样宽
作者: sgrshh29    时间: 2005-10-14 19:45
在这个控件获得焦点时,          控件名.SelStart = Len(控件名)
作者: wuhanshayo    时间: 2005-10-15 00:12
ok!问题解决!!宽度要和控件一样才可以……




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