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

MS Access で SQL を使用し、クロス結合を利用して、各年と場所のエントリを作成できます。

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 に答える