ホームページ  >  に質問  >  本文

ストアド プロシージャを使用した更新可能なフォーム レコードセットの実装

  1. MySQL サーバー上のストアド プロシージャに基づくレコードセットを使用してフォームを設定しようとしています。コマンド オブジェクトを使用して Set Me.Recordset = cmd.execute を実行すると、正常に動作しますが、チェックボックスとテキストボックス (tinyint と varchar ) にバインドされている 2 つのフィールドを更新できる必要があります。形状。もちろん、これは機能しません。

  2. この設計上の問題を考慮して、.Open メソッドと "CALL procName ('value1', 'value2');" 構文を使用してレコードセットを開こうとしました。壊れたレコードセットを新しく作成し、.Open メソッドからスキーマを設定し、レコードをループして新しいレコードに追加します。最後に、次のようにフォームのレコードセットとして設定します。

  3. リーリー
  4. 追加情報: NewRecordset 変数はフォーム レベルでプライベートとして宣言されます。また、私のようにプロシージャを呼び出すのは悪い習慣であることもわかっていますが、このタスクを達成する他の方法は思いつきません。

  5. 重要: ローカル テーブルは使用できませんし、使用したくありません。これは簡単に修正できますが、コードの残りの部分と矛盾することになります。 ありがとう:)###

  6. 問題は、説明どおりに実行すると、バインドされたフィールドに対して #Name エラーが発生するか、フィールドがレコードセットとして設定されており、その値を変更できるのに、初期値が表示されないということです。
P粉086993788P粉086993788372日前507

全員に返信(1)返信します

  • P粉043470158

    P粉0434701582023-09-14 00:32:59

    私が理解しているところによると、新しいレコードセットを作成したり、元のレコードセットからスキーマをコピーしたりするなど、さまざまな方法を試しましたが、フォームにバインドされているチェックボックス フィールドを更新することはできません。

    この方法でストアド プロシージャを使用するのは難しい場合があるため、呼び出されたストアド プロシージャで更新が許可されているかどうかを個別にテストすることをお勧めします。

    1. 手動コピー モードの代わりに .Clone メソッドを使用して、元のレコードセットのコピーを作成してみてください。
    2. フォーム上のチェックボックス コントロールがレコードセット フィールドに適切にバインドされており、更新が許可されていることを確認します。
    3. データ更新の柔軟性を高めるために、adOpenKeyset などの別のカーソル タイプの使用を検討してください。
    ###お役に立てれば!

    返事
    0
  • キャンセル返事