Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


449 / 500 ページ ←次へ | 前へ→

【4186】Re:テーブル作成クエリで作った新しい列に...
発言  かろちん  - 05/1/16(日) 17:21 -

引用なし
パスワード
   にしもり さん こんにちは

>実力不足を痛感しましたがお蔭様で日曜に仕事をしたかいがありました。

これまで、私がレスした内容は理解して頂いていますでしょうか?
今後同じような内容の処理があった場合でもお一人で対処できる
ところまで、文献やHELP等で理解してください。

クエリー08のパラメータの件ですが、申し訳ございませんが
回答ができません。
なぜなら、クエリー08の中身を私が知らないからです。
SQLの構文について勉強をしていただければ私が回答せずとも
解決できると思います。

ポイント:式1
ヒント :式1のところを変更すればよいだけ

です。がんばってください。
・ツリー全体表示

【4185】Re:テーブル作成クエリで作った新しい列に...
質問  にしもり  - 05/1/16(日) 17:10 -

引用なし
パスワード
   ▼かろちん さん:
ありがとうございました。できました。
実力不足を痛感しましたがお蔭様で日曜に仕事をしたかいがありました。

もうひとつ質問なのですがクエリ08で新しい列を設けるとき、パラメーターを聞いてきてしまいます。UPDATE文で'1月’と入れる訳ですからこの段階でパラメーターを聞かれてもブランクで返すのみです。あえてパラメーターを聞いてこないようにする方法はありますでしょうか?
・ツリー全体表示

【4184】Re:2つのテーブルを1つのtxtにエクス...
回答  Gin_II  - 05/1/16(日) 14:41 -

引用なし
パスワード
   >ヘッダー・フッターは共に1行(レコード)です。ボディには1行以上の
>データが含まれます。また、ヘッダー・フッターとボディのフィールド数が
>一致する事はありません。

(1) UNION クエリを使う

SELECT ヘッダーa & "," & ヘッダーb AS F1 FROM ヘッダーテーブル
UNION ALL
SELECT ボディa & "," & ボディb & "," & ボディc & "," & ボディd FROM ボディテーブル
UNION ALL
SELECT フッターa & "," & フッターb & "," & フッターc FROM フッターテーブル


(2) それぞれ別々に出力し、DOSのCOPYを使ってまとめる

  Shell "Cmd.exe /C COPY " _
    & "d:\ヘッダー.txt + d:\ボディ.txt + d:\フッター.txt d:\結果.txt"
・ツリー全体表示

【4183】Re:テーブル作成クエリで作った新しい列に...
回答  かろちん  - 05/1/16(日) 14:05 -

引用なし
パスワード
   ▼にしもり さん こんにちは

>UPDATE文とはこのような形でよいのでしょうか?

 UPDATE文とはSQL文のことです。
 今は、INSERT文にてレコードを挿入しようとしていますが、
 Happyoテーブルのものを新規テーブル作成時に既に新規テーブル
 に入れられているなら

>  strSQL = ""
>  strSQL = strSQL & "INSERT INTO 発表会回数"
>  strSQL = strSQL & " (式1)"
>  strSQL = strSQL & " VALUES"
>  strSQL = strSQL & " ('1月')"

 上記の文がUPDATE文に変更する必要があります。
  strSQL = ""
  strSQL = strSQL & "UPDATE 発表会回数"
  strSQL = strSQL & " SET 式1 = '1月'"


>  strSQL.Update
 上記の部分は元に戻してください。

  DoCmd.RunSql strSQL


今気が付いたのですが、SQL構文の中(strSQL)に設定する
空白は、半角の空白を使用してください。
構文エラーが出るかもしれません。
・ツリー全体表示

【4182】Re:テーブル作成クエリで作った新しい列に...
質問  にしもり  - 05/1/16(日) 13:48 -

引用なし
パスワード
   ▼かろちん さん:
早速のレスありがとうございます。

>Dim strSQL  As String
こういうことに気づかない所が素人で、お恥ずかしいです。

>また、気になるのが、新しいテーブルの申請者フィールド
>ですが、何時の段階で値を入れるのですか?
ご指摘のとおり申請者フィールドは元々Happyoに入っていて、式1フィールドにのみ'1月’と入れたいのです。UPDATE文とはこのような形でよいのでしょうか?

Option Compare Database
Option Explicit

Function test()
Dim strSQL  As String
On Error GoTo test_Err
 DoCmd.SetWarnings False

  DoCmd.OpenQuery "クエリー08", acNormal, acEdit
  strSQL = ""
  strSQL = strSQL & "INSERT INTO 発表会回数"
  strSQL = strSQL & " (式1)"
  strSQL = strSQL & " VALUES"
  strSQL = strSQL & " ('1月')"
  strSQL.Update

 DoCmd.SetWarnings True

test_Exit:
 Exit Function
