前にAccessの Dsum 関数について書いた。
それと同類の、Dfirst 関数を今回使った。
Dfirst はレコードセットの最初のレコードの値を取る、というもの。
基本的な記述方法は Dsum も Dfirst も同じ。
関数名("項目名", "テーブル名 or クエリー名", "条件式")
※条件式は省略可
で、今回なんでわざわざ書いたか?というと、前回 Dsum では使用しなかった条件式を与えたから。これはちょっとメモっておきたかったので。
今回 Dfirst をこういう風につかった。
フォームのテキストボックスオブジェクトのコントロールソースに以下を既定
=DFirst("顧客CD","M_顧客マスタ","受注先CD= [p_jyutyusaki_cd] ")
内容としては、同一フォームにある「p_jyutyusaki_cd」というオブジェクトの値を”受注先CD”という、"M_顧客マスタ"テーブルのフィールドのセレクト条件にして、これまた同テーブルに既定されている”顧客CD”の最初の値を返す。
言ってしまえばこれだけなのだが、この『テキストボックスオブジェクトのコントロールソース』として書く際のパラメータ指定の書き方がMSのリファレンスにもあんまり書いてない。
結論から言えば、"受注先CD= [p_jyutyusaki_cd] "という標記になるのだが、最初はVBAでSQL文字列を書くようにテキストの変数をシングルクォートとアンパサントで囲うのか?とかいろいろ書いてみたのだが、通らない。関数の実行結果がエラーになるんだよね。
で、幾度か書き方を変えて試してたどり着いたのが"受注先CD= [p_jyutyusaki_cd] "という書き方でやっとエラーなく通った。
ただし、ここで書いている方法はあくまで、”オブジェクトのコントロールソース”として書くときに、同一フォーム上のオブジェクト値をパラメータにする、という限定された条件である事は改めて記しておく。
これをVBAで書くときなどは多分別の書き方になるはずだ。
それと同類の、Dfirst 関数を今回使った。
Dfirst はレコードセットの最初のレコードの値を取る、というもの。
基本的な記述方法は Dsum も Dfirst も同じ。
関数名("項目名", "テーブル名 or クエリー名", "条件式")
※条件式は省略可
で、今回なんでわざわざ書いたか?というと、前回 Dsum では使用しなかった条件式を与えたから。これはちょっとメモっておきたかったので。
今回 Dfirst をこういう風につかった。
フォームのテキストボックスオブジェクトのコントロールソースに以下を既定
=DFirst("顧客CD","M_顧客マスタ","受注先CD= [p_jyutyusaki_cd] ")
内容としては、同一フォームにある「p_jyutyusaki_cd」というオブジェクトの値を”受注先CD”という、"M_顧客マスタ"テーブルのフィールドのセレクト条件にして、これまた同テーブルに既定されている”顧客CD”の最初の値を返す。
言ってしまえばこれだけなのだが、この『テキストボックスオブジェクトのコントロールソース』として書く際のパラメータ指定の書き方がMSのリファレンスにもあんまり書いてない。
結論から言えば、"受注先CD= [p_jyutyusaki_cd] "という標記になるのだが、最初はVBAでSQL文字列を書くようにテキストの変数をシングルクォートとアンパサントで囲うのか?とかいろいろ書いてみたのだが、通らない。関数の実行結果がエラーになるんだよね。
で、幾度か書き方を変えて試してたどり着いたのが"受注先CD= [p_jyutyusaki_cd] "という書き方でやっとエラーなく通った。
ただし、ここで書いている方法はあくまで、”オブジェクトのコントロールソース”として書くときに、同一フォーム上のオブジェクト値をパラメータにする、という限定された条件である事は改めて記しておく。
これをVBAで書くときなどは多分別の書き方になるはずだ。
コメント
コメントを投稿