我有一个Access数据库,其中包含一个主表和一个引用表。我试图根据表中的列是否包含数组中的值(从参考表中提取)来更改表中的列,因此逻辑是这样的
我有下面的代码,它只是将数组中的值与表进行比较并打印该值。我得到错误"类型不匹配"。有谁知道我如何比较记录?
document.getElementsByClassName('.option-dbclickable').ondblclick = function(){
alert(this.parentNode.value);
};
答案 0 :(得分:0)
您应该只使用更新查询即可完成此操作。
例如:
Main_Table
包含以下字段:ID
(AutoNum)和FieldToChange
(文字)
ReferenceTable
包含以下字段:ID
(自动编号),ALookUpValue
(文字),ChangeTo
(文字)
如果ALookUpValue
中的值显示在FieldToChange
中的任何位置,则将字段值替换为ChangeTo
中的whatevers。
因此,如果FieldToChange
包含ABCDEFG,则ALookUpValue
包含A,ChangeTo
包含' blah blah'然后ABCDEFG会更新说“等等”#
UPDATE MainTable INNER JOIN ReferenceTable ON MainTable.FieldToChange LIKE '*' & ReferenceTable.ALookUpValue & '*'
SET MainTable.FieldToChange = ReferenceTable.ChangeTo
希望这是可以理解的 - 结束一天。 :)
编辑 - 测试数据库副本 - 它会更新值!
答案 1 :(得分:0)
有几件事:
Type Mismatch
错误。您不包括如何初始化和定义数组MyArray
。根据您的需要,您需要String
或Variant
类型数组。请尝试以下调整:
Set rstTableName = CurrentDb.OpenRecordset("MAIN_TABLE")
For Each vItem In MyArray
Do While Not rstTableName.EOF
If InStr(1, rstTableName![NAME], vItem) > 0 Then
Debug.Print (rstTableName![NAME])
End If
rstTableName.MoveNext
Loop
Next vItem
或者,使用Like运算符
Set rstTableName = CurrentDb.OpenRecordset("MAIN_TABLE")
For Each vItem In MyArray
Do While Not rstTableName.EOF
If rstTableName![NAME] Like "*" & vItem & "*" Then
Debug.Print (rstTableName![NAME])
End If
rstTableName.MoveNext
Loop
Next vItem