Accessでのリンクテーブルの更新方法とは?
- AccessからSQLServerのテーブルにリンクをはっています。このリンクテーブルをupdate文で更新する方法を教えてください。
- リンク先のSQLServerのテーブルにはキーが存在していて、Access側からリンクするときには自動的に一意設定されてしまいます。しかし、発行したいupdate文はこのキーとは別の項目が一意になっていないとエラーが出ます。キーとは別の項目を一意項目として選択する方法はあるのでしょうか?
- キーのないテーブルをリンクするときは一意な項目を選ぶことができますが、キーがすでに存在する場合はそれができません。この問題を解決する方法を教えてください。
- ベストアンサー
accessでのリンクテーブルの更新
いつもお世話になっております。 AccessからSQLServerのテーブルにリンクをはっています。 このリンクテーブルをupdate文で更新したいのですが、 「更新可能なクエリであることが必要」とでています。 以前にも類似の質問をしました。 http://okwave.jp/qa/q6581636.html しかし、いったん解決したのですが、別のところで同様の現象が でてしまいました。 調べると、リンク先のSQLServerのテーブルにはキーが存在していて、 Access側からリンクするときには自動的に一意設定されてしまいます。 発行したいupdate文はこのキーとは別の項目が一意になっていないと だめな条件付けがされているのです。 リンクをはるときに、SQLServer側ですでに設定されているキーとは 違った項目を一意項目として選択する方法はあるのでしょうか? 調べてみると、まったくキーのないテーブルをリンクするときは当然、 一意な項目を選べるのですが、キーがすでにある場合はだめな ようでした。 毎度のことでお手数なのですが、どうかよろしくお願い申し上げます。
- aosiro333
- お礼率83% (20/24)
- その他(データベース)
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
リンク先のテーブルにユニーク索引を作成してください。 alter table テーブル名 unique ( 項目1, 項目2, ... ) これで更新クエリで対象レコードが指定した項目でユニークになるのであれば更新可能なはずです。
関連するQ&A
- AccessとSqlServerのテーブルリンク
Access2007とSqlServer2008を使用しています。 Accessで作成したテーブルを「データベースツール」-「データの移動」でSqlServerに移行してリンクする際、 (1)SqlServerに新規にデータベースを作成すると、リンクテーブルマネージャから見てもリンク先DBが正しく表示されますが、 (2)その後、その既存DBに同じAccess内の別のテーブルを、「データベースツール」-「データの移動」してリンクしたものは、リンクテーブルマネージャから見てもリンク先DBが ()となっており表示されていません。 ツールとしてSqlServer Management Studioを使っていますが、そこからでも(1)のテーブルは表示されていますが、(2)のテーブルは表示されません。 でもリンクはできているようなのです。 また、SqlServer Management Studioを使って、SqlServer内に新規テーブルを作成し、 それをAccessからリンクしようとしても、テーブルリンク一覧内に表示されない状態です。 (「外部データ」-「ODBCデータベース」…)にて SqlServerのファイルデータソースを表示しています) (2)のテーブルはSqlServer Management Studioから見ることができないため、更新・削除もできず困っています。 DB、テーブル、リンク方法等、何か問題があるのでしょうか? よろしくお願いします。
- ベストアンサー
- SQL Server
- MS-Accessのリンクテーブルで更新
MS-Accessのリンクテーブルで更新 MS-Accessのリンクテーブルを使用して、 Oracleデータベースの表に対して 値の更新をしようとしていますが、 更新が競合しているというメッセージが出て、 更新できません。 また、値の更新をしようとしているタイミングで、 Oracleデータベース側のリンクテーブル対象表に アクセスしている処理はなく、 更新が競合していることありません。 ODBCドライバの設定では、読み取り専用設定は 実施してない点は確認しています。 使用しているソフトウェアの各バージョンは以下になります。 Access 2007 Oracle 10.2.0.4.0 WindowsXP SP3 ODBCドライバ 10.02.00.01 リンクテーブルからの更新自体がそもそも出来ないのでしょうか? MS-Accessを使用してOracleデータベースの表の値を更新したいと思っているのですが、 解決方法をご存知の方がいらっしゃいましたら、教えていただけないでしょうか?
- 締切済み
- その他([技術者向] コンピューター)
- Accessでのリンクテーブルについて
Access2007でSQLServer2005のテーブルのリンクを張っています。 このリンクテーブル内のnvarchar型のフィールドをクエリでint型へ変換したいのですが、CInt(対象フィールド)としてもオーバーフローが発生していまいます。 nvarchar型のフィールドの内容は8桁の数字で、SQLServer側では変換できています。 Accessではnvarchar型の変換はできないのでしょうか? 変換したビューを引っ張ることも考えましたが、そのクエリ以外では文字列として扱いたいので、できればクエリ内で変換したいのですが・・・。 どなたか解決方法をご存じでしたら教えてください。 お願いします。
- ベストアンサー
- SQL Server
- Accessのリンクテーブルについて
Access2000を使用しているのですが、SQLServerのDBをリンクしなければいけないのですが、ODBCを使用せずにリンクさせる方法はあるのでしょうか? またはモジュールでコードを記述してリンクテーブルを作成する方法でもかまわないのですが・・・。 作成したAccessを配布したPCにODBCを設定するのが面倒なのですが・・・。 なにかいい方法があるのか教えていただきたいです。
- ベストアンサー
- オフィス系ソフト
- ACCESS2000でのリンクテーブルの更新方法
ACCESS2000でリンクテーブル(.txtファイル)を使用して います。テキストファイルは直接更新できるのですが ACCESS上でリンクテーブル内のデータを更新しようとする と、"このISAMでは、リンクテーブル内のデータを更新することはできません。" とエラーがでて更新することができません。 Accessでも更新したいので、どなたかご存知の方がいらっしゃいましたら教えて下さい。
- 締切済み
- その他(データベース)
- SQLServer Access(adp)から更新
SQLServer初心者です。 Access(adp)から、ストアドプロシージャを使ってSQLServer(2005)の テーブルを更新させる処理があります。(約9万行のCSVデータを読み込み) 内容としては1行ずつLoopさせて以下の処理を行っている感じです。 1、AテーブルにCSVファイルから取得したデータをINSERT 2、Aテーブルの同一キーがマッチしたBテーブルの2項目に対して、 CSVファイルの値を更新(Update) テスト環境では問題なく更新できていましたが、本番環境だと処理が異様に遅くなりました。 (1時間かかって12000件ほどしか更新されません) テーブル、インデックス、ストアドの中身も確認しましたが違いが見つけられず。 「SET ARITHABORT ON」の設定も入れてみましたがダメでした。 2のUpdate処理を外すと運用に耐えるくらいの速度になったので、Update部分が 問題なのだとは思うのですが・・。 UPDATE Bテーブル SET koumoku1=@csvkoumoku1,koumoku2=@csvkoumoku2 WHERE KEY=@csvkey ←csvkeyはAテーブルのキーになります サーバ環境と本番環境はコピーしているためまったく同じだとは思うのですが どこかほかに確認するところなどありますでしょうか。 よろしくお願いいたします。
- 締切済み
- SQL Server
- パスワード付Access2010からリンクテーブル
パスワード付Access2010のテーブルを別のAccessでリンクテーブルとして使用しています。 このリンクテーブルを使ったクエリの結果を、ADOを使ってExcelシートに書きだしたいのですが、このリンクテーブルを使ったクエリを動かすと 「SQLステートメントが正しくありません。DELETE、INSERT、PROCEDURE、SELECTまたはUPDATEを使用してください」 というエラーメッセージが出てしまいます。 リンクテーブルのあるAccessでクエリを動かすと普通に動くのですが、ExcelからADOで動かすとエラーがでるということです。 このような場合に、エラーにならずにExcelからクエリを動かして結果をシートに出力する方法が何かありますでしょうか。 ご教授よろしくお願いいたします。
- 締切済み
- その他(データベース)
- Access のリンクテーブルについて
よろしくお願い致します。 Access側から外部テーブルを参照したリンクテーブルを作成しました。 しかしそのテーブルを開くのにはすごく時間がかかり、時にAccessが応答なしの状態になったりします。 そこで、ためしにテーブル作成クエリでリンクテーブルのデータと同じデータをもつテーブルを作成しました。 すると、そのクエリで作成したテーブルからの操作はスムーズに行われました。リンクテーブルとはデータ量も同じなのにこのように重さの違いがでるのはなぜなのでしょうか? Accessを使いはじめたばかりで、裏ではどのようになっているのかよくわからずパフォーマンスのあげ方に四苦八苦しております。 アドバイスをよろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- ACCESSのODBCリンクテーブルに接続できなくなる
ACCESSでSQLserverのテーブルとODBCリンクテーブルで連携したアプリケーションの開発を行っているのですが、ときどきテーブルとのリンクが切れてしまい、「実行時エラーです。リンクするテーブルが見つからないので、クエリを実行できませんでした。」というエラーが発生してしまいます。外的要因以外でACCESSではこのようなことはよく起こりうることなのでしょうか。またこの問題を回避できそうな方法をしている方いらっしゃいましたらよろしくお願いいたします。
- ベストアンサー
- その他(データベース)
- アクセステーブル、リンクとローカルで違いはある?
Access2003からSQLServerにリンクテーブルを張ったアプリケーションの作成をしています。 本番リリース時にはすべてのテーブルがリンクテーブルになる予定ですが 開発時にはローカルテーブルで開発をしたいと考えています。 理由は、DBにテスト用のゴミデータを追加したくないことと、 セキュリティの関係で接続出来るマシンが限られるためです。 現状の開発方法としては、 テーブルに一度リンクを張り、テーブル追加クエリでローカルにテーブル構造とデータを退避。 手動で主キーを定義して、そのテーブルを実体をみなして開発をしています。 SQLレベルではローカルテーブルもリンクテーブルも同等の扱いだと思っているのですが 何か制限事項などがあるのであれば教えていただきたいです。 なお、ACCESSからはDBを参照するのみで追加・更新は一切無しません。 追記。 クエリからクエリを参照して、さらにSQL内でサブクエリも記述しています。 その為、度々「クエリが複雑過ぎます。」みたいなメッセージが表示されています。 複雑というより無駄に長いだけだったりするのですが、 ローカルテーブルなら発行出来たのに、 リンクテーブルは発行出来ないなどあれば開発に支障が出ますのでよろしくお願いします。
- 締切済み
- Visual Basic
お礼
あ、nora1962様 いつもありがとうございます。 深謝です。 教えていただいた方法をためしてみます。 今、作業できないので、ご報告は後ほど。 取り急ぎお礼まで。
補足
nora1962様 教えていただいた方向でT-SQLを調べて、試してみました。 以下のスクリプトをSQLServer2008で実行しました。 ----------------------------------------- ALTER TABLE テーブル名 ADD CONSTRAINT UQ_テーブル名 UNIQUE (ID,依頼, 枝) GO ----------------------------------------- IDが本来の主キーで、依頼と枝が一意にしたい項目です。 Accessから問題の更新クエリを実行したのですが、現象は 変わりませんでした。 うーん、根本的に考え違いをしているのでしょうか? もし、何かお分かりでしたらお教え願えないでしょうか? よろしくお願いいたします。