- ベストアンサー
Access openargs について
フォームAからフォームBを開くときに、openargsで文字列を渡すことができますが、その時、文字列を2つ以上扱うことはできますか? フォームA、フォームB共に入力作業フォームで、作業時間短縮の為に同じ入力項目は渡してしまいたいのです。(例えば日付と担当者名、など) また、 Dim 文字列(0,0) As String というように、2次元以上を宣言できると手持ちの本に書いてあるのですが、これを利用する事はできるのでしょうか?(利用の仕方は、本には書いてはありませんでした。)
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>openargsで文字列を渡すことができますが、その時、文字列を2つ以上扱うことはできますか? できますよ Access2000以降であれば、Split関数を使用するのが簡単かと思われます [例] 複数の値を渡す 呼び出し側:フォームA Dim strFormName As String Dim strValues As String strFormName = "フォームB" strValues = "ほげ" & "," & "ほげ" DoCmd.OpenForm strFormName, acNormal, , , , , strValues 受け取り側:フォームB If Nz(Me.OpenArgs) <> "" Then Dim valueArray As Variant Dim strValue As String Dim i As Integer valueArray = Split(Me.OpenArgs, ",") For i = 0 To UBound(valueArray) MsgBox valueArray(i) Next End If >また、 > Dim 文字列(0,0) As String > というように、2次元以上を宣言できると手持ちの本に書いてあるのですが、これを利用する事はできるのでしょうか?>(利用の仕方は、本には書いてはありませんでした。) 微妙な書き方ですねw 利用することはできるといえば、できます ただし、OpenArgsプロパティは文字列型なので、それなりの加工をして渡さなければなりません ですが項目とかが決まっているのであれば、プロパティを実装して使用するのがスマートになるでしょう 例えば、 ・フォームAからフォームBに値を設定したい場合は、 フォームBに「Property Let」を実装する ・フォームAからフォームBの値を取得したい場合は、 フォームBに「Property Get」を実装する ※アクセスの場合だとモードレスフォームでしか、フォームプロパティは使用できないでしょう ※モーダル(ダイアログ)フォームだと開いているフォーム以外は処理がとまってしまうので利用不可です ※なんでアクセスはフォーム表示メソッド(Show)が無いんだorz
お礼
後半の”Dim 文字列(0,0) As String”については、 私の中途半端な知識では理解できませんでした。折角ご回答いただいたのですが、私には役立てられそうもありません…。 前半の、Split関数については、利用させて頂きます。 どうもありがとうございました。