- ベストアンサー
AccessでSQL*PlusのようにSQLの結果を表示させたい
acyoooooの回答
こんちにわ! こんな感じはいかがですか? public function test dim DB as DAO.Database dim RS as DAO.Recordset dim strSQL as string 'SQL文格納用 dim strWork as string 'レコード格納用 dim intcnt as integer 'フィールド数カウント用 set DB = CurrentDB '適当にテーブル名や条件いれてください strSQL = "SELECT " & _ "* " & _ "FROM " & _ "テーブル名 " & _ "WHERE " & _ "条件;" set RS = DB.Recordset(strsql,dbopendynaset) '//レコードが終わるまでまわす do until rs.eof '初期化 strWork = "" '各フィールドの値をカンマで区切ります。最初の文字はカンマになってしまいますがゆるしてください。 for intcnt = 0 rs.recordcount - 1 strWork = strWork & "," & rs.fields(intcnt) next 'イミディエイトウィンドウに表示 debug.print strwork '次のレコードへ rs.movenext loop DB.close:set db = nothing RS.close:set rs = nothing end function これでイミディエイトウィンドウに表示されると思いますが、レコード数が多いと表示しきれないかも? そういうとき私は、クエリのSQLビューでSQL文作成してからプログラム組みます。 ※大文字、小文字の区別が・・・みにくかったらごめんなさい ※せっかくインデントつけたのに反映されないですね・・・
関連するQ&A
- access VBA SQLの記述について
access VBA SQLの記述について (下記は私の作成したものではありません) -------------------------------------------- 'IDの取得 myID = [Forms]![フォーム]![ID] '削除クエリ SQLstr = "DELETE FROM テーブル WHERE ID = " & myID DoCmd.RunSQL SQLstr -------------------------------------------- 一応この記述で、問題なく動作しているんです。 「" & myID」の部分は、なぜは正しいのでしょうか? 「" & myID & ""」でないといけないと思っていました。 「&」で囲い、 さらにそれを「”」で囲い、 「&」の前後は半角スペースを挿入する。 という記述のみが正しいと思っていたのですが・・・? また、こういう点の総括した正しい情報はどこで学べますか?
- ベストアンサー
- オフィス系ソフト
- access の UPDATE のSQL文教えてください
お世話になります。 仕訳抽出 (キー無し)の勘定科目別の金額を勘定科目毎に集計して仕訳集計(キー項目:勘定科目)の金額を更新するSQL文です。 1つ目はOK ですが 2つ目で「構文エラー:演算子がありません」となります。 DoCmd.RunSQL "UPDATE 仕訳集計 set 金額=0 " DoCmd.RunSQL "UPDATE 仕訳集計 " _ & " INNER JOIN 仕訳抽出 ON 仕訳集計.勘定科目 = 仕訳抽出.勘定科目" _ & " SET 仕訳集計.金額 = SUM(仕訳抽出.金額) Group by 仕訳抽出.勘定科目;"
- ベストアンサー
- オフィス系ソフト
- 選択クエリで実行結果を非表示にできますか?
自分がやろうとしていること自体が間違っているかもしれないのですが・・ Access2000で販売管理を作っています。請求書を発行する開始日付と終了日付を入力させる日付入力フォームがあります。この日付を元に売上TBから日付範囲内を抽出する選択クエリを作っています。(クエリの抽出条件にBetweenを使っています)。 そして請求書フォームでデータ表示させようと作っています。 これらを、日付入力フォームにあるコマンドボタンのクリックイベントで Docmd.OpenQuery "Q売上" ’日付範囲内の売上データ抽出クエリ Docmd.OpenForm "請求書" とすると請求書フォームにはデータが表示されるのですが、背面にQ売上の実行結果が表示されています。 この実行結果を表示させないようにはできないのでしょうか?(選択クエリとはOpen=実行でしょうか) ちなみに請求書フォームのレコードソースにQ売上を書こうとしましたが、抽出条件の日付が日付入力フォームなので記述方法がわかりません。 ややこしい質問で申し訳ございませんが宜しくお願い致します。
- ベストアンサー
- その他(データベース)
- アクセスVBAのSQLについて
(1)テキストファイルに記述したSQL文のセットをVBAで実行するコマンドはありますか? (2)テーブルを作成する際の、DB指定は 「create table "DB名"."テーブル名"…」としたらよいでしょうか (3)"DB名". を省略できるのはどのような場合ですか? (4)Docmd.RunSQL "" で一度に複数のSQL文を実行できますか? よろしくお願いします。m(_ _)m
- ベストアンサー
- その他(データベース)
- ACCESSフォームフィルタで抽出したデータのみをレポートで表示する方法
フォームフィルターでデータを抽出した後,抽出されたデータのみをレポート上に表示させるコマンドボタンをフォーム上に作っています。 下記のコードを作成しましたが,これだと抽出前の全部のデータが表示されてしまいます。 どうしたら良いでしょうか。 Private Sub ラベルプレビュー_Click() Dim stDocName As String DoCmd.Echo False, stDocName = "rpt宛名ラベル" DoCmd.OpenReport stDocName, acViewDesign DoCmd.SelectObject acReport, stDocName, False ' Reports(stDocName).RecordSource = Me.RecordSource DoCmd.OpenReport stDocName, acViewPreview End Sub
- ベストアンサー
- オフィス系ソフト
- access SQLの抽出結果をFilterできるか
access で、VBAにSQLを記述し、 その抽出結果を「Filter」でさらに抽出できるのでしょうか? いろいろ調べても、 Me.Filter = "xxxx=xxxx" と、オブジェクトが「Me」の例文しか見当たりません。 オブジェクトはどのように記述すればよいのでしょうか? よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- VBAのSQLについて
ACCESS2003のVBAでSQLを行うときは一度クエリを作り 、SQLビューで表示されるSQLを貼り付けると上手く行くと聞いたので試してみたのですがうまくいきません。多分、条件式の文が間違えていると思いますので、その部分を貼り付けて見ました。 「”」と「’」の使い方が原因だと思うのですが? "WHERE (((T不備対応.ふりがな) Like " * " & [Forms]![F不備一覧]![txt申込者名検索] & " * "));" DoCmd.RunSQL Sql お分かりになる方ぜひとも教えていただけないでしょうか?
- ベストアンサー
- オフィス系ソフト
- Access にて DISTINCROW を使用した INSERT SELECT
お世話様です。 Access2003 VBAにて、DoCmd.RunSQLを使用してSQL文を流す際、 普通のINSERT-SELECT文はOKですが、 そのSELECT文にDISTINCROW句を使用していると、 数百件程度のSELECT結果しかINSERTできません。 本当は数千件のSELECT結果をINSERTしたいのですが、 これを実行した場合、エラーにもならず、1レコードもINSERTされません。 ためしに、DINSTINCTROWではなく、SQL文を変更してDISTINCTにしてみたところ、 2000件以上でもINSERTできました。 DISTINCROW句を使用して数千件でもINSERTできる方法はあるでしょうか? ちなみにSELECT単体ですと、DISTINCTROWを使用していながら、 数千件でも結果を表示できます。 SQL例: str_SQL = " INSERT INTO 結果テーブル(フィールド1, フィールド2, フィールド3) SELECT DISTINCTROW A.項目1, A.項目2, B.項目1 FROM テーブル1 A, テーブル2 B (WHERE句はあってもなくても現象変わらず) ORDER BY A.項目4 ASC, A.項目5 ASC " DoCmd.RunSQL (str_SQL) よろしくお願いいたします。
- ベストアンサー
- その他(データベース)
- AccessでSQL結果を直接csvに書き出すには?
Access2003,WinXP お世話になります。 自作のSQLを書いて、結果をTransferTextで手軽にCSVにできないかと考えてこんなのを書いてました。 Dim strSql AS String Dim strPath AS String strSql = 自作SQL文 strPath = c:\test.csv Docmd.TransferText acExportDelim, , strSql, strPath, True しかし、TransferTextでは「テーブル」か「クエリ」名を直接書くように指示してあり、これだと動かない?んでしょうか。 SQLは300個くらい出力する必要があるため(クエリ300個作れば解決するのですが・・・)上のようなコードをループして動かしたいのですが、何か他の簡単な出力方法があるのでしょうか。 よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- ACCESSのSQLです。
お世話になります。 ACCESS210で 勘定科目、仕訳帳、予実集計の3個のテーブルで 仕訳帳を月ー科目ID毎に集計して予実集計に反映するのに DoCmd.RunSQL ("Delete From 予実集計;") DoCmd.RunSQL ("Insert Into 予実集計(月度,科目ID,当年実績)" _ & "Select [仕訳日]-Day([仕訳日])+1 as 月初,科目ID, " _ & " sum(IIf([貸借区分] = ""借方"",[借方]-[貸方],[貸方]-[借方] as 収支) _ & " FROM 勘定科目 INNER JOIN 仕訳帳 ON ID = 仕訳帳.科目ID" _ & " WHERE 繰越FG)=False group BY [仕訳日] - Day([仕訳日]) + 1 as 月初,科目ID; ") とすると 実行時エラー "3075" 構文エラー演算子がありませんとなります。 因みに、下記の仕訳帳クエリ(下方に記述)を用いて DoCmd.RunSQL ("Delete From 予実集計;") DoCmd.RunSQL ("Insert Into 予実集計(月度,科目ID,当年実績) _ & " Select 月初,科目ID,sum(金額) From 仕訳帳クエリ _ & " WHERE 繰越FG = False group by 月初,科目ID; ") とするとエラーなく終了するのですが、出来ればクエリーを乱用したくないのです。 ・勘定科目 ID(主キー) 勘定科目名 勘定CD 科目群ID 貸借区分(借方、貸方) 繰越FG ・仕訳帳(主キーなし) 伝票No. 仕訳日 摘要 科目ID(勘定科目.IDにリレーション) 借方 貸方 ・予実集計 月度 (主キー 仕訳日の月初=仕訳日-DAY(仕訳日)+1) 科目ID(主キー) 当年予算 当年実績 前年予算 前年実績 ・仕訳帳クエリ勘定科目.IDー仕訳帳.科目ID 伝票No. 仕訳日 摘要 科目ID 借方 貸方 月初:仕訳日-DAY(仕訳日)+1 金額:iff(貸借区分="借方",借方-貸方,貸方-借方) 長文になりましたが、宜しくお願いします。
- ベストアンサー
- オフィス系ソフト