test_Err:
 MsgBox Error$
 Resume test_Exit

End Function
・ツリー全体表示

【4181】Re:テーブル作成クエリで作った新しい列に...
回答  かろちん  - 05/1/16(日) 13:01 -

引用なし
パスワード
   にしもり さん こんにちは
>が、コンパイルエラーになって、できません。

strSQLは文字型変数の宣言をしないといけません。

> Function test()
           ←このあたりに宣言する
> On Error GoTo test_Err
> DoCmd.SetWarnings False
  〜 以下省略 〜


Function test()
Dim strSQL  As String
On Error GoTo test_Err
DoCmd.SetWarnings False
  〜 以下省略 〜

としてみてください、コンパイルエラーはなくなります。
また、気になるのが、新しいテーブルの申請者フィールド
ですが、何時の段階で値を入れるのですか?
テーブル作成時に申請者フィールドには値が入っているのかな
既にテーブルに値が入っていて、式1フィールドに"1月"と
入れたいなら、UPDATE文になります。
・ツリー全体表示

【4180】Re:テーブル作成クエリで作った新しい列に...
質問  にしもり  - 05/1/16(日) 12:38 -

引用なし
パスワード
   ▼かろちん さん:
レスありがとうございます。
やりたいことはこうです。
1.元々Happyoというテーブルがあり、「申請者」というフィールドのみがあります。
2.テーブル作成クエリーである「クエリー08」で、「発表会回数」という名の新たなテーブルを作ります。その際、フィールド「申請者」と、「申請者」の右隣にフィールド「式1」を設けます。
3.その直後に「発表会回数」の「式1」に無条件に‘1月‘というCHARを入れたいのです。
アドバイスにしたがいモジュールを作成しました。(以下参照してください。)

Option Compare Database
Option Explicit

Function test()
On Error GoTo test_Err
 DoCmd.SetWarnings False

  DoCmd.OpenQuery "クエリー08", acNormal, acEdit
  strSQL = ""
  strSQL = strSQL & "INSERT INTO 発表会回数"
  strSQL = strSQL & " (式1)"
  strSQL = strSQL & " VALUES"
  strSQL = strSQL & " ('1月')"
  DoCmd.RunSQL strSQL

 DoCmd.SetWarnings True

test_Exit:
 Exit Function
test_Err:
 MsgBox Error$
 Resume test_Exit

End Function

が、コンパイルエラーになって、できません。正直、市販本の必要なところをつぎはぎしてやっている程度の実力なので、基本がわかっていません。どこが悪いかどうかご教授ください。
・ツリー全体表示

【4179】Re:2つのテーブルを1つのtxtにエクス...
質問  なっちん  - 05/1/16(日) 10:07 -

引用なし
パスワード
   >Gin_II さん
返信ありがとうございます。
お言葉に甘えてレイアウト例を挙げさせて頂きます。
ヘッダー・フッターは共に1行(レコード)です。ボディには1行以上のデータが含まれます。また、ヘッダー・フッターとボディのフィールド数が一致する事はありません。

・ヘッダーテーブル
ヘッダーa ヘッダーb
----------------------
Header1  Header2

・ボディテーブル
ボディa ボディb ボディc ボディd
---------------------------------
body1  body2  body3  body4
body5  body6  body7  body8
body9  body10 body11 body12

・フッターテーブル
フッターa フッターb フッターc
---------------------------------
Footer1 Footer2  Footer3

以上が、テーブルレイアウト例です。
以下は、希望する出力ホームです。

Header1,Header2
body1,body2,body3,body4
body5,body6,body7,body8
body9,body10,body11,body12
Footer1,Footer2,Footer3

以上が、希望する出力ホームです。
重ね重ね質問をして申し訳ありません。
よろしくお願い致します。
・ツリー全体表示

【4178】Re:連番かな?
お礼  のりかわ  - 05/1/16(日) 9:09 -

引用なし
パスワード
   かろちん さん
 レス有り難う御座いました!

 教えて頂いた通りにやったんですが、チョコチョコと
 エラーが出てしまい(たぶんアプリの誤作動)完成が
 今になってしまいました。
 かなりのデータを入力したんですが、正常に計算してます
 本当に有り難う御座いました。

 又お手数をお掛けしますが、よろしくお願いします。
・ツリー全体表示

【4177】Re:2つのテーブルを1つのtxtにエクス...
回答  Gin_II  - 05/1/16(日) 3:59 -

引用なし
パスワード
   >私が希望している出力フォームは、ヘッダー・フッターとボディのフィールド数が異なる形式です。
>a,a,a     ←ヘッダー
>a,a,a,a,a,a  ←ボディ
>a,a,a,a,a,a  ←ボディ
>a,a,a,a,a,a  ←ボディ
>a,a,a     ←フッター
>
>希望している形式で出力する方法をご存知の方は、ご教授願います。

