ACSESS2000で、アクセスのオブジェクトのうち、クエリの
役割を教えてください。

データベースは、すっごく初心者なので、全然わかってません。なので、教えてください。

A 回答 (2件)

データ-ベースのデータ-はテーブルです。


たとえ、クエリー、フォーム、マクロが壊れてしまっても、テーブルさえあれば何とかなります。
 クエリーは、簡単に言うとテーブルにあるデータ-を
 ある条件で抽出して表示したり、テーブルとテーブルを 結合して表示したりする"ビュー"です。
 私は、日付のデータ-テーブルに対して、ある期間の
 データ-だけを抽出したり、フォームのデータ-ソース にしたり使っています。
 
    • good
    • 0

ついこの間同じような質問をうけて回答しましたので、こちらをご覧下さい。



知りたいことが別だったり、これではわからない場合は補足をいただきたいと思います。

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=18868
    • good
    • 0

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

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QACCESSでVBAから選択クエリの抽出条件を指定したい

選択クエリの抽出条件はデザインビューの「抽出条件」欄に直接条件式を書き込むのが普通だと思いますが、この条件式をVBAで記述することは出来るでしょうか?

DoCmd.RunSQL ではアクションクエリしか実行できないようだし、
DoCmsOpenQuery では引数に抽出条件を指定することが出来ないし困っています。

Aベストアンサー

おつかれさま~(^_^)
惜しいですね!
もう少しですね

さてさて、明日出張なので今日はたぶん最後のレスになってしまいますが、
ちなみに明日は返答できないのであしからず。。。

> Forms("サブフォーム").RecordSource = strSQL
駄目でしたか。。。

もし私が記載した内容で埋め込みのサブフォームを
利用しているのであれば
自分を参照する為に「Me」を使って

Me.埋め込みフォーム.Form.RecordSource = StrSQL
Me.埋め込みフォーム.Requery

に変更すれば動くと強く思います。
# 念じてます(^^)

ちなみに、
Me.
と打ち込んだ時点でオートコンプリート(名称あってるかな~)
機能が働いて参照できるオブジェクトが表示される
はずです。
その中にKojiさんが書いた埋め込みオブジェクトが
きっとあるはず
もしかすると"FormA"とか名前を付けたつもりでも
Visual Basic Editor君が気を利かせて
Form_formA
とかになってる場合があります。
最近やってないんでうろ覚えなんですが、こんな処を注意すれば大丈夫!

追伸
このコードって検索とかで使えますから
覚えておくときっと役に立ちますよ♪

おつかれさま~(^_^)
惜しいですね!
もう少しですね

さてさて、明日出張なので今日はたぶん最後のレスになってしまいますが、
ちなみに明日は返答できないのであしからず。。。

> Forms("サブフォーム").RecordSource = strSQL
駄目でしたか。。。

もし私が記載した内容で埋め込みのサブフォームを
利用しているのであれば
自分を参照する為に「Me」を使って

Me.埋め込みフォーム.Form.RecordSource = StrSQL
Me.埋め込みフォーム.Requery

に変更すれば動くと強く思います。
# 念じてま...続きを読む

Qアクセスにてオブジェクト名変更時にそのオブジェクト名を含むクエリ内の式が自動更新されるようにするは?

アクセスを編集しています。
テーブルやクエリなどのオブジェクトが増えていく中で、過去に作成したオブジェクトの名前を変更したいと思うことがあるのですが、変更してしまうとそのオブジェクトが式の中に含まれているクエリがエラーを起こして実行できなくなってしまうので変更ができません。

オブジェクト名を変更した際、その名を含む式も同時に更新されるような設定はないものでしょうか?
教えていただければ幸いです。

Aベストアンサー

