• ベストアンサー
  • すぐに回答を!

アクセスのリンクテーブルの操作方法について

アクセスで、OpenRecordsetオブジェクトでリンクテーブルを開こうとしましたが、引数にテーブルタイプのdbopentableを使用すると"無効な処理を行いました"とエラーになります。引数を省略すると、そこではエラーになりませんが、テーブルの更新ができません。 どのようにしたら、リンクテーブルのレコード操作ができるでしょううか?

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数1464
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.2
  • ARC
  • ベストアンサー率46% (643/1383)

リンクテーブルには、dbOpenTableは使用できません。 fuminさんの仰るように、dbOpenDynasetを使用するか、リンク先のDatabaseオブジェクトを作成して、そこから開くようにして下さい。↓ Dim LinkDB as Database Dim RST AS Recordset Set LinkDB = WorkSpaces(0).OpenDatabase("リンク先のDBの名前") Set RST = LinkDB.OpenRecordset("テーブル名",DbOpenTable)

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございました。 うまくいきました。

関連するQ&A

  • テーブルのリンク(ACCESS)

    ACCESS2003で下記の記述で「実行時エラー ’3219’ 無効な処理です。」というエラーメッセージがでます。 外部mdbでテーブルをリンクさせるとこのエラーがでます。同じmdbファイルにデータテーブルを置くと問題なく処理できます。 参照設定も過去ログを見てチェックしています。 Dim dbs As DAO.Database Dim rst As DAO.Recordset Set dbs = CurrentDb Set rst = dbs.OpenRecordset("テーブル名", dbOpenTable) ACCESS97では何の問題もなかったのですが, 2003ではうまくいきません。 どうかよろしくお願いします。

  • SQLServerのテーブルはdbOpenTableで取得できない?

    SQLServerのテーブルはdbOpenTableで取得できない? いつもお世話になっております。 VB6.0、Access2003で開発されたシステムのデータベースを SQLServer(2008Express)に置き換えています。 接続方法は、現行通りのDAOを使用したいと考えております。 レコードセットをオープンするときに、 Set RS = DB.OpenRecordset("テーブル名", dbOpenTable) としたら、「引数が無効です」というエラーが発生しました。 dbOpenTableの所をdbOpenDynasetに変更したらエラーは発生しなくなりました。 SQLServerへの接続の場合、dbOpenTableは使用できないのでしょうか? dbOpenTableが使用できないとなると、IndexやSeekも使用できないということでしょうか? 以上です。よろしくお願い致します。

  • Accessのリンクテーブル

    すみません、教えてください。 Accessで複数端末から一つのMDBにデータ登録をさせる為に、VBAでツールを作っています。以下のように記述をして いるのですが、MDBを閉じるたびに、リンク先のDBを認識しなくなってしまいます。テーブルでリンクを貼りなおすとまた動くようになるのですが、どうしたらリンクを貼りなおせずにできるようになるのか、どなたか教えてください。どうかお願いいたします。 Dim LinkDB as Database Dim RST AS Recordset Set LinkDB = WorkSpaces(0).OpenDatabase("リンク先のDBの名前") Set RST = LinkDB.OpenRecordset("テーブル名",DbOpenTable)

その他の回答 (1)

  • 回答No.1
  • fumin
  • ベストアンサー率0% (0/2)

リンクテーブルのレコードを操作したい時は、引数を dbopendynaset としてください。リンクテーブルの場合、引数を省略すると、引数に dbopensnapshot を指定したのと同じ結果になり、レコード操作はできません。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

助かりました。 ありがとうございました。

