2010-10-28 77 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