ok
nach dem ich gerade mit erhobenen Händen schreiend durch mein Zimmer gelaufen bin,
schreibe ich da mal was hin
Private Sub btn_Save_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles btn_Save.Click
If Not Saveable() Then Return
' wenn man viele Speicher bedingungen hat, kommen hier dann ganz schön
' viele ifs zusammen und diese
' erhöhen die Lesbarkeit NICHT
Try
con.Open()
Dim cmd As OleDbCommand = con.CreateCommand
' es hilft beim lesen wenn man den SQL-String ein bisschen aufteilt
' ist aber geschmackssache
Dim INSERTString As String = _
"INSERT INTO " & _
"Scans " & _
"(Maschine, Datum, Uhrzeit, TubNr) " & _
"VALUES " & _
"(@Maschine, @Datum, @Uhrzeit, @TubNr)"
cmd.CommandText = INSERTString
' das hinzufügen der werte sollte man mit Parameter machen, dann
' brauchst Du die ganzen formatierungen nicht mehr
' spätestens bei einer double zahl bist Du so um einiges schneller,
' auch bei datum
' da Du dich nicht mehr um die formatierung kümmern musst, weil es
' "keine" mehr gibt
cmd.Parameters.AddWithValue("@Maschine", Label3.Text) ' habe keine
' Ahnung was in Label3 steht
' es gehört auf jeden fall nicht dort hin,
' wenn man werte hat, die, wie wahrscheinlich in diesem Fall, schon
' beim öffnen des Formulars bekannt sind,
' sollte man diese in Members auslagern (m_Maschine) und wenn
' nicht, sollte das Label nicht Label3 heissen
cmd.Parameters.AddWithValue("@Datum", Now.Date) ' keine Ahnung
' welchen Spaltentyp Du da hast,
cmd.Parameters.AddWithValue("@Uhrzeit", Now.TimeOfDay) ' aber ich
' würde auf jeden fall den Spaltentyp anpassen
' wenn es so nicht geht
' oder garnicht trennen (ein Feld mit dem Namen Date_Time oder so)
cmd.Parameters.AddWithValue("@TubNr", txt_TubNr.Text)
cmd.ExecuteNonQuery()
Me.Close() ' wenn zumachen, dann zumachen, Hide ist schlecht
' zumindest war das in VB 6.0 so
Catch ex As Exception
MessageBox.Show(ex.Message) ' wir verwenden .Net
Finally
con.Close()
End Try
End Sub
' sollte man auslagern um eine erweiterung der Speicherbedingungen zu
' erleichtern
Private Function Saveable() As Boolean
If Not Integer.TryParse(TextBox1.Text, New Integer) Then
MsgBox("Bitte geben Sie eine Nummer ein!")
Me.ActiveControl = TextBox1
Return False
End If
Return True ' wenn eine bedingung oberhalb einen Fehler machte, kommt
' er hier nicht mehr her
' um der Frage wer "er" ist vorzugreifen, das ist der Compiler oder das
' Programm oder der der das Programm ausführt
End Function 0 |