ACCESS VBA 中如何用数组解决这个问题

有一个表machinestate,它有两个字段machine,state。现在要根据每条记录的state,把窗体中machine对应的图标显示出来。对第一台机,VBA代码... 有一个表machinestate, 它有两个字段machine, state。现在要根据每条记录的state,把窗体中machine对应的图标显示出来。
对第一台机,VBA代码如下:
Private Sub refreshstatus()
Select Case DLookup("STATE", "MACHINESTATE", "MACHINE= 'A01'")
Case 0
ImgA01.Picture = "running"
Case 1 To 2
ImgA01.Picture = "standby"
Case 3 To 4
ImgA01.Picture = "stop"
Case 5 To 10
ImgA01.Picture = "fault"
End Select
End Sub
问题是:我有上百台机。有没有办法用数组来解决问题,比如把machinestate中的每条记录,找到machine(如"A01" )的state,然后在case中的语句内使用Img'A01'.picture? 怎么写这个属性名才合法?
展开
 我来答
百无生
推荐于2016-04-25 · TA获得超过2214个赞
知道大有可为答主
回答量:2150
采纳率:80%
帮助的人:649万
展开全部
用recordset解决。 me.recordset用来提取当前窗体的记录集
sub setall()
dim rs as dao.recordset
set rs = me.recordset
with rs
.movefirst
do until .eof
refreshstatus .fieds("STATE").value
.movenext
loop
end with
set rs=nothing
end sub

Private Sub refreshstatus(intState as integer)
Select Case intState
Case 0
ImgA01.Picture = "running"
Case 1 To 2
ImgA01.Picture = "standby"
Case 3 To 4
ImgA01.Picture = "stop"
Case 5 To 10
ImgA01.Picture = "fault"
End Select
End Sub
追问

高手,我刚学不久,recordset还在努力研究之中。可能我的问题没表达明白。示例如附,上百台机器都要显示各自的状态,但如果我按你的代码,看起来只是A01的图片会变啊。

大侠请指点。

追答

刚弄清楚你的意思,附件里用Form1做了个示例,点击按钮运行代码。

代码简要解释如下:

Private Sub Command6_Click()
    SetAll
End Sub

'通过点击按钮调用下面的过程


Sub SetAll()
    Dim rs As DAO.Recordset
    Set rs = Me.MachineStatus.Form.Recordset
    With rs
        .MoveFirst
        Do Until .EOF
            refreshstatus .Fields("Machine").Value, .Fields("State").Value
            .MoveNext
        Loop
    End With
    Set rs = Nothing
End Sub
'依次根据机器名和状态值调用子过程给与机器同名的图片赋值


Private Sub refreshstatus(strMachine As String, intState As Integer)
    Dim ctr As Control, strName As String
    strName = "Img" & strMachine
    Set ctr = Me.Controls(strName)
    With ctr
        Select Case intState
        Case 0
            .Picture = "running.jpg"
        Case 1 To 2
            .Picture = "standby.jpg"
        Case 3 To 4
            .Picture = "stop.jpg"
        Case 5 To 10
            .Picture = "fault.jpg"
        End Select
    End With
    Set ctr = Nothing
End Sub
'使用control对象来引用图片,根据图片名选择图片,再改变图片属性

 

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式