ここから本文です

お世話になります。 Access VBAについての質問です。 こちら急遽VBAを使用した仕...

アバター

ID非公開さん

2018/8/1007:24:52

お世話になります。
Access VBAについての質問です。
こちら急遽VBAを使用した仕事を始める事になり、下の流れの意味が知りたく参りました。

Private Fanction SetKData As Boolean
SetK

Data = False

with ors
If nz2(.Fields(“A” & intK_count & “B”), ““) = “” “” Then
Fields(“A” & intK_count & “B”) =CLng(rs.Fields(“C”)) + 298

End if

.
.
(同じような形の式が続いている為省略)
.
.


抜粋になりますが、上記はどんな処理を行っているのかを知りたく...。
VBA初心者の為見当違いな事を言っていたら申し訳ありません...。

AとintK_countとB(ABCは今回仮の名前をつけております)はデータベースにあるオブジェクトの事ですよね?テーブルのフィールドかと思いきや、探しても見つからず...
この3つが空白だったら以下の処理を実行(?)...

A、intK_count、BがC+298になるようにする...?

処理なのにイコールで結ばれている意味が理解できず...一体何を行っているのか...

どなたか助けていただきたく...よろしくお願いします。

閲覧数:
64
回答数:
4
お礼:
250枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

nor********さん

2018/8/1008:21:06

> Private Fanction SetKData As Boolean
> SetKData = False
>
> with ors
> If nz2(.Fields(“A” & intK_count & “B”), ““) = “” “” Then
> Fields(“A” & intK_count & “B”) =CLng(rs.Fields(“C”)) + 298
>
> End if

ですかね。
> SetKData = False
は返り値がBoolean型の関数SetKDataの返り値の初期値をFalseにしてます。
その後の処理によってはTrueにして返すということだと想像できます。

> with ors
> If nz2(.Fields(“A” & intK_count & “B”), ““) = “” “” Then

If nz2(ors.Fields(“A” & intK_count & “B”), ““) = “” “” Then

同じ意味ですが正直何をしているのか
orsがRecordsetだとしても、この関数内ではどこにも出てきていません。
グローバル変数?

ここだけでは想像するしかないですね。
「intK_count」も同様です。データ型が分かりませんし、中身がどうなっているのか皆目。
VBAにnz2という関数があるか聞いたことはありません。

「“” “”」の「“”」はUNICODEの文字ですがなぜこれが使われているのかもさっぱり。

> Fields(“A” & intK_count & “B”) =CLng(rs.Fields(“C”)) + 298

Fieldsがオブジェクト変数の指定なしに使われているので、たぶん文法エラーになります。

> AとintK_countとB(ABCは今回仮の名前をつけております)はデータベースにあるオブジェクトの事ですよね?

おそらく違うのでは。グローバル変数かもしれませんが、ここだけからだと何なのかは分かりません。
関数内で定義されていないので。

> 処理なのにイコールで結ばれている意味が理解できず...

イコールの右側の値を左側の変数なりに代入しているんだろうなあと。

> 一体何を行っているのか...

まったく分かりません。

だいたい関数なのに引数がないとか意味が分からない。

こういう書き方はやめるべきという見本のように見えますが。

この質問は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜3件/3件中

並び替え:回答日時の
新しい順
|古い順

dis********さん

2018/8/1100:05:33

最初に全体的にやってる事を日本語で書くと、

orsレコードの
A1Bフィールド~A999Bフィールドが、

空白だったら、

rsレコードのCフィールドの値に、298を加算する。

ですね。

まあ、実務を想定すると、

orsレコードとrsレコードが何らかの対応関係にあって、
orsのA1Bフィールド~A999Bフィールドにrsの値を変動する意味があるのでしょう。

orsレコードのフィールドは、何か運用上で項目が追加されて行くんだと思います。

A1Bとは、
.Fields(“A” & intK_count & “B”)
の事です。
with ○○と end withで囲むと、
その間の ○○を記載を省略できます。

なので、
.Fields(“A” & intK_count & “B”)は、
ors.Fields(“A” & intK_count & “B”)
です。


んーーーーー。

これ、たぶん、orsが定規だな。

例えば、orsに商品名みたいに、なんか入ってて、
10個の商品買ったとして、
A1Bから順番に商品名が入るプログラムが事前にあって、

その後に、ここでいくつ商品名があるか順番に見て、
A11Bが空白なら、その分を加算する。
例えば、rsのCフィールドが合計金額や例えば買った時の付与ポイント(買った金額の10%とか)が入ってたとして、商品数に応じてポイントを加算するとかかな。

Exit subとかないから、このプログラムは、意味が逆(orsの項目数が多いほど、加算される)なんだろうけどね。

んー。クイズの得点で、

orsテーブルには、与えられたヒントが少ないほど、rsに得点が加算されるとかかな。

あとは、A1Bと対応する部品があって、
A1Bが入ってない時は298ミリを全長に加算するとかかな。

同じ長物から、削ってない部分を加算した重量とか、、、

参考までに。

tad********さん

編集あり2018/8/1009:43:41

orsと言うレコードセットのA1Bフィールドの値をnz2した戻り値が"'の場合、A1BにrsというレコードセットのCと言うフィールドの値に298を足して入れる、という意味です。
(intK_countが1として)

nz2って関数があるのでしょうか。

= は右から左に入力すると言う意味でも使われます。

a = 5
とすると、
a の値が5になります。

プロフィール画像

カテゴリマスター

ony********さん

2018/8/1009:09:42

>If nz2(.Fields(“A” & intK_count & “B”), ““) = “”“” Then

そのフィールドの値が何も入っていないように見えるけれども、
Nullか""(長さ0の文字列)のどちらが格納されているかわからないときに、
どちらも””に変換してから判断することで条件文を簡略化できる効果があります。


>If nz2(.Fields(“A” & intK_count & “B”), ““) = “”“” Then
>Fields(“A” & intK_count & “B”) =CLng(rs.Fields(“C”)) + 298

意味としては、intK_countが1という値であれば、
orsレコードセット上のフィールド名「A1B」の値がカラの時、
別のrsレコードセット上のフィールド名「C」の値に298を足したものを
「A1B」に代入する。

という意味になります。


orsレコードセットのもとになるテーブルには、

A1B
A2B
A3B
:

のような連続した番号ついたフィールドが存在すると推測できます。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる