Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 为数据库表中的重复in或out if循环生成错误消息_Mysql_Vb.net_Arduino Uno_Rfid - Fatal编程技术网

Mysql 为数据库表中的重复in或out if循环生成错误消息

Mysql 为数据库表中的重复in或out if循环生成错误消息,mysql,vb.net,arduino-uno,rfid,Mysql,Vb.net,Arduino Uno,Rfid,您好,为了让大家清楚,我将介绍我正在进行的系统,即“我们大学的学生出勤”,该系统由RFID阅读器RC522和Arduino组成,学生应点击其RFID标签,并在监视器上显示检索到的数据。。该系统是我们的顶点项目,已经完成,但小组要求我们解决另一个问题 所有功能都已经完成,包括扫描、检索数据、注册学生,这将适用于大学生,他们可以根据时间表自由出入,不像高中那样只有一进一出 两个RFID读卡器位于大学的入口和出口处。出口处有一个用于输出的系统,入口处有一个用于输入的系统。从输入和输出处检索的数据将保存

您好,为了让大家清楚,我将介绍我正在进行的系统,即“我们大学的学生出勤”,该系统由RFID阅读器RC522和Arduino组成,学生应点击其RFID标签,并在监视器上显示检索到的数据。。该系统是我们的顶点项目,已经完成,但小组要求我们解决另一个问题

所有功能都已经完成,包括扫描、检索数据、注册学生,这将适用于大学生,他们可以根据时间表自由出入,不像高中那样只有一进一出

两个RFID读卡器位于大学的入口和出口处。出口处有一个用于输出的系统,入口处有一个用于输入的系统。从输入和输出处检索的数据将保存到同一个表中。 如果学生没有先出去就点击了,我如何向他们显示messagebox警告?我对这个问题有些了解。但我不知道。我需要一些帮助来达到我的顶点。。如有任何意见和建议,请提前告知。。这是我根据文本框更改事件中显示的RFID标签号检索数据的代码。顺便说一下,我的表格studlogs是处理考勤的

Private Sub studtag_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles studtag.TextChanged

    Notenrolled.Close()
    greet.Text = ""
    PictureBox4.Visible = False

    If studtag.Text = "44F2F38B" Then

        Endday()

    End If


    If studtag.Text = recents.Text Then

        Alreadylogin.Show()
    ElseIf studtag.TextLength = 8 Then

        DataGridView1.Sort(DataGridView1.Columns(6), System.ComponentModel.ListSortDirection.Descending)
        con = New MySqlConnection
        con.ConnectionString = "server=localhost;userid=root;password=1234;database=dat"
        Dim query As String

        query = "select * from dat.students"
        cmd = New MySqlCommand(query, con)

        Dim table As New DataTable

        Try
            con.Open()
            'Gets or sets an SQL statement or stored procedure used to select records in the database.
            With cmd
                .Connection = con
                .CommandText = "SELECT * from students where `studtags`='" & studtag.Text & "';"
            End With
            da.SelectCommand = cmd
            da.Fill(table)
            'it gets the data from specific column and fill it into Label

            idno.Text = table.Rows(0).Item(1)
            lastxt.Text = table.Rows(0).Item(2)
            firstxt.Text = table.Rows(0).Item(3)
            middletxt.Text = table.Rows(0).Item(4)
            dob.Text = table.Rows(0).Item(6)
            year.Text = table.Rows(0).Item(7)
            crsetxt.Text = table.Rows(0).Item(10)

            tagtxt.Text = studtag.Text
            timein.Text = times.Text

            dr = cmd.ExecuteReader()
            dr.Read()

            If dob.Text = bday.Text Then
                greet.Text = firstxt.Text + " Today is your Birthday. Greetings :D."
                PictureBox4.Visible = True

            End If

            Dim img() As Byte = CType(dr("studpic"), Byte())


            Using ms As New IO.MemoryStream(img)
                PictureBox1.Image = Image.FromStream(ms)

            End Using
            My.Computer.Audio.Play("C:\Users\BOR\Desktop\Parsu Gate\Parsu\audio\scanned.wav")
            insert()
            loadtable()
            studdailyhistory()


        Catch ex As Exception
            Notenrolled.Show()
            DataGridView1.Sort(DataGridView1.Columns(5), System.ComponentModel.ListSortDirection.Descending)
            If studtag.Text = "44F2F38B" Then
                Notenrolled.Close()
            End If


        Finally

            con.Dispose()
            con.Close()

        End Try

    End If
    recents.Text = tagtxt.Text



End Sub