ご存知かもしれませんが
名前の自動修正オプションを設定する
https://support.office.com/ja-jp/article/%E5%90%8D%E5%89%8D%E3%81%AE%E8%87%AA%E5%8B%95%E4%BF%AE%E6%AD%A3%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B-b475af37-dcf8-477e-a9d8-32ca9c1d4623
より引用
『名前の自動修正で修正されない対象
名前の自動修正では以下のものは修正されません。
フォーム、レポート、またはコントロールの名前の変更は追跡されません。
マクロ内またはコード内のテーブル、クエリ、またはフィールドの名前は修正されません。』
ですので残念ながら有りません。

どこでコントロール名が使われているか調べるときに
リボンのデータベースツール→データベース構造の解析を選択
必要な個所にチェック・オプションの設定を行って[OK]
印刷プレビューが立ち上がるので、リボンのテキストファイルをクリック
適当な名前で保存しメモ帳などのテキストエディタで開き検索。
としたことはあります。

ご存知かもしれませんが
名前の自動修正オプションを設定する
https://support.office.com/ja-jp/article/%E5%90%8D%E5%89%8D%E3%81%AE%E8%87%AA%E5%8B%95%E4%BF%AE%E6%AD%A3%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B-b475af37-dcf8-477e-a9d8-32ca9c1d4623
より引用
『名前の自動修正で修正されない対象
名前の自動修正では以下のものは修正されません。
フォーム、レポート、またはコントロールの名前の変更は追跡されません。
マクロ内またはコー...続きを読む

QAccess VBA(条件付きクエリ実行する方法)

タイトルについて、御教示ください。
以下のような事を実行できるVBAを教えてください。

■前提条件
クエリ1・2:チェックボックス付クエリ

■やりたいこと
・クエリ1・クエリ2に両方一つもチェックが入っていない場合 →クエリAを実行
・クエリ1に1つ以上チェックが入っている(クエリ2には1つもチェックが入っていない)場合 →クエリBを実行
・クエリ2に1つ以上チェックが入っている(クエリ1には1つもチェックが入っていない)場合 →クエリCを実行
・クエリ1・クエリ2に両方1つ以上チェックが入っている場合  →クエリDを実行

上記のように、チェックボックスの入る条件によって、
実行するクエリを変更する事は可能なのでしょうか。

Aベストアンサー

あれ?いつぞやの?

さて、可能ではありますが、その実行トリガーは?
ボタン押下時?

まぁ何にしても、そのクエリのチェックのTrueの数をそれぞれDcount関数で取得し条件分岐すれば出来ますよね。

Q「データベースまたはオブジェクトは読み取り専用なので、更新できません」エラーについて

フィールドに数式セットをしようとして以下のように書きましたが
「データベースまたはオブジェクトは読み取り専用なので、更新できません」との
エラーが出ます。アクセスは初心者なので宜しくお願いします。

Dim db As DAO.Database
Dim rst As DAO.Recordset

Set db = CurrentDb
Set rst = db.OpenRecordset("Q02_5_見込み案件数") Q02_5_見込み案件数はクエリ
With rst
Do Until .EOF
.Edit     →ここで上記のエラーが発生します。
!件数 = !件数 * Me.SP予測掛け率
.Update
.MoveNext
Loop
.Close
End With

Aベストアンサー

クエリというのはSQL文をわかりやすく表示したものです。 (ので、クエリでできないものをSQLであればできるという可能性は少ないのですが、クエリというのはGUIですから、何を具体的にやっているのかなどを文章で説明するのは非常に困難ですので、ドキュメント化しにくいという欠点があります。 また、将来的に他のデータベースに変更する際など、手間がかかるのも問題です。)

データベース上ではテーブルの個々のデータの更新はできますが、クエリなどで集計したものや計算したものについては、テーブル上のどのレコードのどの値を変えるかがわからないため更新することができないのが普通です。

質問者様がやりたいことがはっきり見えていないので、正しい回答になるかがよくわからいのですが、
・件数というのがレコード数なら、集計する前のクエリで掛け率を表示する列を作りそれを合計させる
・件数というのが個々のレコードに入っている何らかの値なら、補正件数みたいな列を作りそこに件数と予想掛け率を掛けた値を入れて置き集計させる
などの方法が思いつきます。

