2017-01-02 9 views
0

Guten Tag aller einfügen! Ich möchte die Zeit- und Zeitüberschreitung eines Mitarbeiters, der die Datumsauswahl verwendet, aufzeichnen. Das Speichern der Zeit ist gut, aber die Zeit wird nicht gespeichert. Ich muss Tasten mit der Bezeichnung Time in und Time out. was ich tun möchte, ist, wenn ich die Auszeit-Taste drücke, möchte ich die Zeit des besagten Angestellten aufzeichnen. Ich hoffe jemand kann mir helfen, ich suche immer noch im Internet aber nichts scheint zu funktionieren. Vielen Dank im Voraus Jungs!Wie Daten in der gleichen Tabelle und Zeile in vb.net

Mein Code sieht wie folgt aus.

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-Anweisung macht keinen Sinn. Was genau willst du machen? –

+0

Es war in einem Befehlsschaltfläche wird die Zeit mit Datum Zeitauswahl zeichne ich es in der gleichen Zeile eines Mitarbeiters einfügen möchten, die in bereits Zeit. – AtanHokage04

+0

Bearbeiten Sie Ihre Frage die entsprechende Tabelle DDL-Anweisung enthalten. –

Antwort

0

Verwenden Update weil Zeile für Mitarbeiter bereits in der Datenbank vorhanden ist und WHERE Zustand verwenden, um Zeit in der Reihe der korrekten Benutzer zu speichern aus.
Und Verwendung SqlParameters für alle Werte, die Sie in der Abfrage verwenden.

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 

Und als Zohar Peled bemerkt, wenn timelogTB Tabelle Input-Output-Zeiten für verschiedene Tage enthalten, dann müssen Sie für die Aktualisierung richtige Zeile mehr WHERE Bedingung hinzuzufügen.
Zum Beispiel benötigen Sie nur Zeile aktualisieren, wo Time_Out null ist.

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

Es funktionierte vielen Dank Fabio. – AtanHokage04

+1

Dadurch werden alle Datensätze aktualisiert, die zu diesem Mitarbeiter gehören. Die Where-Klausel ist nicht gut genug. –

+0

Die eingesparte Zeit ist in diesem Format 15: 21: 41.3761497 Wie kann ich es ohne die Millisekunden speichern? – AtanHokage04

Verwandte Themen