Public Sub insert()

    con = New MySqlConnection
    con.ConnectionString = "server=localhost;userid=root;password=1234;database=dat"
    Dim reader As MySqlDataReader
    Dim mstream As New System.IO.MemoryStream()

    Dim arrImage() As Byte = mstream.GetBuffer()
    mstream.Close()

    Try

        con.Open()
        Dim query3 As String

        query3 = "insert into dat.studlogs (studtags,idno,lastxt,firstxt,middletxt,dob,log,timein,crse,studpic) values ('" & tagtxt.Text & "','" & idno.Text & "','" & lastxt.Text & "','" & firstxt.Text & "','" & middletxt.Text & "','" & dob.Text & "','" & log.Text & "','" & timein.Text & "','" & crsetxt.Text & "',@studpic)"
        cmd = New MySqlCommand(query3, con)
        cmd.Parameters.AddWithValue("@studpic", arrImage)
        reader = cmd.ExecuteReader


        con.Close()
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    Finally
        con.Dispose()
    End Try

End Sub


Public Sub studdailyhistory()

    con = New MySqlConnection
    con.ConnectionString = "server=localhost;userid=root;password=1234;database=dat"
    Dim reader As MySqlDataReader
    Dim mstream As New System.IO.MemoryStream()

    Dim arrImage() As Byte = mstream.GetBuffer()
    mstream.Close()

    Try

        con.Open()
        Dim query3 As String

        query3 = "insert into dat.studdailyhistory (studtags,idno,lastxt,firstxt,middletxt,dob,log,timein,crse,dates,studpic) values ('" & tagtxt.Text & "','" & idno.Text & "','" & lastxt.Text & "','" & firstxt.Text & "','" & middletxt.Text & "','" & dob.Text & "','" & log.Text & "','" & timein.Text & "','" & crsetxt.Text & "','" & wholedate.Text & "',@studpic)"
        cmd = New MySqlCommand(query3, con)
        cmd.Parameters.AddWithValue("@studpic", arrImage)
        reader = cmd.ExecuteReader

        con.Close()
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    Finally
        con.Dispose()
    End Try

End Sub

Public Sub loadtable()

    con = New MySqlConnection
    con.ConnectionString = "server=localhost;userid=root;password=1234;database=dat"
    Dim SDA As New MySqlDataAdapter
    Dim dbDataset As New DataTable
    Dim bSource As New BindingSource

    Try

        con.Open()
        Dim query3 As String

        query3 = "select idno as 'Student_ID',lastxt as 'LastName',firstxt as 'FirstName',middletxt as 'MiddleName',log as 'Status',timein as 'Timein',crse as 'Course' from dat.studlogs"
        cmd = New MySqlCommand(query3, con)
        SDA.SelectCommand = cmd
        SDA.Fill(dbDataset)
        bSource.DataSource = dbDataset
        DataGridView1.DataSource = bSource
        SDA.Update(dbDataset)

        DataGridView1.Sort(DataGridView1.Columns(5), System.ComponentModel.ListSortDirection.Descending)

        If dbDataset.Rows.Count > 0 Then
            logins.Text = dbDataset.Rows.Count.ToString()
        End If

        con.Close()
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    Finally
        con.Dispose()
    End Try
End Sub

我不确定我是否理解正确,但我想你不希望学生能够在不打卡的情况下打卡两次。 你有多种选择。 最简单的是,可以在数据库中使用状态字段。学生打卡时,保存“状态”=1(学生在现场),打卡时“状态”=0(学生不在现场)。在每次打卡和打卡时,你都要检查学生的状态。如果1无法再次打卡,因为她/他已经在现场。 或者,当他们点击fob时,您将其保存在日志中,这是一个入口或出口,当您与学生一起查询表时,您将按上次插入时间对表进行排序,以便在您看到日志最后状态的位置显示最后一条记录

编辑: 在数据库中向students表中添加一个额外的bool类型列,如“studOnsite”,并将默认值设置为0。当学生扫描一张卡片时,您可以从以下表格中获得学生详细信息:

.CommandText = "SELECT * from students where `studtags`='" & studtag.Text & "';"
您还将返回“studOnsite”列。之后,您可以简单地检查值,如:

if (table.Rows(0).Item("studOnsite") then 
   'student already onsite so she/he is leaving
   greet.Text = firstxt.Text & "Good bye!"
   'update the student table and change "studOnsite" to false
   'dim query as string=string.format("UPDATE students SET studOnsite=false WHERE studtags='{0}'",studtag.Text)
else 
   'student wasn't onsite so she/he is just arrived
   greet.Text = firstxt.Text & "Welcome back!"
   'update the student table and change "studOnsite" to true as student is onsite now
   'dim query as string=string.format("UPDATE students SET studOnsite=true WHERE studtags='{0}'",studtag.Text)
end if

谢谢fra,我会尝试这个建议。我可以使用if status=“IN”然后显示消息吗?…但是先生,您知道如何检查数据库内部,因为该语句只会检查接口标签和文本框吗。?不在表格中请看我编辑的答案!感谢fra非常感谢您..mysql工作台中没有布尔数据类型?我能用罐头吗?默认值为0?是的,您可以随意使用。每个数字格式都可以。它们都可以为真或假,因为它们等于1和0。真=1和假=0。非常感谢fra对我的问题给予如此多的关注…你指出了我想要发生的事情…我现在就解决它。