【问题标题】:Insert Calculated Field in Table as one String VBA - MS Access在表中插入计算字段作为一个字符串 VBA - MS Access
【发布时间】:2016-02-02 21:41:57
【问题描述】:

我需要打开一个表(不匹配);创建一个新字段(ID);使用现有字段创建新的唯一字符串(赫兹);然后,最后,将这个新字符串插入到表的新字段中。我被困住了,因为我是新人。任何向前推进都将不胜感激。

Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim fld As DAO.Field
Dim Hertz As String
Dim rst As DAO.Recordset

Set db = CurrentDb()
Set tdf = db.TableDefs("Unmatched")
Set fld = tdf.CreateField("ID")
Set rst = db.OpenRecordset("Unmatched", dbOpenTable)

Do Until rst.EOF
hertz = rst![Accounting Document Item] & Mid(rst![JE Line Description], 20, 2) & Round(Abs(rst![Transaction Amount]), 0)

Debug.Print hertz 'immediate window check
---> DoCmd.RunSQL "?!?!?"
rst.MoveNext
Loop

Application.RefreshDatabaseWindow

Set fld = Nothing
Set tdf = Nothing
Set db = Nothing
End Sub

【问题讨论】:

  • rst.Edit, rst.Update(参见在线帮助)
  • @Andre,谢谢。你是对的。

标签: sql vba ms-access dao recordset


【解决方案1】:
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim fld As DAO.Field
Dim Hertz As String
Dim rst As DAO.Recordset

Set db = CurrentDb()
Set tdf = db.TableDefs("Unmatched")
Set fld = tdf.CreateField("ID", dbText, 255)
tdf.Fields.Append fld

Set rst = db.OpenRecordset("Unmatched")

Do Until rst.EOF
    Hertz = rst![Accounting Document Item] & Mid(rst![JE Line Description], 20, 2) & Round(Abs(rst![Transaction Amount]), 0)
    Debug.Print Hertz
    rst.Edit
    rst!ID = Hertz
    rst.Update
    rst.MoveNext
Loop

rst.Close
Set rst = Nothing
Set db = Nothing

这就是我在代码中的做法。如果您不需要动态创建字段,更新查询会更容易。

【讨论】:

  • 感谢@JJ32 的回答和更正我的代码。你对我帮助很大。我正在学习,兄弟,但这并不容易。再次感谢您。
猜你喜欢
  • 2023-04-01
  • 1970-01-01
  • 2017-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-03
相关资源
最近更新 更多