dポイントプレゼントキャンペーン実施中!

 フォームAからフォームBを開くときに、openargsで文字列を渡すことができますが、その時、文字列を2つ以上扱うことはできますか?

 フォームA、フォームB共に入力作業フォームで、作業時間短縮の為に同じ入力項目は渡してしまいたいのです。(例えば日付と担当者名、など)

 また、
 Dim 文字列(0,0) As String
 というように、2次元以上を宣言できると手持ちの本に書いてあるのですが、これを利用する事はできるのでしょうか?(利用の仕方は、本には書いてはありませんでした。)

A 回答 (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
    • good
    • 0
この回答へのお礼

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

前半の、Split関数については、利用させて頂きます。
どうもありがとうございました。

お礼日時:2007/05/17 12:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!