0

我有一个库存表,其中填充了我们库存中信息的 ID。还有其他表具有这些类别的名称和 ID。我希望使用 for 循环根据我们的库存使用 ID 填充当前库存数据。

我希望使用 for 循环将数据填充到 InventoryNow 表中。我正在考虑做这样的事情。

For location.location_ID <= EOF
{ 
   For years.years_ID <= EOF
   {
        insert into inventoryNow (wine_ID, years_ID, type_ID,language_ID, Amount)
        values (2,currentvalue(years.years_ID), 1,1,currentvalue(locatio.location_ID,2))
   }
}

Access 2010 中是否有执行此操作的功能?

4

2 回答 2

1

在没有看到您的数据的情况下,如果您计划对位置和年份表中的所有记录执行追加查询,我认为这可能更适合追加查询。但是,它可以通过循环使用 2 个记录集来完成,类似于您所描述的,使用类似于以下代码的内容:

Dim dbs As DAO.Database
Dim rstLoc as DAO.Recordset
Dim rstYears as DAO.Recordset

Set dbs = CurrentDb
Set rstLoc = dbs.OpenRecordset("SELECT location_ID FROM location")
Set rstYears = dbs.OpenRecordset("SELECT years_ID FROM years")

If rstLoc.RecordCount > 0 And rstYears.RecordCount > 0 Then
    rstLoc.MoveFirst
    Do Until rstLoc.EOF
        rstYears.MoveFirst
        Do Until rstYears.EOF
            DoCmd.RunSQL "INSERT INTO InventoryNow (wine_ID, years_ID, type_ID, language_ID, localtion_ID, Amount) VALUES (2, " & rstYears!years_ID & ", 1, 1, " & rstLoc.location_ID & ", 2)"
            rstYears.MoveNext
        Loop
        rstLoc.MoveNext
    Loop
End If
rstLoc.Close
Set rstLoc = Nothing

rstYears.Close
Set rstYears = Nothing

dbs.Close
Set dbs = Nothing
于 2013-03-15T12:01:24.030 回答
0

您可以将 SQL 与 MS Access 结合使用,并利用交叉联接为每年和位置创建条目:

SELECT wines.wine_ID, wines.type_ID, 
    wines.language_ID, wines.Amount, 
    years.years_ID, location.location_id 
INTO AllWines
FROM wines, years, location

例如,有 2 种葡萄酒(和 2)、2 年(2010 年和 2011 年)和 2 个地点(1 和 2),您将得到

wine_ID type_ID language_ID Amount  years_ID    location_id
1       1       1           10      2010        1
2       2       2           20      2010        1
1       1       1           10      2011        1
2       2       2           20      2011        1
1       1       1           10      2010        2
2       2       2           20      2010        2
1       1       1           10      2011        2
2       2       2           20      2011        2
于 2013-03-15T12:06:38.050 回答