【发布时间】:2020-07-13 19:21:48
【问题描述】:
我在下面有以下代码,它基于值字段(其中包含数据)按顺序构建/创建描述。例如,我有一个包含以下字段的表... 物品 分类 属性名称 价值 计量单位 状态
我要做的是插入一行代码,该代码将仅从状态字段 = 活动的值字段(其中包含数据)构建描述。状态字段信息是“活动”或“外国”。目前,如果 Status 字段显示“Foreign”,则代码还将为这些我刚刚学到的不应该包含的记录构建描述。
任何帮助将不胜感激!同样,下面是代码...
Sub SD()
DoCmd.SetWarnings False
Dim db As DAO.Database
Dim rsMara, rs_cou As DAO.Recordset
Dim rs, rs2, x As DAO.Recordset
Dim SD, strAttribute, strValue, sdvalue As String
Dim seq, d, count1 As Integer
Set db = CurrentDb
db.Execute ("UPDATE Item_Template SET Description = '', Long_Description = '';")
Set rsMara = db.OpenRecordset("select * from [Item_Template] order by [Item]")
While Not rsMara.EOF
If rsMara.Fields("Classification") & "" <> "" Then
SD = UCase(rsMara.Fields("Classification")) & ": "
seq = 1
Set rs = db.OpenRecordset("select * from All_Item_Attributes where [Item] = '" & rsMara.Fields("Item") & "' and [Value] & '' <> '' order by [Item],[Sequence (Cls Attribute Mapping)]")
While Not rs.EOF
If (rs.Fields("UOM") Like "IN*" Or rs.Fields("UOM") Like "O*") Then
SD = SD & rs.Fields("Value") & " " & UCase(rs.Fields("UOM")) & ", "
Else
SD = SD & rs.Fields("Value") & " " & UCase(rs.Fields("UOM")) & ", "
End If
rs.MoveNext
Wend
SD = Trim(SD)
rsMara.Edit
SD = Trim(Mid(SD, 1, Len(SD) - 1))
rsMara.Fields("Description") = Trim(SD)
rsMara.Fields("Description") = Replace(rsMara.Fields("Description"), " ,", ", ")
rsMara.Fields("Description") = Replace(rsMara.Fields("Description"), " ", " ")
rsMara.Update
End If
DoEvents
rsMara.MoveNext
Wend
End Sub
【问题讨论】:
-
Dim rsMara, rs_cou As DAO.Recordset- 只有rs_cou是DAO.Recordset。rsMara是variant。您需要使用Dim rsMara As DAO.Recordset, rs_cou As DAO.Recordset。与其他变量声明相同。 -
我一直想知道这一点 - 当您创建一个名为
Value的字段时,Access 不会抱怨吗?...is a reserved word..... -
您能否发布一些示例数据和预期结果 - 看起来应该有比您的代码显示的更简单的方法。