QVBAからADOを使ってクエリのクエリを作成したい

VBAからADOを使ってクエリのクエリを作成したい

ADO初心者です。

VBA側で入力された引数を元に、ADOを使ってあるmdbファイルにあるクエリ(1)の抽出条件を変更した上で(抽出条件はVBA側の引数によって毎回変わります)、クエリ(1)の中から重複したレコードを抽出するクエリ(2)を作成したいと考えています。クエリ(1)並びにクエリ(2)をそれぞれ単独で作成する事は出来たのですが、クエリ(1)の結果を反映したクエリ(2)を作成する方法が分かりません。

なお、クエリ(1)の抽出条件変更は、RecordsetオブジェクトのOpenメソッドを使って行っています。何となくこれはレコードの更新は出来てもクエリの更新は出来ないような気がしており、それが原因のような気がしているのですが、クエリの更新をしたい場合はどうすればよろしいでしょうか?

Aベストアンサー

SELECT文の中にSELECT文ですが、わかりますか?。

重複しているものを検索した結果を一旦テーブルに(作成し)保持すれば
クエリのクエリと同じ結果を得られると思いますし、
重複しているものは何だったかという後から調べることがあったときには重宝します。

処理ができさえすればシンプルでもいいなら、
機能分けてもいいでしょう。

QASPによる アクセス2000のデータベース更新について

アクセス2000で作成したデータベースに ASPでデータベースを更新しようとしたのですが、エラーとなって更新できずにいます。


(アクセスデータベース内容)
ID F1 F2
1 TEST1 TEST2
2 1 2
3 4 5
4 23


※ID の 5  に 23 を登録したい。


(ASP内容)
<%
' データベースへの接続を開始
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open "Driver={Microsoft Access Driver (*.mdb)}; " & _
"DBQ=" & Server.Mappath("TESTdb1.mdb")

cn.Execute"INSERT INTO TTT(ID,F1) VALUES(5,23);"
%>


(エラー内容)

エラー タイプ
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Microsoft Access Driver] 更新可能なクエリであることが必要です。
/SQL-TEST/ncsch1.asp, line 7




アクセスの追加クエリで、INSERT INTO TTT(ID,F1) VALUES(5,23); を
実行したら、問題無く
5 23
が登録できましたので、データベース自体に他からの実行の場合、更新出来ないような
設定になっていると思うのですが、対処方法がわかりません。
どうすればよいか教えて頂けないでしょうか?

アクセス2000で作成したデータベースに ASPでデータベースを更新しようとしたのですが、エラーとなって更新できずにいます。


(アクセスデータベース内容)
ID F1 F2
1 TEST1 TEST2
2 1 2
3 4 5
4 23


※ID の 5  に 23 を登録したい。


(ASP内容)
<%
' データベースへの接続を開始
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open "Driver={Microsoft Access Driver (*.mdb)}; " & _
"DBQ=" & Server.M...続きを読む

Aベストアンサー

こちらが参考になるでしょうか。
http://shinob.cocolog-nifty.com/mix_dvd/2007/07/aspaccessmdb_4a9f.html

QVBAでアクセスのクリエの抽出条件を変更

エクセルで、契約管理表を作っています。
仕様としては、エクセルとアクセルを使用し、
エクセルからアクセスのデータベースを操作
するようにしています。
(複数拠点で仕様する為。)

アクセスでは「T_契約メイン」というテーブルと
「T_契約今月」というクエリがあって、今月分の
データのみ抽出できるようになっています。

これを、エクセルのVBAのフォームでADOとSQL等を
利用してデータ取得、編集、新規契約の登録などを
行うように考えています。

ここまでの内容は無事、作成する事が出来ています。

ここからが質問なのですが、クエリ「T_契約今月」の抽出
条件をエクセルVBAから変更するにはどのようにコードを
書けばいいのでしょうか?

