
アクセス2007の抽出
クエリをもとに検索画面を作り部署の抽出をします、
検索画面は
部署名:部署名を入力するところ コマンドボタンで実行です
クエリの部署のフィールドのところに[部署]としていますが
部署を複数抽出する場合どうしたらいいかわかりません。
[部署]のパラメータのところに部署名ひとつ「総務」と入れると総務を抽出してくれます
これを部署を複数抽出したい場合はどうしたらできますか?たとえば総務と経理を抽出
したい場合
部署は30くらいあります。
説明がよく出来なくてすみません
どうぞよろしくお願いいたします。
No.15
- 回答日時:
コードは問題ないのですが、一度以下の二つの方法を
やってみてください。
名前の自動修正については、以下にあります。
http://office.microsoft.com/ja-jp/access-help/HA …
(1)
「名前の自動修正を行なう」のチェックをはずす。
OKとする。
検索を行なってみる。
(2)
同様に
「名前の自動修正情報をトラックする」のチェックをはずす。
OKとする。
検索を行なってみる。
それから、Access2007のSPのバージョンはどのように
なっていますか。SP2、あるいはSP3、あるいはノーマルの
ままバージョンアップは行なっていない、のどれでしょうか。
確認ですが、Q_Temp検索が消えるというのはデータベース
ウィンドウから消える、ということで、オブジェクトの
依存関係の表から消える、ということではないですね。
消えた後には、新たに作成されないということですね。
No.14
- 回答日時:
一度提示したサンプルを使ったフォームの
作り方などをおさらいしておきます。
(1)
フォームを作ります。名前はfrm検索とします。
(2)
フォームにリストボックスを適当な長さ、大きさで
張り付けます。リストボックスのプロパティを開いて
名前をlst検索とします。また、複数検索のところを
標準にします。
(3)
フォームに二つのテキストボックスを貼り付け、
それぞれのプロパティを開いて、それぞれの名前を、
tx日付FROM tx日付TO とします。
(4)
コマンドボタンをフォームに貼り付け、
プロパティを開いて名前をcmd検索とし、
プロパティのクリック時イベントから
コード表を開いて、
Private Sub cmd検索_Click()
Call mkSQL
End Sub
とします。
(4)
同じ、コード表に
Private Sub mkSQL()
のコードをすべて張り付けます。
このコードは#11のコードでも
かまいません。
(5)
テーブルを
テーブル名はテーブル1
各フィールドは以下のように作成。
(部署(テキスト型)、日付(日付/時刻型)、スケジュール(テキスト型))
以上のようにしてみてください。
>今回、消えたのはfrm検索を動かそうとしている時何かを
>やってしまい消えてしまったのでしょうか?
>実はクエリの作成でQ_Temp検索を作り再度、frm検索を動かしたら
>それまで 消えてしまいました。
プログラム上は無ければ作るようになっているのですが、
プログラムのどこか変更しています?
>こりずによろしくお願いいたします。
このくらいならタエラレます。
http://oshiete1.watch.impress.co.jp/qa5995365.html
この回答への補足
piroin654さん
ありがとうございます。
>プログラム上は無ければ作るようになっているのですが、
>プログラムのどこか変更しています?
何も違うところはなく教えていただいたままに作っています。
全部、おさらいしてみました、なんとまたQ_Temp検索が消えてしまいました。
frm検索から日付とスケジュールを選択してcmdボタンをクリックすると
Q_Temp検索がパッと消えます。
下記を貼り付けています。
Option Compare Database
Private Sub cmd検索_Click()
Call mkSQL
End Sub
Private Sub mkSQL()
Dim db As Database
Dim qdf As QueryDef
Dim ctl As Control
Dim strKey As String
Dim strSQL As String
Dim varitm As Variant
Set db = CurrentDb
On Error Resume Next
'前回作成したクエリを削除。二重作成によるエラーの回避’
For Each qdf In db.QueryDefs
If qdf.Name = "Q_Temp検索" Then
DoCmd.DeleteObject acQuery, "Q_Temp検索"
End If
Next qdf
Set ctl = Me!lst検索
For Each varitm In ctl.ItemsSelected
strKey = strKey & ",'" & ctl.ItemData(varitm) & "'"
Next varitm
strKey = Mid(strKey, 2)
strSQL = "SELECT テーブル1.部署, テーブル1.日付, テーブル1.スケジュール " & _
"FROM テーブル1" & _
"WHERE (((テーブル1.部署) In (" & strKey & "))AND((テーブル1.日付) " & _
"Between [Forms]![frm検索]![tx日付FROM] " & _
"And [Forms]![frm検索]![tx日付TO]));"
Set qdf = db.CreateQueryDef("Q_Temp検索", strSQL)
DoCmd.OpenQuery ("Q_Temp検索")
qdf.Close
Set qdf = Nothing
db.Close
Set db = Nothing
End Sub
同じですね?
よろしくお願いいたします。
No.13
- 回答日時:
追加ですが、
最初のデータベースにはQ_Temp検索
は存在しませんが、
プログラムを実行している状態では、
あたかもQ_Temp検索という名前の
クエリがずーーーーっと存在している
ように状態です。なければ新たに
作り直す、あれば、一度つくり直す
というようにプログラム
されています。
No.12
- 回答日時:
肝心な説明が抜けていました。
>Q_Temp検索が消えてしまいました、
>frm検索を実行させたために消えたのか
>その前からなかったのかは不明です。がっかりです。
がっかりさせてしまいました。実はプログラムでは
最初にQ_Temp検索という名前のクエリは存在しないのです。
最初に、プログラムを実行するとそのとき初めて
Q_Temp検索という名前のクエリが作られます。
このクエリはプログラムを実行するたびに内容が
書き換えられるのでプログラムを実行するごとに
最初にQ_Temp検索という名前のクエリを一度削除し、
また同じ名前のQ_Temp検索を作成するようにプログラム
しています。Q_Temp検索1あるいはQ_Temp検索2
のような名前だと同じとは見なさないので
削除はしません。
この回答への補足
piroin654さん
ありがとうございます。
すごく解りやすく助かります。
>最初にQ_Temp検索という名前のクエリは存在しないのです。
>最初に、プログラムを実行するとそのとき初めて
>Q_Temp検索という名前のクエリが作られます。
はい、コードをみるとなんとなくですが理解できます
今回、消えたのはfrm検索を動かそうとしている時何かを
やってしまい消えてしまったのでしょうか?
実はクエリの作成でQ_Temp検索を作り再度、frm検索を動かしたら
それまで 消えてしまいました。
また、試してみます。
こりずによろしくお願いいたします。
No.11
- 回答日時:
Private Sub mkSQL()
Dim db As Database
Dim qdf As QueryDef
Dim ctl As Control
Dim strKey As String
Dim strSQL As String
Dim varitm As Variant
Set db = CurrentDb
On Error Resume Next
'前回作成したクエリを削除。二重作成によるエラーの回避
For Each qdf In db.QueryDefs
If qdf.Name = "Q_Temp検索" Then
'Q_Temp検索という名前のクエリがあれば以下で削除
DoCmd.DeleteObject acQuery, "Q_Temp検索"
End If
Next qdf
'リストボックスで選択された項目の取得
Set ctl = Me!lst検索
For Each varitm In ctl.ItemsSelected
strKey = strKey & ",'" & ctl.ItemData(varitm) & "'"
Next varitm
'リストボックスから取り出した項目の整形
strKey = Mid(strKey, 2)
'リストボックスから取り出した項目とテキストボックスの日付
'をSQL文に設定
strSQL = "SELECT テーブル1.部署, テーブル1.日付, テーブル1.スケジュール " & _
"FROM テーブル1 " & _
"WHERE (((テーブル1.部署) In (" & strKey & ")) AND ((テーブル1.日付) " & _
"Between [Forms]![frm検索]![tx日付FROM] " & _
"And [Forms]![frm検索]![tx日付TO]));"
'SQL文をもとにQ_Temp検索という名前のクエリを作成
Set qdf = db.CreateQueryDef("Q_Temp検索", strSQL)
'Q_Temp検索という名前のクエリを表示
DoCmd.OpenQuery ("Q_Temp検索")
'以下は後始末
qdf.Close
Set qdf = Nothing
db.Close
Set db = Nothing
End Sub
No.10
- 回答日時:
一応、Q_Temp検索という名前のクエリが存在すれば
プログラムの設計上削除するようになっています。
[frm検索を実行したときのプログラムの流れの説明]
1 Q_Temp検索というクエリが存在しないか確認
2 Q_Temp検索というクエリが存在すれば二重作成
のエラー回避のためにこの名前のクエリを削除
3 Q_Temp検索という名前のクエリを作成する情報を
フォームのテキストボックスとリストボックスから
取得
4 Q_Temp検索という名前のクエリを作成
5 Q_Temp検索を表示
という流れになります。したがって、Q_Temp検索という
名前のクエリがあれば最初に削除するので、もしその
クエリを保存したいのならば、他の名前に変更しておい
てください。たとえば、Q_Temp検索1、あるいはまったく
別の名前に変更。
コードの説明をコード表に入れておきました。
そのままコード表に張り付けてもいいです。
'ボタンをクリックします。
Private Sub cmd検索_Click()
'mkSQLというコードを呼び出します。
Call mkSQL
End Sub
No.9
- 回答日時:
SQL文中の半角スペースについて
たとえば、
"FROM テーブル1 " & _
の 1 と " の間には半角スペースが入っています。
また、
"WHERE (((テーブル1.部署) In (" & strKey & ")) AND ((テーブル1.日付) " & _
の
) AND (
の部分も ) と AND と ( の間にはそれぞれ半角スペースが
入っています。
この回答への補足
piroin654さん
お世話になります。
呆れずに聞いてください。
Q_Temp検索が動いたと言って、frm検索からやってみようとすると
Q_Temp検索が消えてしまいました、frm検索を実行させたために消えたのか
その前からなかったのかは不明です。がっかりです。
作成のクエリからやるべきですか?
よろしくお願いします。
No.8
- 回答日時:
それと、回答ではテーブル1になっていますが、
これはクエリに置き換えても結果は同じです。
こちらでは、テーブル1を、いくつかのテーブルの
組み合わせによるクエリに置き換えて抽出もしています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel 文字を抽出したい 4 2022/06/22 11:43
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- 数学 M種類の部品からN種類の部品を抽出する効率的なアルゴリズム 2 2022/04/22 16:51
- その他(データベース) c言語の問題です。これを踏まえてコーディングしたいのでおしえていただきたいです。 3 2023/08/03 09:27
- Access(アクセス) スキルシートのエクセルの項目に 2 2023/04/04 22:41
- その他(Microsoft Office) Excelの関数(FILTER関数)について教えてください 2 2023/07/31 16:11
- Excel(エクセル) Excelのセル内の特定の文字列を別のセルへ抽出したいです 2 2022/07/06 16:10
- その他(Microsoft Office) エクセル関数使用 4 2022/07/20 10:12
- 会社・職場 部署異動の希望を出すか悩んでいます。 6年働く職場で6年間同じ部署に居ます。 ですが去年ごろから、部 2 2023/02/26 19:16
- その他(Microsoft Office) Outlookメール 連絡先の検索について 〈 ご説明 〉 Windows PC の Outlook 1 2022/09/23 14:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessのテーブル並び替え
-
ACCESSで2種類に分類してカウン...
-
アクセス
-
アクセス2007の抽出
-
アクセス2007のクエリについて
-
Accessのクロス集計→テーブル作...
-
アクセスのクエリでSplit関数は...
-
Accessでテーブルやクエリのリ...
-
ACCESS 更新クエリについて
-
アクセス 置換 どちらが早い...
-
Access クエリ、計算について
-
【アクセス】2つのリストを1...
-
access2010 テーブル作成クエリ...
-
テーブルの縦の合計がクエリで...
-
Accessでの集計
-
クエリをマクロでやるには?
-
ACCESSのリレーションシ...
-
Accessにてテーブル追加時の連番
-
Access「レコードが削除されま...
-
クロス集計クエリの結果をテー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
クロス集計クエリの結果をテー...
-
デザインビューにてテーブルが...
-
accessでクエリの結果だけをリ...
-
アクセスのクエリでSplit関数は...
-
Access「レコードが削除されま...
-
アクセス 項目毎にデータを横...
-
クエリのデータをテーブルに入...
-
アクセス:クエリの結合とリレ...
-
教えてください! アクセスのac...
-
access テーブル作成クエリでテ...
-
access インポート時、既にある...
-
更新不可能なクエリに対して更...
-
ACCESSでテーブルの一部だけを...
-
ACCESSで行数指定(5万行目~8...
-
アクセスで新しいレコードの追...
-
Access2010「クエリが複雑すぎ...
-
Accessのクロス集計→テーブル作...
-
アクセスのクエリとDlookupはど...
-
Access DAOのExecuteメソッドの...
-
Access テーブルを検索し関連性...
おすすめ情報