MS Access Tips/Sample and VBA and Blog customize etc...

Query( 29 件)

Access のクエリで何行目から何件と指定して抽出する

TOP句を使えば先頭から指定行数を抽出できますが、何行目からと指定して抽出はできません。 MySQLだとLimit句で簡単にできるのですが、残念ながらAccessでは使えません。 しかし、サブクエリを使えばなんとかなります。 難易度:...

クエリやSQL上で関数や式の結果を確認したい

クエリやSQL上で、関数や式の結果を確認したいというときがあります。VBAのイミディエイトウィンドウで確認してもいいのですが、VBAとSQLでは微妙に動作が異なる場合もあります。 Oracle などではダミーテーブルの DUAL表 を使ったりするケースですね。...

複数の文字列置換をクエリで一気に実行する-改良版

複数の文字列置換をクエリで一気に実行する という記事を以前投稿しました。置換対象文字列の一部に重複があるとうまくいかない場合がありました。それに対処する方法を紹介します。 難易度:...

SQLでオートナンバー型の主キーフィールドを追加する方法

CREATE TABLE ステートメントでテーブルを作成するときや、既存のテーブルにALTER TABLE ステートメントで、オートナンバー型の主キーフィールドを追加する方法を紹介します。 掲示板の回答するときに調べたのですが、WEB検索してもそのものズバリのものが見つからなかったので備忘録として投稿。 難易度:...

結合条件でインデックスが無効になる場合

以前の 抽出条件でインデックスが無効になる場合 という記事とほとんど同内容ですが、とある掲示板での質問に回答したので、注意喚起という意味もこめて、もう一度、今回の質問のケースを題材にして、解説します。 難易度:...

SQLでフィールドの別名で並べ替えできない

SQLで複雑な演算フィールドに別名をつけていて、その別名をORDER BY句に指定すると、 パラメータを聞かれます。(VBAでレコードセットを開こうとするとエラーになる。) SELEC Fld1, Fld2, Fld3, Fld1 * Fld2 + Fld3 As 別名 FROM Tbl1 ORDER BY 別名 DESC; この場合、「別名」パラメータが開き、適当に入力すると希望の並び順になりません。 難易度:...

複数レコードの追加クエリで連番を付与する

フォームなどで新規レコードを入力するときに、あるフィールドに DMax で連番を取得して採番するという方法はあちこちで紹介されています。 しかし、テーブルまたはクエリの複数レコードを、追加クエリで追加先テーブルに追加するときに連番を振りたいというという時に、同様に DMax で連番を振ろうとしても、追加されたレコードにすべて同じ番号が振られます。 このような追加クエリでも連番を振る方法を紹介します。 ...

クエリで小計行、合計行を表示する

Accessなら、レポートのグループフッターまたはヘッダーで集計テキストボックスを配置すれば簡単にできます。ウィザードでもできます。 ただ、エクスポートするときとか、データシートビューで表示させたいとか、クエリだけで実現したい時もあるでしょう。 Oracle とか SQLServer ならROLLUPが使えますが、AccessのSQLでは対応してません。 難易度:...

クエリで大文字/小文字、全角/半角を区別して文字列比較をしたい

クエリの抽出条件や、演算フィールドの式で文字列比較をするとき、テキストモードで比較するので、大文字/小文字、全角/半角、ひらがな/カタカナを区別しません。 「ACCESS」と「Access」と「ACCESS」を等しいとみなします。また、「アクセス」と「あくせす」も等しいとみなします。 しかし、これらを別と判断してほしい場合もあるでしょう。その場合の対処法を検討してみます。 難易度:...

更新クエリで定義域集計関数を使わずに集計する

集計クエリで、抽出条件が複雑だったり、外部接続でインデックスが利用できないなどの原因で、処理が重くなる場合があります。ですので集計結果を親テーブルの方に書き込んでおきたいという要望が出る場合があります。 集計クエリあるいはそれを含むクエリは更新できません。ですのでこれを更新クエリにして実行しても「更新できません」と怒られます。DCountやDSumなどの定義域集計関数を使用して更新クエリにすれば更新できま...

クエリで時間帯重複チェック

社員の作業時間帯の管理テーブルです。(ID は主キー) Tbl1 ID日付社員ID開始時刻終了時刻 12012/02/01117:00:0019:00:00 22012/02/01118:00:0020:00:00 32012/02/01115:00:0016:00:00 42012/02/01217:30:0018:30:00 52012/02/02117:00:0019:00:00 ID 1 と 2 は、同じ社員が同じ日に、作業時間帯が重複しています。こういうことはありえないので、入力間違いということになります。このような重複データを抽出した...

3つ以上のテーブルを含むクエリは更新不可なのか?

掲示板での質疑応答で、3つ以上のテーブルを含むクエリは更新できないと思いこんでいる質問者が、たまにいます。 下図はAccess2003のヘルプのキャプチャーです。 同様の内容がAccessClubの下記のページにもあります。 クエリからのデータ更新について:AccessTips030 多対一リレーションシップが設定された 3 つ以上のテーブルを基にするクエリ 更新不可 「多対一リレーションシップ」と言う言い方はあまり見...
このカテゴリーに該当する記事はありません。