人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

特に配列も作られていない?空の引数を持つ変数が、UBound・Lbound関数で値を取得できるのかという疑問と、VBAで文末が","で終わる文が問題ないかにつきまして

今、以下のようなACCESS VBAコードがあります。
https://gist.github.com/AuroraNorthernQuarter/3061e780edb2382b12c6f5f5498a763f
テーブルは「資金情報」「売上情報」という2つのテーブルがありまして、大まかにテーブルからデータを引っ張って何かしたいのかな?ということぐらいしか判らず…悩んでおります。

疑問は4つほどあります。

(1)「for cntn = lbound(sum_m) to ubound(sum_m)」という箇所につきまして。lbound関数とubound関数、for文のループで、配列の値を取得しているのだと思いますが。
肝心の配列はどこにあるのかと思いまして。
「sum_m」という変数を追うと、今回のVBAが登場する「setkasusql」関数とは別の関数とか箇所で、宣言されたりredim関数を適用されたり値を代入されているようですが。

●質問者: moon-fondu
●カテゴリ:コンピュータ 学習・教育
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

質問者から

そもそもsum_mは配列なのかという疑問もありまして。
配列でしたらArray関数を用いて「sum_m = array("A","B"."C")」のように、どこかで要素を定義している箇所があると思うのですが、探しても見当たらないのです。

また「sum_m」にlbound、ubound関数を適用した後に。
次の行「i_tSql = i_tSql & sum_m(cntn) & ","」と、新たにcntnという引数が設定されて、関数のように使われている?…こういった書き方は、vbaであり得るのでしょうか。

何を行っているのか、sum_m(cntn)は何を求めようとしているのか、全体的によくわからない状況です…。

(2)tSqlに格納されていくSQL文は、「資金情報」テーブルや「売上情報」テーブルからデータを取得するために、必要かと思うのですが。
そのSQL文の終わりに「set aquarium = dbinfo.openrecordset(tSql,dbopendynaset)」という箇所が2箇所ほど、あるかと思います。
これらは「select文で抽出したレコードを、openrecordsetメソッドで新たなレコードの集合体(レコードセット)として作成している」という認識で正しいでしょうか?

ただ、引数が「(tSql,dbopendynaset)」となっている部分が疑問です。

http://www7b.biglobe.ne.jp/~cbcnet/DAO/database.html

によりますと、dbopendynasetの方は、optionの引数なのでわかります。
しかしtSqlの方は、「引数 type には次の定数から 1 つを使用します。」というルールとは異なる変数だと思うのですが…。

(3)VBAのコード内にやたらと「i_tSql = i_tSql & minimumdate & ","」のように、文末が","で終わっている文が多いですが。
これはVBAの文法として?正しいのか疑問でして…文末を","にしている理由について、自分はコードを読んでも判らないのですが、何をしているのでしょうか。
「i_tSql = i_tSql & "'" & trim(aquarium.fields(0).value) & "',"」のように、アポストロフィで囲んで、カンマで終わらせている部分も、目的がよくわからない状況です。

「資金情報」「売上情報」という2つのテーブルの情報が不十分で、たくさんの疑問で恐れ入りますが、ご助言いただけますと助かります。

よろしくお願い致します。


1 ● gizmo5
●1000ポイント ベストアンサー

(1) は Redim で配列のサイズを指定していますね。この変数は配列です。

(2) は、dbopendynaset にどんな値が設定されているかが分かりませんが、その書き方で合っています。
どこぞの誰かが書いたページよりも、公式のドキュメントを参照しましょう。
https://docs.microsoft.com/ja-jp/office/client-developer/access/desktop-database-reference/database-openrecordset-method-dao

(3) は、提示のソースだと全貌がよく分かりませんが、何かの情報をカンマ区切りで結合したものを取得したいのだと思われます。
カンマ区切りという意味では末尾に余計なカンマが付きそうに思いますが。


moon-fonduさんのコメント
gizmo5さんありがとうございます、redim文、意識していなかったです。 調べましたら、redim文を使って何回でも大きさを変えられるみたいですね。 宣言する時に使うdim文はよく見ますが。 「宣言にはdim文を、初期化にはredim文を使う」と本にありました。

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