次の方法で共有

ACCESS DB分割後の修正

Anonymous
2021-02-17T06:29:30+00:00

365環境でACCESSを使用しています。DB不整合の問題を回避するためDBを分割しました。

dbOpenTable をdbDyanaSetに変更することにより発生する修正で苦労しています。

以下のSeekメソッドの変更案が見つかりません。ご教示くださいますようお願い申し上げます。

+++++++++++++++ 分割前のプログラム++++++++++++++++++

Set defRS = CurrentDb.OpenRecordset("T_WXY", dbOpenTable)

Set abcRS = CurrentDb.OpenRecordset("T_XYZ", dbOpenTable)

        abcRS.Index = "nインデックス"                                                     ←ここから

'T_XYZに入っているデータを削除する。

    Do Until abcRS.EOF

        abcRS.Delete

        abc.MoveNext

    Loop

'集計

        While (Not defRS.EOF)

            '新しくインデックス(uid、date)を追加する。

            abcRS.Seek "=", defRS("uid"), Left(defRS("date"), 6)                 ←こまでの部分

Microsoft 365 と Office | アクセス | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2021-02-18T01:42:02+00:00

> 365環境でACCESSを使用しています。DB不整合の問題を回避するためDBを分割しました。

DAO.Recordset オブジェクトを介してリンクテーブルのレコードに
アクセスしようとしている、ということでしょうか。

> dbOpenTable をdbDyanaSetに変更することにより発生する修正で苦労しています。
> 以下のSeekメソッドの変更案が見つかりません。

・リンクテーブルをテーブルタイプの Recordset オブジェクトとして開くことは出来ない。

・Seek メソッドはテーブルタイプの Recordset オブジェクトでのみ使用可能である。
 (ダイナセットタイプの Recordset オブジェクト では呼び出すことが出来ない

代替案としては、以下のいずれかが挙げられます。

・DAO.Database オブジェクトの OpenRecordset メソッドを呼び出す際、
 第 1 引数 Name にテーブル名ではなく SQL ステートメント
 ( WHERE 句付きの SELECT 文)を渡すようにし、参照/編集の対象となる
 レコードを最初から絞り込むようにする。

・Seek メソッドではなく Find 系のメソッド( FindFirst, FindNext など)を使用し、
 NoMatch プロパティの値によって条件に該当するレコードの有無を調べる。

> 'T_XYZに入っているデータを削除する。
>     Do Until abcRS.EOF
>         abcRS.Delete
>         abc.MoveNext
>     Loop

・あるテーブルの全てのレコードを削除することを目的としているのであれば、
 DAO.Database オブジェクトの Execute メソッドによって
 そういう命令の SQL ステートメント( DELETE 文)を実行させるようにする。


'[T_XYZ]の全てのレコードを削除する DELETE 文の実行
CurrentDb.Execute "DELETE * FROM [T_XYZ];", dbFailOnError


この回答は役に立ちましたか?

1 人がこの回答が役に立ったと思いました。
0 件のコメント コメントはありません

1 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2021-02-18T08:21:17+00:00

    sk.exe様

    Findに変更して処理は出来るようになりました。

    ただし、速度が遅くなったようです。

    今後の改善点として取り組みます。

    ご教示頂きありがとうございました。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません