2017-01-02 38 views
0

おはようございます!私は、日付時刻選択ツールを使用して従業員の時間と時間を記録したいと思います。時間を節約するのは良いですが、タイムアウトすると節約できません。私はTime inとTime outというラベルのボタンにしなければならない。私がしたいのは、タイムアウトボタンを押すと、その従業員の時間を記録したいということです。誰かが私を助けてくれることを願っています。私はまだインターネットで検索していますが、何も動かないようです。事前にみんなありがとう!vb.netの同じテーブルと行にデータを挿入する方法

私のコードは次のようになっています。

cmd.CommandText = "INSERT INTO timelogTB (Time_Out) select Time_Out from timelogTB WHERE EmpNo= '" & comboxEmpno.Text & "'" & _ 
      "VALUES (@Time_Out)" 

        'add parameters 
     With cmd.Parameters 
      .Add(New SqlParameter("@Time_Out", dtpTime.Value.TimeOfDay)) 
     End With 
+0

SQL文は意味をなさない。あなたは正確に何をしたいですか? –

+0

コマンドボタンの中に、日付時刻ピッカーを使用して時刻を記録します。既に時刻が入っている従業員の同じ行に挿入します。 – AtanHokage04

+0

質問を編集して、関連するテーブルDDLステートメントを含めてください。 –

答えて

0

使用Update従業員の行がデータベースにすでに存在し、正しいユーザーの行で時間を節約するためにWHERE条件を使用しているため。
クエリで使用するすべての値にSqlParametersを使用します。

cmd.CommandText = "UPDATE timelogTB SET Time_Out = @Time_Out WHERE [email protected]" 
Dim parameters As SqlParameter() = 
{ 
    New SqlParameter With 
    { 
     .ParameterName = "@Time_Out", 
     .SqlDbType = SqlDbType.DateTime, 
     .Value = dtpTime.Value.TimeOfDay 
    }, 
    New SqlParameter With 
    { 
     .ParameterName = "@EmpNo", 
     .SqlDbType = SqlDbType.VarChar, 
     .Value = comboxEmpno.Text 
    } 
} 

cmd.Parameters.AddRange(parameters) 

' Execute query 

そしてtimelogTB表は別の日のための入出力回数が含まれている場合ゾハルPeledは、気づいたとして、あなたは正しい行を更新するためのより多くのWHERE条件を追加する必要があります。
たとえば、Time_Outがnullの場合、更新のみの行が必要です。

"UPDATE timelogTB SET Time_Out = @Time_Out WHERE [email protected] AND Time_Out IS NULL" 
+0

と呼ばれ、Fabioに感謝しました。 – AtanHokage04

+1

これは、この従業員に属するすべてのレコードを更新します。 where節は十分ではありません。 –

+0

保存された時間は、この形式で15:21:41.3761497ミリ秒で保存するにはどうすればよいですか? – AtanHokage04

関連する問題