• ベストアンサー

Access openargs について

 フォームAからフォームBを開くときに、openargsで文字列を渡すことができますが、その時、文字列を2つ以上扱うことはできますか?  フォームA、フォームB共に入力作業フォームで、作業時間短縮の為に同じ入力項目は渡してしまいたいのです。(例えば日付と担当者名、など)  また、  Dim 文字列(0,0) As String  というように、2次元以上を宣言できると手持ちの本に書いてあるのですが、これを利用する事はできるのでしょうか?(利用の仕方は、本には書いてはありませんでした。)

質問者が選んだベストアンサー

  • ベストアンサー
  • AlexSuns
  • ベストアンサー率67% (78/115)
回答No.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

PearlJam69
質問者

お礼

後半の”Dim 文字列(0,0) As String”については、 私の中途半端な知識では理解できませんでした。折角ご回答いただいたのですが、私には役立てられそうもありません…。 前半の、Split関数については、利用させて頂きます。 どうもありがとうございました。

関連するQ&A