2016-08-18 8 views
0

データをDBに保存するための保存ボタンがあり、「何も保存しない」という短いコードを作成したい場合は、テキストボックス/コンボボックス/ DateTimePickerの値。 - これはおそらく、空の文字列が挿入されている保存のみ変更が行われた場合

Using con As OracleConnection = New OracleConnection("Data Source=MyDB;User Id=Lucky;Password=MyPassword;") 

      con.Open() 

      Using cmd As OracleCommand = New OracleCommand() 

    Const SQL As String = "INSERT INTO MYTable (Field1,Field2,Field3 etc.) VALUES(: example1, : example2,: example3, etc.)" 

       cmd.Connection = con 
       cmd.Parameters.Add(New OracleParameter(": example1",Textbox1.Text)) 
       cmd.Parameters.Add(New OracleParameter(": example2",Textbox2.Text)) 
       cmd.Parameters.Add(New OracleParameter(": example3",Textbox3.Text)) 

       cmd.CommandText = SQL 

       If Textbox1.text="" And Textbox2.text="" And Textbox3.text="" Then 
       'Do nothing 
       Else 
       cmd.ExecuteNonQuery() 
       MessageBox.Show("Saved successfully") 
       End if 

      End Using 

End Using 

現在、私のコードは、テキストボックスが空白の場合でも、DBに保存します。

つまり

、私はむしろ、このようなよりも、使用することができます任意の異なる解決策があります。すべての

答えて

0

まず、あなたのコードsimplyfyでき

If Textbox1.text="" And Textbox2.text="" And Textbox3.text="" Then 
    'Do nothing 
    Else 
    cmd.ExecuteNonQuery() 
    MessageBox.Show("Saved successfully") 
End if 

If Not (Textbox1.text="" And Textbox2.text="" And Textbox3.text="") Then 
     cmd.ExecuteNonQuery() 
     MessageBox.Show("Saved successfully") 
End if 

か、他

If Textbox1.text="" And Textbox2.text="" And Textbox3.text="" Then Exit Sub 
cmd.ExecuteNonQuery() 
MessageBox.Show("Saved successfully") 

ワン残りを解決する可能な方法は、イベント+フラグです。すべてのコントロールにリスナー(Textchanged、ValueChanged、..コントロールに依存)を与えます。それはChanges made場合、エンドチェックでは、デフォルトFalseからTrue

にフラグChanges madeを設定発射した場合Trueある - はい場合は、DBに保存します。

否定:ユーザーがテキストを入力して後で削除すると、フラグはそのままですが、この動作は多くのアプリケーションで確認できます。

+0

ルーク、フラグの例を教えていただけますか?手伝ってくれてありがとう ! – LuckyLuke82

+0

インスタンス変数はブール値です。 – Luke

+0

ああ、今私はあなたを手に入れます。もう一度お世話になりました! – LuckyLuke82

関連する問題