' table 1 はJET(ACE)のテーブル。SQL Server や PostgreSql ではない
rs.Open "table1", CurrentProject.Connection, adOpenStatic
Debug.Print rs.Supports(adResync)
これで True が返るのですが、rs.Resync すると
「3251 現在のプロバイダーは元になる値の更新をサポートしてません。」というエラーです。
このメソッドは、SQL Serverか何か専用なのでしょうか?
よろしくお願いします。
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 → 同じエラーでした。
本当に分かりません……
すみません自己レスです。
rs.open の引数を網羅テストしたら、事情が解りました。
rs.Supports(adResync)は、何故かただの飾りでした。
rs.resync は、JET(ACE)であっても、特定のパターン内で使えるようです。
ちなみに 1 の投稿は、ヘルプの「このメソッドは、静的または前方専用のカーソルを使用していて、基になるデータベースの変更を確認する場合に役立ちます。」直後の「読み取り専用ではない Recordset オブジェクトに対してのみ使用できます。」の意味が解らなかった、というものです。
う~ん