2013-02-17 98 views
0

我有7个名为lblSun,lblMon等文本框和7个名为cmdSun,cmdMon等的按钮。我想在查询中更改这些文本框和按钮的Text值。我试过Me.Controls("cmd" & daysOfWeek(i)).Text,但它不起作用。动态更改文本框的值?

的错误不是设置为一个对象的一个​​实例对象引用。

这里是我的代码:

Public Sub loadSchedule() 
    ' days of week 
    Dim daysOfWeek(0 To 6) As String 
    Dim i As Integer 
    Dim var As String 
    Dim ctrl As Control 
    ' set up the days of the week 
    daysOfWeek(0) = "Sun" 
    daysOfWeek(1) = "Mon" 
    daysOfWeek(2) = "Tue" 
    daysOfWeek(3) = "Wed" 
    daysOfWeek(4) = "Thu" 
    daysOfWeek(5) = "Fri" 
    daysOfWeek(6) = "Sat" 
    ' connect to the db 
    Dim con As OleDb.OleDbConnection = New OleDb.OleDbConnection(Form1.conString) 
    con.Open() 
    ' query stuff 
    Dim query As String 
    Dim cmd As New OleDb.OleDbCommand 
    Dim rs As OleDb.OleDbDataReader 
    ' loop 
    For i = LBound(daysOfWeek) To UBound(daysOfWeek) 
     ' set query 
     query = "SELECT * FROM Schedule WHERE Employee=" & employee & " AND ScheduleDay='" & daysOfWeek(i) & "'" 
     cmd = New OleDb.OleDbCommand(query, con) 
     rs = cmd.ExecuteReader() 
     ' var 
     var = "cmd" & daysOfWeek(i) 
     ' any results? 
     If rs.HasRows = True Then 
      ' get it 
      rs.Read() 
      ' show it baby 
      'Controls("lbl" & daysOfWeek(i)).Text = rs.Item("TimeIn") & " - " & rs.Item("TimeOut") 
      Me.Controls("cmd" & daysOfWeek(i) & "").Text = "Edit" 
     Else 
      ' show it baby 
      Controls("lbl" & daysOfWeek(i)).Text = "RDO" 
      Controls("cmd" & daysOfWeek(i)).Text = "New" 
     End If 
    Next 
    ' close db 
    con.Close() 
End Sub 

谁能帮助我?我究竟做错了什么?

+0

你有你坐的按钮在面板上? – AbZy 2013-02-17 16:54:30

+0

他们被放置在一个表格(停靠),在一个窗体。 – Peter 2013-02-17 16:58:18

回答

1

您试图访问控件中Me.Controls不存在的,因为按钮/文本框是在表内。

你应该使用:

table.Controls("cmd" & daysOfWeek(i)).Text = "Edit" 
+0

谢谢,修好了!我简直不敢相信这件事很简单! – Peter 2013-02-17 17:05:48

+0

@彼得不客气:) – AbZy 2013-02-17 17:06:38