รบกวนสอบถามหน่อยครับ คือผมเขียนโปรแกรมเพื่อบันทึกเวลาเข้า-ออกครับ โดยใช้ RFID ที่นี่ผมทำโปรแกรมเข้าและออกเรียบร้อยแล้วครับติดปัญหานิดเดียวตรงโปรแกรมออกครับ คือถ้านำบัตรไปแตะที่ฝั่งออกซ้ำ2ครั้งอ่ะครับ โปรแกรมมันจะหลุดครับ ผมเลยอยากทราบว่าจะแก้ได้หรือป่าวครับ ไม่ให้โปรแกรมมันหลุดอ่ะครับ ถ้าได้รบกวนแนะนำหน่อยครับว่าต้องแก้ตรงไหนบ้าง
Code (VB.NET)
Private Sub txtSN_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSN.TextChanged
If txtSN.Text <> "" Then
Dim intNumRows As Integer
Dim strSQL As String
sqlcon = New SqlConnection("Server=TOSHIBA-PC\SQLEXPRESS;Database=parking;Trusted_Connection=True;")
sqlcon.Open()
strSQL = "SELECT COUNT(*) FROM member WHERE CardSN = '" & txtSN.Text & "'"
sqlcmd = New SqlCommand(strSQL, sqlcon)
intNumRows = sqlcmd.ExecuteScalar()
If intNumRows > 0 Then
Dim dt As String
dt = DateTime.Now.ToString("dd-MM-yyyy HH:mm:ss")
Dim dtin As String
sqlcon = New SqlConnection("Server=TOSHIBA-PC\SQLEXPRESS;Database=parking;Trusted_Connection=True;")
sqlcon.Open()
dtin = "SELECT dtin FROM inout WHERE CardSN='" & txtSN.Text & "'AND dtout IS NULL"
Dim sqlcmd As New SqlCommand(dtin, sqlcon)
Dim Rs As SqlDataReader = sqlcmd.ExecuteReader
If Rs.Read Then
txtIN.Text = Rs("dtin")
End If
sqlcon.Close()
txtOUT.Text = dt
Dim sdtin As Date = txtIN.Text
Dim sdtout As Date = txtOUT.Text
Dim timeDif As Long = DateDiff(DateInterval.Minute, sdtin, sdtout)
Dim timeSpan As TimeSpan = sdtout.Subtract(sdtin)
Dim difDays As Integer = timeSpan.Days
Dim difHr As Integer = timeSpan.Hours
Dim difMin As Integer = timeSpan.Minutes
txtTime.Text = timeDif
Select Case timeDif
Case 0 To 120
txtCash.Text = "20"
SerialPort1.Write("a")
Case 121 To 240
txtCash.Text = "40"
SerialPort1.Write("s")
Case Is > 241
txtCash.Text = "60"
SerialPort1.Write("d")
End Select
ds = New DataSet
da = New SqlDataAdapter("ALTER TABLE inout ADD CONSTRAINT chk_Time CHECK (CardSN='" & txtSN.Text & "' AND dtout='')", sqlcon)
da = New SqlDataAdapter("UPDATE inout SET dtout='" & dt & "', total='" & txtTime.Text & "',cash='" & txtCash.Text & "' WHERE CardSN='" & txtSN.Text & "'AND dtout IS NULL", sqlcon)
da.Fill(ds, "inout")
Call showdata2()
Else
SerialPort1.Write("g")
End If
End If
Call refreshdata()
System.Threading.Thread.Sleep(1500)
Call cleardata()
End Sub
นี่เป็นโค้ดที่ผมเขียนครับ
นี่เป็นรูปตรงที่เกิด error ครับ
นี่เป็นหน้าต่างโปรแกรมที่ผมออกแบบไว้ครับ
รบกวนสอบถามครับ ขอบคุณครับ
Tag : .NET, Ms SQL Server 2008, VB.NET, VS 2010 (.NET 4.x)