我有一个这样的表,现在我的任务是填写相应列的vol和country的空字段
规则:我必须看到体积中的最高音量并取出该音量的国家并将其放入空场(即我必须用国家JP填充空单元格,因为日本的体积更大) 像这样我必须填补。
RB,Plant,MCR等剩余的文件正在改变剩余的空单元格。
我曾经使用过Dlookup,但我可以得到解决方案,任何人请帮助我,如果你找到我的解决方案是非常有帮助的。
像这样我必须填写表格中的所有空行好的,我可以更清晰地查看我的表格视图,以便您可以轻松理解 这是我必须完成任务的唯一表格 现在我的任务是我必须填写国家领域的空单元格,但条件是我应该看看RB,Plant,MCM关于vol field(即:如果你看到表格,RB,植物,MCM领域是同样但国家和vol正在改变一个组,所以我还要考虑字段,这意味着如果RB,植物,mcm字段相同,那么我必须采取该组中具有最高容量的国家之一) (我只是举例说明第一行RB,植物,MCM是相同的,所以我必须采取最高音量国家,即所以空单元格应该是IN和secodn组空单元格应该是TH,就像我必须填充。
答案 0 :(得分:1)
正如我在对Johnny Bones的评论中提到的那样。回答,您的原始要求可以使用UPDATE语句完成,该语句使用DLookup()
和DMax()
函数,如下所示:
UPDATE MyTable
SET Country=DLookup("Country","MyTable","Vol=" & DMax("Vol","MyTable"))
WHERE Country IS NULL
即使你修改了要求,它仍然可能,只是更加可怕:
UPDATE MyTable
SET Country=DLookup("Country","MyTable","RB='" & RB & "' AND Plant='" & Plant & "' AND MCM='" & MCM & "' AND Country IS NOT NULL AND Vol=" & Nz(DMax("Vol","MyTable","RB='" & RB & "' AND Plant='" & Plant & "' AND MCM='" & MCM & "' AND Country IS NOT NULL"),0))
WHERE Country IS NULL
上述查询已在Access 2010中经过测试和验证。
答案 1 :(得分:0)
您可以在VBA中执行此操作,并可以更好地控制其响应方式。这样的事情会做:
Dim db As Database
Dim rec As Recordset
Dim MySQL As String
Set db = CurrentDb
Set rec = db.OpenRecordset("Select Top 1 MyTable.Country FROM MyTable ORDER BY MyTable.Vol DESC")
MyCountry = rec(0)
rec.Close
SetWarnings = False
MySQL = "UPDATE MyTable SET MyTable.Country = '" & MyCountry & "' WHERE IsNull(MyTable.Country) or Len(MyTable.Country) < 2"
DoCmd.RunSQL MySQL
SetWarnings = True
db.Close
我测试了上面的内容并且它有效,但如果你的表的字段属性不同,你可能需要调整一些代码。
显然,无论你在哪里看到“MyTable”,你都应该使用自己的表名。