1

MS Access データベースに、1 ページに 1 つの注文の注文番号を持つ注文を一覧表示するフォームがあります。フォームの下部には、注文の項目を追加するための別のフォームを開くボタンがあります。

MS Access で vb を使用して注文番号を取得し、それを新しいアイテムの詳細フォームのフィールドに自動的に入力しようとしています。さまざまな方法を試しましたが、OpenArgs を使用することをお勧めします。しかし、詳細フォームが開かず、実行時エラーが発生します。問題の詳細は次のとおりです。アドバイスをいただければ幸いです。

関連するフォームとフィールドは次のとおりです。 注文を含むフォームは frmPedidoAvifiFind です。1 つの注文の注文行を含むフォームは frmPedidoAvifi-dtlAdd です (詳細を追加するための別のフォームですが、既存のものを表示するためのものではありません)。注文番号の両方のフォームのフィールドは PedidoAvifiNo です。これは、このフィールドを介して一対多の関係でリンクされている両方のテーブルの数値フィールドです。

メイン フォーム: ボタンは詳細フォームを表示します。コードは次のとおりです。

メイン フォーム ボタンのコード:

Sub AddDetails_Click()
  Dim strDocName As String

    strDocName = "frmPedidoAvifi-dtlAdd"

    ' Open frmPedidoAvifi-dtl form in data entry mode and store PedidoAvifiNo in  the form's OpenArgs property.

    DoCmd.OpenForm strDocName, , , , acFormAdd, , [frmPedidoAvifiFind]![PedidoAvifiNo]

End Sub

詳細フォーム: On Open プロパティ

Private Sub Form_Open()
If Me.OpenArgs <> vbNullString Then
   Me.PedidoAvifiNo = Me.OpenArgs
End If

End Sub

テスト 1: レコードが表示されるように、メイン フォームで注文番号を選択します。ボタンを押してオーダーラインを追加します。- 実行時エラー '2465' フィールド "|" が見つかりません 参照。Debug は DoCmd 行を強調表示します。

テスト 2: openform 行を次のように変更します: DoCmd.OpenForm strDocName, , , acFormAdd, , Me.PedidoAvifiNo 結果: - 実行時エラー 2501 openForm アクションが取り消されました。

ありがとう、Mike Gunner Reus、スペイン

4

1 に答える 1

1

表示されるエラーは、コントロールの名前のスペルが間違っていることを意味しますPedidoAvifiNo

Me.intellisense と入力すると、利用可能なフィールドのリストが表示されPedidoAvifiNoます。1 つの文字を切り替えるのは非常に簡単で、気付かないことがあります。

frmPedidoAvifi-dtlAdd2 番目の部分については、Open イベントではコントロールがまだ使用できないため、Open イベントではなく Load イベントを使用する必要があります。

于 2011-01-07T12:24:58.697 に答える