関連するQ&A

  • アクセス2003 「ODBC--リンク テーブル'テーブル1'での更新に失敗しました。」となる。

    Sub test() Public cn As New ADODB.Connection Public rs As New ADODB.Recordset cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & CurrentProject.FullName rs.Open "Qクエリ", cn, adOpenStatic, adLockPessimistic rs("進捗") = "" rs.Update  ←ここでエラー rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End Sub のコードを実行すると アクセスが「応答なし」になり、その後 「ODBC--リンク テーブル'テーブル1'での更新に失敗しました。」となります。 Qクエリはテーブル1とテーブル2でできています。 毎回発生するエラーではなく、エラーにならない時もあります。 何か原因がわかる方いらっしゃいますか? ご教授よろしくお願い致します。

  • Access VBAでクエリーのレコード件数を取得したいのですが

    Access2003のVBAで次のような構文を用いてクエリーの該当レコード数を取得したいのですがうまく出来ません。 構文又は手法が間違っているのでしょうか。 Dim db As Database Dim rs As Recordset Dim cnt As Long Set db = CurrentDb Set rs = db.OpenRecordset("該当顧客リストクエリ", dbOpenTable) cnt = rs.RecordCount ※OpenRecordsetの行で「実行時エラー'3219'無効な処理です」と出てしまいます。 又、”該当顧客リストクエリ”では特定の抽出条件を設定して、”顧客リストテーブル”の一部を抽出するようにしています。

  • アクセスのテーブル更新について

    アクセスのテーブル更新について ------------------ テーブル1 性  名   フラグ 地域 佐藤 太郎 1 鈴木 次郎 9 高橋 三郎 3 ------------------ テーブル2 地域 フラグ 関東 1 関西 2 海外 3 ------------------ テーブル3 性  名   フラグ 地域 田中 四郎 2    関西 ------------------ アクセス初心者です。エクセルはファイル操作のVBAをモタモタしながら組める程度です。 上記1から3のテーブル(以下T)がある場合の、以下2つの処理を行う方法が分からず困っています。 処理1 T1の地域とT2の地域の内容が異なった場合、T1の地域にT2の地域の内容を書き込む 処理2(処理1実行後) T1のフラグが9以外のレコードをT3に追加し、追加したレコードをT1から削除する 上記処理は追加クエリや更新クエリで実行出来る内容でしょうか? VBAの記述が必要な内容でしょうか?そこからして分かっていません。 具体的な処理方法という形で教えて頂けたらと思います。 どうか宜しくお願いします。

  • OracleDBのテーブルのリンクについて

    Oracleテーブルのリンクについて教えてください。 OracleDBのテーブルをACCESS97からリンクして見ているのですが、 OracleテーブルのレコードをACCESSから削除や挿入しようとすると 出来るテーブルと出来ないテーブルがあります。 ACCESSからレコードを選択し、右クリックを押すと通常、そのメニューの 中に「新しいレコード」、「レコードの削除」などが出ますが、 レコードが削除できないテーブルはその項目が灰色になり選択できません。 更新出来ないテーブルと出来るテーブルの違いは何が考えられますか? 申し訳ないですが、宜しくお願い致します。

  • レコードロックする方法

    Access2013 VBA 今、アクセスのシステムを作っていますが、おおまかに書きますと ・フロントエンドとバックエンド ・ワークテーブルを使用してデータの編集をして、元テーブルに反映する処理 ・4人ぐらいの利用者を想定 この場合に、 ・レコードロックのようなやり方が可能か ・DAOを使用する場合に、今変更をしようとしているレコードにロックをかける方法はあるのか ・既に他の画面で開いている画面のレコードソースのテーブルを、後から開いた別画面の処理でOpenRecordsetでレコードセットを取得し、そのレコードを編集・新規追加したいのですが、この場合には、Optionには何を使用すれば良いでしょうか? ※先に開いている人には読み取りは可能 ※後から開いた人は、データの編集が可能にする ※先に開いた人が、後から開いた人がデータの編集をしている時に該当レコードの変更は出来ないようにしたい よろしくお願いします。 よろしくお願いします。

  • このISAMでは、リンクテーブル・・

    access2000にcsvデータをリンクさせ、テーブルを開いてレコードを変更しようとすると「このISAMでは、リンクテーブル内のデータを更新することはできません」というメッセージが出ます。 これは標準ですか? リンクテーブルでcsvデータを更新する方法はあるものですか? #リンクはこれまで未経験なので、さっぱり不明。

  • SQLサーバーのテーブルに対してアクセスで更新クエリを行ないたい

    こんばんは。 ・vista ・アクセス2003 ・SQL Server 2005 です。 SQL ServerからテーブルをMDBへリンクしているのですが そのテーブルに対し、アクセス側で更新クエリを実行しようとすると 実行時エラー '3157': ODBC--リンク テーブル'テーブル名'での更新に失敗しました。 [Microsoft][ODBC SQL Server Driver]時間切れになりました。(#0) と言うエラーになり、更新クエリができません。 どうすればアクセスでSQLサーバーのテーブルに対して更新クエリを行えるのでしょうか? よろしくお願いします。

  • DAOでのOpenRecordsetの方法

    SQLServerのDBをDAOを使って更新しようとしていますが、方法がわからず困っています。 ------------------- private Cn as DAO.Database private function fnc1() as integer Dim ws As DAO.Workspace Dim rcdst1 As DAO.Recordset dim strCnct As String dim strSQL As String strCnct = "ODBC;Driver={SQL Server};SERVER=" & g_strSVName & ";DATABASE=" & g_strDBName & ";UID=" & strpUserID & ";PWD=" & strpPassword & ";" 'DB接続 Set Cn = ws.OpenDatabase("", False, False, strCnct) strSQL = "SELECT * FROM Table1" Set rcdst1 = Cn.OpenRecordset(strSQL, dbOpenDynaset, dbDenyWrite, dbOptimistic) ------------------------------------- このOpenRecordsetで ODBC--すべてのレコードをロックできません。(3254) のエラーが出ます。 また、OpenRecordsetを Set rcdst1 = Cn.OpenRecordset(strSQL, dbOpenDynaset) とすると rcdst1.Edit で データベースまたはオブジェクトは読み取り専用なので、更新できません。 のエラーが出ます。 どうしたらいいでしょうか。

  • MSアクセスのテキストリンクがうまくいきません^^;

    テキストファイルをテーブルにリンクさせたいのですが、 拡張子を「txt」ではうまくいくのですが、拡張子を「pl」にかえるとエラーが発生します。 エラーの内容は 「データベースまたはオブジェクトは読み取り専用なので、更新できません」「エラーが発生しました。ファイルはリンクされませんでした。」です。 拡張子は今までのシステム上、できれば「pl」にしておきたいのです。 今回このエラーが発生したのは、新規に購入したwin2000のノートパソです。同じことを今まで使用していたwin95のデスクトップで行うと、拡張子「pl」のままでもうまくリンクできます。 どちらもアクセス2000です。。 すいませんがよろしく御願いします。。

  • アクセスのテーブルのリンクについて

    エクセルファイルをアクセスでテーブルのリンクをしているのですが テーブルを開き編集するとエクセルファイルが壊れそのファイルは 2度と開けなくなります。 前はちゃんと編集できていたようなのですが、 参照設定の追加とか関係ありそうですか? ちなみに 参照可能なライブラリ ファイル Visual Basic For Applications Microsoft Access 9.0 Objects Library OLE Automation Microsoft ActiveX Data Objects 2.1 Library わからぬまま参考書から最後の1行を追加してからのような気もするのですが WinXPでOffice2000です テキストファイルでは この ISAMではリンクテーブル内のデータを更新する事はは出来ません の警告がでて編集出来ないのは解っていましたが