毎月毎月、アクセルを開いてクエリのデザインビューで
抽出条件を変更すればいいのでしょうが、あんまりスマート
では無いですよね。

出来れば、エクセル側からVBAで設定変更等のフォームや
ボタンを作って、処理したいのですが…。

とりあえずアクセスに繋げるところまでは分かるので、
クエリの抽出条件変更の部分のコードの記載方法を
教えて頂けないでしょうか?

どうぞよろしくお願いいたします。

エクセルで、契約管理表を作っています。
仕様としては、エクセルとアクセルを使用し、
エクセルからアクセスのデータベースを操作
するようにしています。
(複数拠点で仕様する為。)

アクセスでは「T_契約メイン」というテーブルと
「T_契約今月」というクエリがあって、今月分の
データのみ抽出できるようになっています。

これを、エクセルのVBAのフォームでADOとSQL等を
利用してデータ取得、編集、新規契約の登録などを
行うように考えています。

ここまでの内容は無事、作成する事が出来て...続きを読む

Aベストアンサー

VBAを持ち出さずとも、Excelに抽出条件を入力するセルを設け
Accessにリンクして抽出条件とすればいいのでは

リンクテーブルの名前を「エクセル」、フィールド名を「抽出条件」とすれば
Accessのクエリの抽出条件欄に

In (select 抽出条件 from エクセル)

QWindows2000ServerにあるSQLSever2000のデータベースをODBC経由で参照したいのですが・・・

Window2000ServerにあるSQLServer2000のデータベースをWindows98で参照したいのですが、ODBCデータソースの設定がうまくいきません。

Windows98でODBCデータソースの設定をしようとしても、データベースのあるサーバーが見えない(「接続するSQLServer名」が「(local)」しか選択できない)のです。手入力してみてもダメでした。

Windows2000ServerにあるSQLSever2000のデータベースをWindows98のODBC経由で参照するのは無理なのでしょうか?

どうぞよろしくお願いします。

Aベストアンサー

おっと、その前にSQLサーバクライアントを98側にインストールし、クライアント設定ユーティリティで名前を登録します。

QVBAをつかってクエリの情報を抽出するには??

ACCESS VBAを使ってプログラムを組んでいるVBA初心者です。ヘルプやいろんなHPを参考にしているのですが、どうしてもわからないことがあるのでおしえてください。
クエリの情報をフォームの日付から抽出し、csvファイルを作成するというものを作ろうとしています。
クエリの抽出条件でフォームの日付の期間で抽出するようにしてあります。
VBAにてOpenRecordsetでクエリから情報を抽出しようとするのですがクエリがありませんとエラーをはかれてしまいます。クエリの指定方法がまちがっているのでしょうか?
また、以下の方法とは別の方法でクエリから抽出するやりかたがありましたら教えていただけませんでしょうか?よろしくお願いいたします。
以下にどのように記述しているか記します。
------------
Public Function value()
On Error GoTo ERRORRR
Set db = CurrentDb
Dim rs As Recordset

Set rs = db.OpenRecordset("[開通チェック]", dbOpenDynaset)
Debug.Print rs.EOF
Do Until rs.EOF
Debug.Print rs!ID
Debug.Print rs!登録状態
Debug.Print rs!開通年月日
rs.MoveNext
Loop
rs.Close: Set rs = Nothing
db.Close: Set db = Nothing
Exit Function
ERRORRR:
msgbox Err.number & ":" & Err.description
End Function

--------
開通チェック:クエリ (開通年月日には Between [Forms]![開通チェック]![開始日] And [Forms]![開通チェック]![終了日] の抽出条件が書かれています。)

使用しているACCESS Ver:ACCESS97

