0

これが私の問題です:

これらのテーブルがあるとしましょう:

表1

1 - 「あ」

2 - 「ロ」

テーブル2

1 -

2 -

3 -

現在、次のコードを使用してテーブルを比較しています。

table2.MoveFirst
Do While Not table2.EOF
 table1.Seek "=", table2!field2
  If table1.NoMatch Then
               go do a lot of things to find that information
  Else 
   table2.Edit
   table2!Field2 = table1!field2
   table2.update
  End If
 table2.MoveNext
Loop

しかし、ライン

table2!Field2 = table1!field2

うまく機能していません。ここで何か間違ったことをしていると確信していますが、解決策を見つけるのに問題があります。何をグーグルで検索すればよいかさえわかりません...

編集: フィールド 2 はテーブル 1 でインデックス付けされているため、「シーク」が機能します。

4

3 に答える 3

1

DAOレコードセットを使用している場合(Christianによって提案されているように)、行を変更できます

table2!Field2 = table1!field2

table2.Fields("Field2").value = table1.Fields("field2").value

Field2は両方ともTextデータ型であると思います。

于 2011-11-21T20:31:31.720 に答える
1

いくつかのメモ。

Field1 というフィールドに一致しない Table2 のすべてのレコードが必要だとします。

sSQL = "SELECT Field1, FieldX FROM Table2 " _
     & "LEFT JOIN Table1 " _
     & "ON Table2.Field1 = Table1.Field1 " _
     & "WHERE Table1.Field1 Is Null"

もちろん、クエリ デザイン ウィンドウでクエリを作成し、必要な内容になるまでいじってから、SQL ビューに切り替えて、適切な (っぽい) SQL 文字列を取得することもできます。

Dim rs As DAO.Recordset

Set rs = CurrentDB.Openrecordset(sSQL)

''table2.MoveFirst
Do While Not rs.EOF ''table2.EOF

''You do not need no match, all these records are missing a match
''    table1.Seek "=", table2!field2
''    If table1.NoMatch Then
           go do a lot of things to find that information
    rs.MoveNext
Loop
''This can all be done with one update query
''    Else 
''    table2.Edit
''    table2!Field2 = table1!field2
''    table2.update
''    End If
''    table2.MoveNext
''    Loop

sSQL = "UPDATE Table2 " _
     & "INNER JOIN Table1 " _
     & "SET table2.Field2 = table1.field2 " 

CurrentDB.Execute sSQL dbFailOnerror

上記は完成したコードではなく、メモとして扱ってください。

于 2011-11-21T16:01:00.357 に答える
1

しかし、ラインtable2!Field2 = table1!field2はうまく機能していません

...何がうまくいかないかについての適切な説明ではありません。

コードはこの行で停止/クラッシュしますか?
エラーなしで実行されますが、期待した以上のことはありませんか?

DAO レコードセットを使用していると思います。
詳しい情報がないとアドバイスするのは難しいですが、試してみます。

  1. table2完全に空ですか?説明は次のようになります。

    table2
    1 -
    2 -
    3 -

    はいの場合、ループ全体がまったく実行されない可能性があります。

  2. レコードセットtable2を更新できますか?
    すべての種類の Recordset がこれをサポートしているわけではなく、作成方法によって異なります。MSDN: Recordset Object (DAO)を参照してください。最初に Recordset タイプのリストがあります。
    更新できない場合は、 を呼び出したときにエラーが発生するはずです.Update

于 2011-11-21T15:23:12.010 に答える