- ベストアンサー
ACCESSのテーブルを読んでる間、ロックする方法は?
WINDOWS XP、VB6.0、SP5、で開発しています。 データベースにアクセスを使っていて、 あるテーブルをSELECT文で抽出しているのですが、 それと同時に、他のPCがそのテーブルを見ようと同じ処理をしてきた場合に、 見れないようにロックしたいのですが、 方法が全然分かりませんでした。 調べた限りでは、SQLやオラクルだと出来るとか。 アクセスでも何らかの方法でできないでしょうか? どうぞ、ご教授よろしくお願いしますm(_ _)m
- KOHEI_JAPAN
- お礼率19% (58/305)
- Visual Basic
- 回答数1
- ありがとう数0
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
VBからAccessのmdbにアクセスする時何を使用していますか? ODBC?,DAO? それにより異なります。 Accessの排他ロックはレコード単位ではなく、ブロック単位になります。 つまり、1レコードだけロックしたいが、前後の数レコードも一緒にロックされてしまうということです(Accessの仕様)。 因みに私は、AccessのモジュールでDAOを使用して排他を利用したことがあります。
関連するQ&A
- SQLServerでのテーブルロック
・WindowsXP Pro SP3 ・VB2008 ・SQLServer2000 SP4 上記環境にて開発を行っております。 質問は、データベース内のマスタを、非接続型のグリッド上に読込、 内容を編集後、更新を行う処理を作成しています。 グリッド上に読み込んだ際(Select文)、テーブルをロックし、 他のユーザが変更出来ないようにしたいのですが、方法が分かりま せん。 教えて頂けないでしょうか?
- 締切済み
- SQL Server
- DBロックを待ち続ける方法
ロックがかかったテーブルに対して、 SELECT文を発行する際、ロックが解除されるまで 待ち続けるヒント句のようなものは SQL SERVERに存在するのでしょうか? (Oracleの「SELECT~FOR UPDATE文」に相当するものは 存在しないのでしょうか?) 使用しているDBはSQL SERVER 2000 です。
- 締切済み
- SQL Server
- VBを使ってる初心者です【SQL】【Access】
VisualStudio2008で、Access2010のデータベースからデータ抽出を行えるアプリを作っています。 このときSQL文を用いてAccessからデータ抽出を行うんですかね? そもそもVisualStudio、SQL、Accessそれぞれがどのように関係しているのかわかりません。 いくつかサイトを見て回ったのですが・・・ 教えてほしいこと 1. データ抽出アプリを作るにあたってVisualStudio、SQL、Accessの各々がどのような役割を果たすか 2. Accessのデータベースの形式は空or Webどちらが有効なのか 3. VisualStudioでデータの抽出を行う方法 長くなりましたがよろしくお願いします。 開発言語はVBで、私自身は簡単なプログラムであれば理解できるレベルです
- ベストアンサー
- Visual Basic
- ACCESS、EXCELの限界?
ACCESS、EXCELで表示できる列数の限界について教えて下さい。 VBからの操作で、Oracleのテーブルの内容をACCESSで表示する仕組みを考えています。 Oracleのテーブルの列数が350近くもあり、ACCESSで表示することができません。CSVで出力したとしても、Excelで表示できません。どちらも255以上の列は表示できないようでした(256列以上は途切れて表示される)。 となると、Oracleのテーブルの内容をVBのグリッドに表示するしか方法はないでしょうか? もしそれしか方法が無いようであれば、グリッドに表示するか、ビューか何かを使用して表示列を絞り込む(これは最終手段にしたいです)かどちらかにしなければなりません。 一番いいのは、そのままACCESSに表示することなんですが。テキストで延々と出力するだけでは、データの編集がやりにくいので困っています。 よろしくお願いいたします。 開発環境は、Win2000(SP2)、Oracle8.1.6、VB6.0(SP3)、OFFICE2000(SR-1、SP2)です。
- ベストアンサー
- Visual Basic
- データベースのワイルドカードは%ではないの?
アクセスのテーブルに あ い う があり、 SQL文で *********************************************** SELECT テーブル1.フィールド FROM テーブル1 WHERE (((テーブル1.フィールド) Like "%あ%")); *********************************************** としてもエラーにならないけど、「あ」が抽出されません。 *********************************************** SELECT テーブル1.フィールド FROM テーブル1 WHERE (((テーブル1.フィールド) Like "*あ*")); *********************************************** にすると、「あ」が抽出されます。 アクセスなどのデータベースのワイルドカードは%だと思っていたのですが違うのですか?
- ベストアンサー
- オフィス系ソフト
- Access2003 テーブルロック
Access2003で任意のテーブルをロックすることはできますでしょうか? 1.ユーザAがテーブル1にアクセスしにいき、テーブル1をロック 2.ユーザAは処理が終了したらテーブル1のロックを解除 1~2の処理の間はユーザA以外のユーザがテーブル1にアクセスできないようにしたいのです。 ロックファイルを使用するやり方もあると思いますが なるべく簡単に実現したいので、 なるべくロックファイルやアプリケーション変数は使いたくありません。 (サーバーが落ちた場合に永久にロックされてしまうので) 何かよい方法をご存知の方がいらしたらご教授お願いします。
- 締切済み
- その他(データベース)
- アクセスされたテーブルを調べる方法
いつもお世話になっています。 SQL-Server 2005にて、あるSQL文を実行した際に、「どのテーブルに対してどのようなアクセスがあったのか」を調べる方法はありますでしょうか? いくつかのSQL文を実行した際の影響範囲を調べるために必要としています。 以上、ご協力宜しくお願い致します。
- ベストアンサー
- SQL Server
- オラクルからAccessにデータ追加
オラクルから、必要なデータを抜出し加工の為のDBをAccessで作成していますが、オラクルから抜き出したデータ(レコードセット)を、どうやってAccessのテーブルに書き込めばよいかがわかりません。 ◎環境 Oracle:10g Access:2010 ◎現在の状況 Dim CON As New ADODB.Connection Dim RS As ADODB.Recordset Dim SQL As String Dim i As Integer 'DB接続定義 CON.Open "DSN=DNS名;UID=ユーザー名;PWD=パスワード;" 'SQL文 SQL = "SELECT " SQL = SQL & "カラム1," SQL = SQL & "カラム2," SQL = SQL & "カラム3" SQL = SQL & "FROM オラクルテーブル名 " SQL = SQL & "WHERE 抽出条件 " SQL = SQL & "AND 抽出条件" SQL = SQL & "GROUP BY カラム" SET RS = CON.EXCUTE(SQL) For i = 1 To 10 Debug.Print rs(カラム1) & rs(カラム2) next i ここまでは、オラクルのテーブルから、レコードセットにデータが取り込まれてます。 rs.close: SET RS = Nothing con.close:SET CON=Nothing end sub 案1 レコードセットのデータを、Access側のテーブルにループで回して、1行ずつデータ追加 案2 INTO句で直接、テーブル作成 調べていて、2通りのやり方があると思うのですが、どちらにしても、テーブルへの書き込み方がわかりません。 案1の場合、Access側のテーブルを開いてデータ追加する方法 ※同時に2つのテーブルを開くことになるのでは? 案2の場合、SQL文はオラクルで処理する為の物なので、AccessテーブルのINTO句が使えるのか? オラクルのテーブルをリンクする事も考えたのですが、実際動かすPCにはAccessRuntimeしかインストールしてませんので、オラクルのテーブルをリンクしてくれませんでした。 よい方法があれば、アドバイスを頂けたら幸いです。
- ベストアンサー
- その他(データベース)
- ACCESSでのUPDATEコマンド
現在ASPとACCESSを使用して、開発を行っています。 ORACLEでの開発経験はあるのですが、SQLServerやACCESSでの経験がなく微妙にことなるSQLに困惑しています。 ORACLEではUPDATE時に他のテーブルからデータを参照して更新できると思いますがACCESSで同じようなことはできるのでしょうか?実行したいのはORACLEでいう、以下のようなSQLです。 SQLを2回に分けて実行すれば同じことはできるのですが・・・。 UPDATE TAB_A SET (A,B) = (SELECT A1,B1 FROM TAB_B WHERE C1='10') WHERE C = '10'; 宜しくお願いします。
- ベストアンサー
- その他(データベース)