各テーブル?(ヘッダー・ボディ・フッター)のレイアウト例があれば、
具体的に回答できますけど (^^ゞ
・ツリー全体表示

【4176】Re:2つのテーブルを1つのtxtにエクス...
質問  なっちん  - 05/1/16(日) 2:53 -

引用なし
パスワード
   フィールド数の異なるテーブル同士でUNIONクエリを組むことができ、無事にエクスポートできました。しかし、私が予想していた出力フォームとは、少し異なる形式でエクスポートされてしまいました。

ユニオンクエリを使用してエクスポートを行うと、ヘッダー・フッター・ボディ共に同数のフィールド数で出力されてしまいます。下記が出力されたcsvファイルの形式です。

a,a,a,0,0,0  ←ヘッダー
a,a,a,a,a,a  ←ボディ
a,a,a,a,a,a  ←ボディ
a,a,a,a,a,a  ←ボディ
a,a,a,0,0,0  ←フッター


私が希望している出力フォームは、ヘッダー・フッターとボディのフィールド数が異なる形式です。
a,a,a     ←ヘッダー
a,a,a,a,a,a  ←ボディ
a,a,a,a,a,a  ←ボディ
a,a,a,a,a,a  ←ボディ
a,a,a     ←フッター

希望している形式で出力する方法をご存知の方は、ご教授願います。
よろしくお願い致します。
・ツリー全体表示

【4175】Re:テーブル作成クエリで作った新しい列に...
回答  かろちん  - 05/1/15(土) 23:39 -

引用なし
パスワード
   にしもり さん こんばんは

どのようなテーブルを作成されるクエリーなのか
列名(フィールド名)が何なのか良く分かりません
ので、この回答でよいのかどうかも不明ですが
レスが無いようですので記述しておきます。

※あるテーブル(テーブル1)の、ある列名(列名1)
 に値を入れる場合
 strSQL = ""
 strSQL = strSQL & "INSERT INTO テーブル名1"
 strSQL = strSQL & " (列名1)"
 strSQL = strSQL & " VALUES"
 strSQL = strSQL & " ('1月')"
 DoCmd.RunSql strSQL

意図する回答と異なっていたらすいません。

テーブル作成クエリーの中身と
> Cmd.Parameters("[式1]") = "1月"
の関連性が見えませんので、レスが付きにくい
とおもいます。
・ツリー全体表示

【4174】Re:連番かな?
回答  かろちん  - 05/1/15(土) 21:14 -

引用なし
パスワード
   のりかわ さん こんばんは

実現するには(一つの方法ですが)
1.集計クエリーを作成する。
  ID      最大
  日付     グループ
  売上     合計
  収入金額   合計
  支出金額   合計
  売上有無   グループ
  収入金額有無 グループ
  支出金額有無 グループ

 ※売上有無、収入金額有無、支出金額有無は
  IIfなどを使い値があるかどうかを判定
  IIf(Nz(売上,0)=0,0,1)

2.上記の集計クエリーを使用し差引残高計算の
 クエリーを作成する。
 日付、IDで並び替え。


上記の方法で、各集計結果に集計毎のIDの最大
がセットされますので、結果がでるのではない
でしょうか?

ただし、同一日付内で収入と支出が入り組んで
いる場合、残高が思うように表示できない場合
があります。

ID 日付 売上 収入金額 支払金額
1  1/2 2000
2  1/2     300
3  1/2           200
2  1/2     100
3  1/2           100
11 1/3 1200   
12 1/3 100   
15 1/3     500

上記場合、DSumを複数用意する必要があるかも
しれません。
・ツリー全体表示

【4173】連番かな?
質問  のりかわ  - 05/1/15(土) 14:05 -

引用なし
パスワード
    度々お世話になります。だんだんプログラムが複雑になってしまい困ってます
どうかご教授お願いします。

下記のような、「現金出納帳クエリー」あり、現段階で一つ前の[計算式」の差額を、[差引金額]に求めるのは

[差引金額]: Sum(DSum("nz([売上],0)+nz([収入金額],0)-nz([支出金額],0)","現金出納帳","Format(日付,'yyyy/mm/dd') & format(ID,'00')<='" & (Format([日付],'yyyy/mm/dd') & Format([ID],'00')) & "'"))

で、下記のような結果になるんですが

 ID 日付 売上 収入金額 支出金額 差引金額 計算式

 4  1/2 500             500    500
 6  1/2 100             600    100
 10  1/2          300    300   -300
 11  1/3 1200            1500   1200
 12  1/3 100            1600    100
 15  1/3      500       2100    500

 最終的に求めたいのは、[日付]で「グループ」化して、[売上]を「合計」にした
「集合クエリ」をした時点で、[ID」が使えなくなります。

  日付 売上 収入金額 支出金額 差引金額 

   1/2 600             600   
   1/2          300   300
   1/3 1300           1600                 
   1/3      500       2100   

上記のようにしたいのです(データは日々更新されます)
 「連番」作成だろうが何だろうが構いませんので、ともかく[ID]に変わるを作成して、上記のように出来たら有り難いです。
何卒、よろしくお願いします!!
・ツリー全体表示

【4172】Re:2つのテーブルを1つのtxtにエクス...
発言  なっちん  - 05/1/15(土) 3:47 -

引用なし
パスワード
   ▼Gin_II さん:
>URLを参照する形で、新規投稿の方がいいですね (^^ゞ

申し訳ありません。
URL参照の方法が思いつきませんでした。
今後はURL参照の方法で投稿します。

>UNION クエリでできますよ。
>銀行振込FDとかですかね?
>
>まず、それぞれ(ヘッダー・ボディ・フッター)を1フィールドになるようにクエリを作成します。
>
>SELECT Format([FLD1],"00000") & Left([FLD2] & Space(10),10) AS FLD
>FROM TBL
>
>のように。
>それをユニオンクエリでつないでやればいいと思います。

銀行振込FDではありません。銀行振込FD自体よくわからないです(汗)

フィールド数の異なるテーブル同士でもUNIONクエリを組むことができるんですね。知りませんでした。上記の「SELECT文」を参考にUNIONクエリを作成してみます。

回答ありがとうございました。
頑張って解決させたいと思います。
・ツリー全体表示

【4171】Re:2つのテーブルを1つのtxtにエクス...
回答  Gin_II  - 05/1/15(土) 2:32 -

引用なし
パスワード
   >過去の投稿を掘り起こして申し訳ありません。

URLを参照する形で、新規投稿の方がいいですね (^^ゞ


>私もAccess2000にて「ヘッダー部分テーブル・ボディ部分テーブル・フッター部分
>テーブルを一つにまとめて、CSVファイルでの出力」を試みていますが、上手くいきません。

UNION クエリでできますよ。
銀行振込FDとかですかね?

まず、それぞれ(ヘッダー・ボディ・フッター)を1フィールドになるようにクエリを
作成します。

SELECT Format([FLD1],"00000") & Left([FLD2] & Space(10),10) AS FLD
FROM TBL

のように。
それをユニオンクエリでつないでやればいいと思います。
・ツリー全体表示

【4170】Re:2つのテーブルを1つのtxtにエクス...
質問  なっちん  - 05/1/15(土) 2:11 -

引用なし
パスワード
   ▼ブタゴリラ さん:
>すみません。なんとか自分でできました。とりあえずは応急処置で
>すが、コマンドプロンプトでFTPコマンドを実行させるように
>させました。

過去の投稿を掘り起こして申し訳ありません。

私もAccess2000にて「ヘッダー部分テーブル・ボディ部分テーブル・フッター部分テーブルを一つにまとめて、CSVファイルでの出力」を試みていますが、上手くいきません。

どなたか、良い方法をご存知の方はいらっしゃいませんでしょうか?
または、ブタゴリラさんの「コマンドプロンプトでFTPコマンドを実行させる方法」をもう少し詳しくご教授願います。

よろしくお願い致します。
・ツリー全体表示

【4169】Re:2項目で並べ替え!!
お礼  のりかわ  - 05/1/14(金) 22:01 -

引用なし
パスワード
    Gin_II さん

  ご教授有り難う御座いました!!
  ちゃんと昇順になってます。
  かなりの量で、テストしたので
  大丈夫だと思います。
  本当に有り難う御座いました。
・ツリー全体表示

【4168】テーブル作成クエリで作った新しい列にCH...
質問  にしもり  - 05/1/14(金) 19:44 -

引用なし
パスワード
   クエリー08という名のテーブル作成クエリがあります。
空白の1列を作り、そこに「1月」と入れたいと思っています。 
標準モジュールで

DoCmd.OpenQuery "クエリー08", acNormal, acEdit
Cmd.Parameters("[式1]") = "1月"

と書いたのですが、「コンパイルエラー 変数が定義されていません」と出ます。
どこが悪いのでしょうか?
・ツリー全体表示

【4167】Re:2項目で並べ替え!!
回答  Gin_II  - 05/1/14(金) 18:24 -

引用なし
パスワード
   >下記のようなクエリーがあるんですが、[ID]と[日付]の2項目で並べ替えをしたいんです(2つとも昇順)

日付の昇順で、なおかつ ID の昇順ということでいいのでしょうか?

フィールド|ID |日付 |売上 |〜略〜|ID
 並べ替え|   |昇順 |   |   |昇順
   表示| ■ | ■ | ■ |   | □

のようにすれば大丈夫だと思います。
・ツリー全体表示

449 / 500 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:
1084754
(SS)C-BOARD v3.8 is Free