Microsoft Access:从表中删除重复并替换为表中的随机列表

时间:2015-06-01 14:38:06

标签: ms-access access-vba

我有一个访问表,有两个字段:州和城市。国家是独一无二的,城市应该是一样的。

我有一张表显示同一城市的重复状态。我想让重复的城市在州内随机。我有另一张桌子叫出州内的城市。

我目前有:

Washington  Seattle
Washington  Bellevue

我希望它是:

from

我如何删除重复的城市并将其中一个替换为州内的随机城市,如上例所示?

假设我有一个单独的表格,我可以创建该表格以呼叫州内的所有城市。

我不知道如何解决这个问题。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

执行此操作的一种可能方法(根据您的评论)是向您的城市表添加两个字段。称之为[Used]和[DateUsed]。使用某种类型的随机函数来挑选你的城市。在使用城市时,将[used]字段更改为true,并将今天的日期放在[Dateused]字段中。使用查询仅拉出标记为False的城市。您可以运行每日查询,任何超过2天的[Dateused]可以清除[used]字段中的真实标志并清除[DateUsed]字段。

dim db as dao.databse
dim rs as dao.recordset
dim sql as string
dim x as integer

x = 0
set db = currentdb
Do While X < 20
    sql = "SELECT * FROM [tblcities] WHERE [Used] = false AND stateID = " & some value for stateID
    set rs = db.openrecordset(SQL,dbopenDynaset)
    if rs.recordcount > 0
        rs.movefirst
        do while not rs.eof
            if randomfunction() = true  //just an example, you'll have to come up with the random function on your own.
                SQL = "UPDATE [tblCities] SET [Used] = True, [DateUsed] = DATE() WHERE StateID = " & Some Value for StateID & " AND CityName = '" & rs!cityName & "'"
                docmd.RunQuery SQL
                break do
            end if
        rs.movenext
        loop
    end if
    set rs = nothing
    x = x + 1
loop

set rs = nothing
set db = nothing

(粗略的代码,我确定丢失了一些错字或语法错误,但这并不意味着是一个完整的例子,只是指向你的方向。)