Microsoft Access 掲示板

ADO Resync メソッドが実行できない

3 コメント
views
4 フォロー

' table 1 はJET(ACE)のテーブル。SQL Server や PostgreSql ではない
rs.Open "table1", CurrentProject.Connection, adOpenStatic
Debug.Print rs.Supports(adResync)

これで True が返るのですが、rs.Resync すると
「3251 現在のプロバイダーは元になる値の更新をサポートしてません。」というエラーです。
このメソッドは、SQL Serverか何か専用なのでしょうか?
よろしくお願いします。

banjo
作成: 2023/12/08 (金) 04:48:59
通報 ...
1
banjo 2023/12/08 (金) 04:53:45 7ca94@237a3

Resync メソッド (ADO) | Microsoft Learn
https://learn.microsoft.com/ja-jp/office/client-developer/access/desktop-database-reference/resync-method-ado
>CursorLocation プロパティを adUseClient に設定した場合には、 Resync は、読み取り専用ではない Recordset オブジェクトに対してのみ使用できます。

という分かりにくい文章もあったので
    With cn
        .CursorLocation = adUseServer
        .Open "Provider=Microsoft.ACE.OLEDB.16.0;Data Source=(略)"
    End With
のパターンも試しましたが、今度は False → 同じエラーでした。
本当に分かりません……

2
banjo 2023/12/08 (金) 07:26:06 47096@237a3

すみません自己レスです。
rs.open の引数を網羅テストしたら、事情が解りました。
rs.Supports(adResync)は、何故かただの飾りでした。
rs.resync は、JET(ACE)であっても、特定のパターン内で使えるようです。

3
banjo 2023/12/08 (金) 07:29:41 47096@237a3

ちなみに 1 の投稿は、ヘルプの「このメソッドは、静的または前方専用のカーソルを使用していて、基になるデータベースの変更を確認する場合に役立ちます。」直後の「読み取り専用ではない Recordset オブジェクトに対してのみ使用できます。」の意味が解らなかった、というものです。

う~ん