2010-10-28 72 views
0

我有兩個字段,一個是另一個字段的數字,例如,字段1 =「12AB」,字段2是「12」。我試圖讓Field 2自動更新,但我不知道如何。循環訪問字段中的所有項目並使用VBA訪問更新另一個字段

我試圖讓:

ClassName ClassYear 
12AB  12 
13BU  13 
15BE  15 

但不是在整個領域更新到人數在過去的一個:

ClassName ClassYear 
12AB  15 
13BU  15 
15BE  15 

我目前擁有的代碼是

Dim db As DAO.Database 
    Dim rst As DAO.Recordset 
    Set db = CurrentDb 
    Set rst = db.OpenRecordset("MasterTable") 

    With rst 
    Do Until .EOF 
    .Edit 
    If (Left(ClassName.Text, 1) = "1") Then 
     !ClassYear = Left(ClassName.Text, 2) 
    Else 
     !ClassYear = Left(ClassName.Text, 1) 
    End If 
    .Update 
    .MoveNext 
    Loop 

    .Close 
    End With 

非常感謝幫助!謝謝:)

+2

它不應該是'ClassName'? – Tomalak 2010-10-28 22:21:31

+0

不,我希望ClassYear根據ClassName是什麼來更新。 – Tim 2010-10-28 22:22:58

+0

但是'ClassName'不會引用任何內容,如果您的意思是*字段*感嘆號是必需的,恕我直言。 – Tomalak 2010-10-28 22:24:48

回答

3

如何上線的東西:

sSQL = "UPDATE MasterTable SET ClassYear=Left(ClassName,2) " _ 
     & "WHERE Left(ClassName,1)='1'" 
CurrentDB.Execute sSQL, dbFailOnError 

sSQL = "UPDATE MasterTable SET ClassYear=Left(ClassName,1) " _ 
     & "WHERE Left(ClassName,1)<>'1'" 
CurrentDB.Execute sSQL, dbFailOnError 
+0

我不能使用SQL查詢作爲窗體已經打開數據庫,Access不會讓我通過任何其他方式更新它,因爲數據庫已經在使用。 – Tim 2010-10-28 22:28:53

+0

如果ClassName引用表單控件,則顯然不會。 – Tomalak 2010-10-28 22:29:42

+0

但是!ClassYear在數據庫中,這正是我想要更新的內容。 – Tim 2010-10-28 22:31:52