電子書籍の厳選無料作品が豊富!

ADOでエクセルからアクセスにデータを追加したいだけなのですが
「CursorType」と「LockType」がどれが適切かわかりません。


CursorType
0 adOpenForwardOnly   レコードの前方スクロールだけが可能な静的カーソル。 (デフォルト)
1 adOpenKeyset 他のユーザによる変更データを参照可能。但し、追加データは参照できず、削除データにはアクセスできない。
2 adOpenDynamic 他のユーザーによる追加、変更、削除の操作が即座に反映される。
3 adOpenStatic レコード集合のコピーによる静的カーソル。前方、後方への移動が可能。


LockType
1 adLockReadOnly 読み取り専用。
2 adLockPessimistic レコード単位での排他的ロック。編集操作開始時にレコードをロックする。
3 adLockOptimistic レコード単位での共有的ロック。Updateメソッドを呼び出し時にレコードをロックする。
4 adLockBatchOptimistic 共有的バッチ更新。即時更新モードに対するバッチ更新モード。

・エクセルもアクセスも使用しているのは自分ひとりです。
・LockTypeについては
Updateメソッドを使用してアクセスにデータを追加するため「adLockOptimistic」が適切かなと思うのですが
CursorTypeの静的・動的がわからず判断できません。

ご教授よろしくお願いします。

A 回答 (2件)

私自身はADOは使用していないのですが・・・(汗)



ADOのOpenRecordSetでCursorTypeやLockTypeが問題になるのは、
開いたレコードセットに対して何らかの編集や逆方向へのレコード移動
をする場合なのではないかと思います。

ですので、「ADOでエクセルからアクセスにデータを追加したいだけ」と
いうのが「ExcelのデータをADO経由で参照して、Access側に用意した
テーブルに転記していく」(=データを参照するのみ)ということだとしたら、
CursorTypeやLockTypeは特に気にしなくてよいのではないでしょうか。
(「データ型の不一致などにより処理が中断した場合に、どのデータまで
 Accessに転記したかをExcel側に記録したい」といった場合には、
 Excelの編集が可能なようにLockTypeを選択する、といった必要性が
 生じるとは思いますが:
 転記の進行状況だけならAccessとExcelのレコードを照合すれば判別
 可能ですが、一例として)


なお、ご質問の内容からすると、ADOにこだわらず、
「DoCmd.TransferSpreadsheet」でも対応可能なように思えますので、
併せて参考まで。


「ExcelデータをAccessで直接編集」という意味でしたらすみません(汗)
    • good
    • 0
この回答へのお礼

「DoCmd.TransferSpreadsheet」は初めて聞いたので調べてみます。
ありがとうございます。

お礼日時:2009/04/20 21:22

参考になりますかね?



Recordsetオブジェクトの作成(ADO編)
http://www.geocities.jp/cbc_vbnet/ADO/recordset. …

|Updateメソッドを使用してアクセスにデータを追加するため「adLockOptimistic」が適切かなと思うのですが

CursorTypeは動的でないと駄目ですね。
    • good
    • 0
この回答へのお礼

ありがとうございます。
よく読んでみます!

お礼日時:2009/04/19 23:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!