- ベストアンサー
クエリで抽出した行をコンマで区切って1つの表に出力したい
noname#140971の回答
- ベストアンサー
![noname#140971](https://gazo.okwave.jp/okwave/images/contents/av_nophoto_60_1.gif)
Employee: ID_EName _1_伊藤 _2_佐藤 _3_田中 [イミディエイト] ? FileWrite("C:\Temp\Test.txt", DBSelect("SELECT EName FROM Employee")) True これは、Access2003 のイミディエイトウインドウでの実行結果です。 テーブル[Employee]の列[EName]を C:\Temp\Test.txt に出力しています。 C:\Temp\Test.txt: 伊藤;佐藤;田中 データがコンマでは区切られていません。 [イミディエイト] ? FileWrite("C:\Temp\Test.txt", DBSelect("SELECT EName FROM Employee", ",")) True C:\Temp\Test.txt: 伊藤,佐藤,田中 今度は、列データの区切り子にコンマ(,)を指定しているので目的が達成されています。 このように、FileWrite関数、DBSelect関数の類を開発すれば目的は容易に達成されます。 この2つの関数は、別に特段に難しいものではありません。 プログラマでもない素人の私が書ける程度のもんです。 ちょっと、サワリを示せば次のようです。 Public Function FileWrite(ByVal FileName As String, _ ByVal Text As String) As Boolean On Error GoTo Err_FileWrite Dim fso As Object Dim txs As Object Set fso = CreateObject("Scripting.FIleSystemObject") Set txs = fso.CreateTextFile(FileName, True) txs.Write Text FileWrite = True Exit_FileWrite: Exit Function Err_FileWrite: MsgBox Err.Description & "(FileWrite)", vbExclamation, " 関数エラーメッセージ" Resume Exit_FileWrite End Function Public Function DBSelect(ByVal strQuerySQL As String, _ Optional ByVal strSeparator1 As String = ";", _ Optional ByVal strSeparator2 As String = "") As String On Error GoTo Err_DBSelect Dim I As Integer Dim J As Integer Dim R As Integer Dim C As Integer Dim M As Integer Dim N As Integer Dim rst As ADODB.Recordset Dim fld As ADODB.Field Dim Datas As String Set rst = New ADODB.Recordset With rst .Open strQuerySQL, _ CurrentProject.Connection, _ adOpenStatic, _ adLockReadOnly If Not .BOF Then M = .RecordCount - 1 N = .Fields.Count - 1 .MoveFirst For R = 0 To M For C = 0 To N ・・・・・ Next C ・・・・・ .MoveNext Next R ・・・・・ End If End With Exit_DBSelect: DBSelect = Replace(Datas, strSeparator1 & strSeparator2 & strSeparator1, "") Exit Function Err_DBSelect: MsgBox "SELECT 文の実行時にエラーが発生しました。(DBSelect)" & Chr$(13) & Chr$(13) & _ "・Err.Description=" & Err.Description & Chr$(13) & _ "・SQL Text=" & strQuerySQL, _ vbExclamation, " 関数エラーメッセージ" Resume Exit_DBSelect End Function こういう方向性でも良いのであれば参考にされてください。 なお、・・・・・部は、丸回答というルール違反を避けるためで他意はありません。
関連するQ&A
- クエリで複数条件を同時に抽出・出力する方法
お世話になります。 ACCESSのクエリであるテーブルの入力ミスを抽出したいと考えています。 例えば、氏名と科目と点数があるとします。 No. 氏名 科目 点数 -------------------------- 01 佐藤 国語 80 02 田中 国語 45 03 鈴木 国語 60 04 佐藤 数学 75 05 田中 数学 40 06 鈴木 数学 48 ここで抽出したい条件として、国語は59点以下、数学は49点以下の抽出をしたいとして、今まではクエリの条件に1つずつ科目と点数に条件を入れ1つずつ結果を抽出をしていましたが、同時に結果を得ることができますか?また、結果をリスト表(クエリかレポート)として出力できますか? 拙い文で申し訳ありませんが、分かる方いらっしゃいましたらよろしくお願いいたします。 (スキルとして少しで、ブランクもありますがVBA,SQLです)
- ベストアンサー
- その他(データベース)
- 何の為に「抽出条件」「または」が2段に分かれてる
何の為に「抽出条件」「または」が2段に分かれてるのですか? アクセスの使い方がよくわからないので質問します。 ----------------------- テーブル1 苗字(フィールド) 田中 佐藤 伊藤 ・ ・ ・ ----------------------- クエリ1で フィールド:苗字 テーブル:テーブル1 並べ替え: 表示: 抽出条件:"田中" または:"佐藤" ----------------------- と入力して保存しクエリを一回閉じて再度開くと ----------------------- 抽出条件:"田中" Or "佐藤" または:(空白) ----------------------- になってしまいます。 意味は同じだと思うのですが 見た目上、2段のまま保存されたいのですが 自動でorを使われ一段で表示されてしまうのでしょうか? だとしたら何の為に「抽出条件」「または」が2段に分かれてるのですか? わかりやすくするために画像を添付します。
- ベストアンサー
- オフィス系ソフト
- access2007 クエリで抽出
初心者です。クエリで抽出したのですが、一部のデータが抜け落ちます。抽出条件のフィールドはテキスト型で、元のテーブルでコピペで統一しましたが、同じデータが抜け落ちます。削除してやり直しても同様でした。重複クエリを作成するとこのフィールドが重複して出てきます。どこを直したらいいのか見当がつきません。よろしくお願いします。
- 締切済み
- その他MS Office製品
- アクセスのクエリ抽出について
アクセスで、テキストデータを開き クエリウィザードからフィールドの抽出条件として 文字が含まれているものと文字が含まれていないものと それぞれ抽出したいのですが Likeの式から抽出出来るのでしょうか? なにかの文字を含んでるデータに対しては 抽出できるのですが、うまく抽出出来ません。 下記のようなイメージで抽出したいと思ってます。 例 データ合計5件 "00000001234-23 " "12345672-1-2 " "" "55145672-1-3-2 " "" データあり3件 "00000001234-23 " "12345672-1-2 " "55145672-1-3-2 " データなし2件 "" "" 宜しくお願いします。
- ベストアンサー
- その他(データベース)
- Access 抽出クエリーについての条件
先の投稿に重複しますが、 それぞれ異なるテーブルについて、 クエリーで、、 Between #5:00# And #19:00# Between 500 And 1900 上記の方法等で同じ数値ではなく、 期間に幅をもたせて一致としそれぞれの 一致データを抽出するクエリーは つくれますか? もちろん抽出対象のテーブル、列はそれぞれ同じ書式です。 > between関数を使って、 フィールドのデータ型が日付/時刻型の場合 抽出条件欄に、 > 5:00から19:00を抽出したい、 Between #5:00# And #19:00# > 5:00から25:00を抽出したい、 Between #5:00# And #23:59# OR Between #0:00# And #1:00# Access の日付/時刻型では、25:00 というような表現はできないので、上記のように分割することになります。 > また上記がテキストだった場合も、 > 500から1900を抽出したい フィールドがテキスト型の場合、テキスト比較になり数値比較とは異なる抽出結果になるので、 フィールドに Val([テキスト型フィールド]) と式を設定して数値型に変換します。このの抽出条件に、 Between 500 And 1900 と設定します。 通報する
- 締切済み
- その他MS Office製品
- クエリーで全部のデータを抽出する方法
アクセスのクエリーでデータを抽出する時、具体的にはフォームでデータを入力し抽出するのですが、たとえばフォームのテキストボックスに数字を入れないとそのクエリーのフィールドは抽出がかからないようにしたいのです。(抽出フィールドが1つなら数字をいれなければクエリーのデータすべてが表示される) ----------------------------------- フィールド A B c テーブル テーブル1 テーブル1 テーブル1 抽出条件 [] [] または ---------------------------------- 上はクエリーのデザインですがクエリーをひらくと抽出条件をきいてきますがA列は何も入力しないでB列では1と入力するとBの列に1の入ってるレコードを表示させたいのです。(もし空欄が無理ならAの列の時何かある文字を入力すると全部表示になる、でもいいです。) まわりくどくなりましたが、アクセス超入門者です。よろしくおねがいします。
- 締切済み
- オフィス系ソフト
- ACCESS クエリの抽出項目をEXCELから
Access2000のクエリの抽出項目をExcel2013の内容を抽出項目として指定するにはどうすればよいでしょうか。 Excelには、 佐藤 田中 鈴木 ......... のように縦に名前が最大18名分入っています。 この(最大)18名の名前をAccessの抽出項目とします(フィールドは10あってその6番目に抽出項目を18名分入力したいのです)。 18名を一人一人コピペしていたのですが、何とか簡素化できないものかな?と思っています。 できれば、マクロで一発で抽出項目を貼り付けたいのですが。 よろしくお願いします。
- ベストアンサー
- その他(データベース)
- Accessの選択クエリの抽出条件について
いちもお世話になります。Access2002を勉強中の初心者です。 顧客テーブルから選択クエリを作っています。クエリのフィールドには「都道府県」(東京、埼玉、千葉...)と「顧客名」(山田、佐藤、田中...)があります。 「顧客名」の山田以外を抽出したいのですが、但し「都道府県」が東京の場合は山田以外の条件を外したいのです。つまり、埼玉、千葉の山田は抽出しませんが東京の山田は抽出したいのです。 このような抽出条件の設定ができますか? アドバイス、よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- Accessのデータをテキストファイルで出力する方法を教えてください。
Accessのデータをテキストファイルで出力する方法を教えてください。 クエリで抽出したデータをテキストファイルに出力したいのですが、下記のような記述では""や,で区切られてしまいます。 DoCmd.TransferText acExportDelim, "", "クエリ名", "出力ファイル.txt" フィールドごとに改行して出力する方法はないでしょうか? <クエリ結果> フィールド1 フィールド2 フィールド3 aaa bbb ccc <出力テキストファイル> aaa bbb ccc
- ベストアンサー
- その他(データベース)
- ACCESSでのクエリ抽出条件について
ACCESS超初心者です。 自分なりに調べたのですが、知識不足によりお手上げ状態です。 クエリの抽出条件について、どなたかご教授いただけますでしょうか? OS:XP ACCESS:2000 ・フォーム上に自由に入力できるテキストを3つ用意します。 ・入力された3つのテキストが1つのフィールドに含まれるものをクエリで抽出したい。 ・3つのテキストが空欄の場合は全てのデータを抽出したい。 ■フォーム上のテキスト テキスト1:テキスト10 テキスト2:テスト11 テキスト3:テスト12 ■テーブル フィールド1:問合せ内容(1) ■クエリ内の抽出条件 Like "*" & [Forms]![F_検索テスト]![テキスト10] & "*" And Like "*" & [Forms]![F_検索テスト]![テスト11] & "*" And Like "*" & [Forms]![F_検索テスト]![テスト12] & "*" テキスト名がおかしいのですが、ご了承下さい。
- ベストアンサー
- オフィス系ソフト
お礼
お礼が遅くなってすみません。 格闘してみましたが、やっぱり私には無理みたいです…。 ご親切にありがとうございました。