2016-09-15 4 views
1

サブルーチンを呼び出すと私のプロジェクトでは、ユーザーがデータを入力および編集するUltraGridを使用して、異なる顧客からの注文を入力することができます受注アプリケーションです。キーボードのDeleteキーが押されると、ユーザーはMsgBoxで選択した行を削除することを確認するメッセージを表示し、そうであればDELETEクエリを実行してその行をデータベースから削除します。SQLトランザクションの一部として

私はまた、ユーザーがオーダーメイドオーダー/変更内容を保存できるようにする[保存]ボタンがあります。理想的には、ユーザーが注文を保存しないと、グリッドの行を一時的に削除するだけで、注文行をデータベースから完全に削除しないでください。

クエリを別のサブルーチンに入れると、このサブルーチンをトランザクションの一部として保存している自分のクラスから呼び出せますか?

これは、クエリを呼び出すだけでなく、削除された行を一時的にどこかに保存するので、トランザクションでも削除するデータがわかるように動作しないようです削除するも、いずれかのデータがあるかどうかを伝えるためにBoolean変数として...

は、これを行うのいずれかの単純な方法はありますか?上記の方法でも動作しますか?

+0

** MS-Accessのこのです**(タグ付き)、** ** SQL Server **( 'tsql'タグが意味する) –

+1

@marc_s申し訳ありませんが、これはMS Accessのためのもので、SQL Server用であることを認識していないはずです。 – David

答えて

2

はそれをソートしていない...すべてで必要な実際の複雑な何も、単にコードを変更するために必要な、以下のように:

Try 
    Dim Dc As New OleDbCommand 
    Dim rowcode As String = "" 

     rowcode = dr.Item("Product_Code").Value 

に変更:

Try 
    Dim Dc As New OleDbCommand 
    Dim rowcode As String = "" 

     rowcode = dr.Item("Product_Code", DataRowVersion.Original) 
1
それを行うの

最も簡単な方法は、(追加、変更および削除)で、メモリ変更のすべてを維持し、その後、あなたの保存ボタンを押したときにデータベースに同期されます。

おそらく、あなたはグリッド上の行を更新するために、サーバ側とクライアント側のスクリプトに操作を追加するためにAJAXアクションが必要になります。

1

グリッドはバックエンドデータベースでは機能しません。ローカルのデータソースのみを処理します。したがって、データをデータベースに保存すると、削除された行がないかどうかを確認して保存します。

あなたは、保存ボタンのみのローカルデータソースを更新する場合は、グリッドのUpdateModeにonUpdateに設定することができます。次に、グリッドのUpdateDataメソッドを呼び出す必要があります。この場合も、ローカルのデータソースが更新されます。ローカルデータソースがどのようにしていつバックエンドデータベースを更新するかは、グリッドとは何の共通点もありません。したがって、ローカルデータソースのタイプに応じて、更新されたデータをデータベースに戻す前に、削除された行のチェックを処理する必要があります。

+0

上記の編集を参照してください。 Save queryのdeleteコードを追加しました...同じ 'DataSet'を使用して、削除されたデータをどのように渡すことができますか? – David

+0

UpdateModeをOnUpdateに設定した場合、保存ボタンがクリックされたときにUltraGridでUpdateDataメソッドを呼び出す必要があります。これで、ラインセットのDataSetが更新されます。 – wnvko

関連する問題