ACCESS VBAを使ってプログラムを組んでいるVBA初心者です。ヘルプやいろんなHPを参考にしているのですが、どうしてもわからないことがあるのでおしえてください。
クエリの情報をフォームの日付から抽出し、csvファイルを作成するというものを作ろうとしています。
クエリの抽出条件でフォームの日付の期間で抽出するようにしてあります。
VBAにてOpenRecordsetでクエリから情報を抽出しようとするのですがクエリがありませんとエラーをはかれてしまいます。クエリの指定方法がまちがっているのでしょうか?
...続きを読む

Aベストアンサー

パラメータがあるクエリはパラメータをParametersで入れてあげないと開けません。
パラメータを読み取れないのでRecordsetにクエリを渡せない状態でエラーが出ていると思います。

Dim db as Database
Dim qd as QueryDefs
Dim rs as Recordset
Dim pr1 As Date, pr2 As Date

Set db = CurrentDb()

pr1 = Format(Forms("開通チェック")("開始日"), "yyyy/mm/dd")
pr2 = Format(Forms("開通チェック")("終了日"), "yyyy/mm/dd")

Set qd = db.QueryDefs("開通チェック")
qd.Parameters("pr1").Value = pr1
qd.Parameters("pr2").Value = pr2

Set rs = qd.OpenRecordSet() 'ここでRecordsetにクエリを渡します。

これでいけると思います。

パラメータがあるクエリはパラメータをParametersで入れてあげないと開けません。
パラメータを読み取れないのでRecordsetにクエリを渡せない状態でエラーが出ていると思います。

Dim db as Database
Dim qd as QueryDefs
Dim rs as Recordset
Dim pr1 As Date, pr2 As Date

Set db = CurrentDb()

pr1 = Format(Forms("開通チェック")("開始日"), "yyyy/mm/dd")
pr2 = Format(Forms("開通チェック")("終了日"), "yyyy/mm/dd")

Set qd = db.QueryDefs("開通チェック")
qd.Parameters("pr1")....続きを読む

Qアクセス クエリのオブジェクト数を減らすために

初めて質問させていただきます。
ただ今アクセス2013にてデータ集計を行っています。
テーブルは3つ
1 商品テーブル  2 売上テーブル  3日付テーブル
この3つのテーブルから様々な条件でクエリを作成したいと思っていますが、条件別に集計クエリを作ると結構な数になってしまうのでその条件をコンボボックスで指定し、コンボボックスとクエリ実行ボタンのみで集計を出したいと思っています。
集計クエリの雛型は
フィールド  商品名    売上データ    日付
テーブル  商品テーブル  売上テーブル  日付テーブル
                      (表示なし)
集計     グループ化   合計     Where 条件
         between [forms]![フォーム1]![開始日] and [forms]![フォーム1]![終了日]
このような集計クエリを作りました。
例えば、商品テーブルに[品質]というフィールドがあります。
上記集計クエリの[商品名]をコンボボックスで[品質]に変え、[品質]のデータを集計したいです。
売上テーブルに商品ID,日付IDがあり、リレーションで繋いでます。
アクセス初心者。SQLもVBAもわからないと同様レベルです。
ご教授お願いします。

初めて質問させていただきます。
ただ今アクセス2013にてデータ集計を行っています。
テーブルは3つ
1 商品テーブル  2 売上テーブル  3日付テーブル
この3つのテーブルから様々な条件でクエリを作成したいと思っていますが、条件別に集計クエリを作ると結構な数になってしまうのでその条件をコンボボックスで指定し、コンボボックスとクエリ実行ボタンのみで集計を出したいと思っています。
集計クエリの雛型は
フィールド  商品名    売上データ    日付
テーブル  商品テーブル ...続きを読む

Aベストアンサー

>アクセス初心者。SQLもVBAもわからないと同様レベルです。
素直に条件ごとにクエリを作るのがいいと思います。

VBAで行うなら下記を参考にクエリのSQLを書き換えればオブジェクト数を減らせます。
http://tsware.jp/tips/tips_082.htm


人気Q&Aランキング

おすすめ情報