|
|
- - - - - - - - - - - - - - ผู้ให้การสนับสนุน- - - - - - - - - - - - - -
|
|
|
กระทู้ #3406 [Vb] (จาก IP: 58.9.24.55)
ช่วยตรวจสอบหน่อยครับ การแสดงข้อมูลจากการสแกนบัตร RFID
ส่วนของการแสดงผลของผมคือ หลังจากที่ผมสแกนบัตรแล้ว มีค่าโชว์ที่ TEXTBox เป็น ID ของบัตร ที่อยากให้ช่วยคือ เมื่อข้อมูลมันโชว์มาแล้วผมตั้งให้มันติดต่อฐานข้อมูลไว้เมื่อ ค่าได้มาตรงกัน จะโชว์ข้อมูลต่าง ๆ ปัญหาคือ หลังจากสแกนแล้วมันโชว์แค่ค่าในเรคคอร์ดแรก แค่บรรทัดเดียวที่ตรงกับบัตร แต่ ไอดีอื่นที่ตรงแต่มันไม่โชว์ครับ ช่วยแนะนำ ด้วย ครับ
With RC If tx_kh.Text = .Fields("ID") Then Text1.Text = .Fields("ID").Value Text2.Text = .Fields("name").Value Text3.Text = .Fields("name2").Value Else Text1.Text = "" Text2.Text = "" Text3.Text = "" End If End With
|
จากคุณ
:
Luffy / akasitcoonat@hotmail.com [2013-03-24 15:51:22]
|
|
ความคิดเห็น #28802 (จาก IP: 101.108.12.5)
ลอง debug เอาเองก็ได้นี่ครับ ลอง msgbox ค่าที่ต้องการตรวจสอบ ว่ากระบวนทำงานถูกหรือเปล่า |
จากคุณ
:
maddog [2013-03-24 22:16:45]
|
|
ความคิดเห็น #28803 (จาก IP: 58.11.6.120)
ลองดีบัคดูแล้วครับ ไม่เข้าใจว่าทำไม มันอ่านได้แค่ใบเดียว พอเราแตะใบอื่น มันโชว์ค่าอ่านจากบัตรได้ แต่ว่ามันตรวจสอบกับฐานข้อมูล ดันไม่ตรงกัน ทั้ง ๆ ที่เลขตรงกันกับฐานข้อมูล ผมก็ไม่เข้าใจ |
จากคุณ
:
Luffy / akasitcoonat@hotmail.com [2013-03-25 23:35:44]
|
|
ความคิดเห็น #28804 (จาก IP: 58.8.21.184)
สิ่งที่รู้ตอนนี้คือ มันอ่านบัตรได้ทุกใบ แต่ปัญหาคือกระบวนการตรวจสอบกับฐานข้อมูลแล้วไม่สำเร็จในบางค่า
ถ้าให้ผมเดาคือ ถ้ามี ข้อมูลเข้ามาเรียบร้อย และยืนยันว่าในฐานข้อมูลก็มี มีข้อสรุปได้ไม่กี่อย่าง คือ 1. SQL ที่ใช้ไม่ถูกต้อง(ต้องลองเอา sql มาทดสอบ) 2.ข้อมูลที่อยู่ในฐานข้อมูลมีข้อมูลอื่นปนอยู่(อาจเป็นอักขระพิเศษที่ไม่แสดงให้เห็น) ต้องลองป้อนค่าใหม่เข้าไปทับ แล้วทดสอบใหม่ |
จากคุณ
:
maddog [2013-03-26 09:57:19]
|
|
ความคิดเห็น #28806 (จาก IP: 58.9.201.40)
ดูให้หน่อยได้มั้ยครับ ว่าผิดตรงไหน
Option Explicit Dim flag As Boolean Dim Conn As New ADODB.Connection Dim RC As New ADODB.Recordset Dim SQL As String Const strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" 'ปุ่มสแกน Private Sub Command1_Click() Dim i&, j%, port&, baud&, buf1(200) As Byte, b1 As Byte, s1$, b3 As Byte, buf2(200) As Byte Command6.Enabled = True Timer1.Enabled = True i = rf_request(0, &H52, j) If (i <> 0) Then lb_info.Caption = "กรุณาสแกนบัตร" Text1.Text = "" Text2.Text = "" Text3.Text = "" tx_kh.Text = "" Exit Sub End If 'Anticollision i = rf_anticoll(0, 4, buf1(0), b1) If (i <> 0) Then lb_info.Caption = "Anticollision Fail!" Exit Sub End If s1 = "" For i = 0 To b1 - 1 s1 = s1 & Right("00" & Hex(buf1(i)), 2) Next i tx_kh.Text = s1 'Select card i = rf_select(0, buf1(0), 4, b1) If (i <> 0) Then lb_info.Caption = "กรุณาสแกนบัตร" Exit Sub Else lb_info.Caption = "สำเร็จ" End If 'ส่วนหลังจากที่อ่านบัตรที่สแกนได้แล้วมาเปรียบเทียบกับดาต้าเบสแล้วโชว์ With RC If tx_kh.Text = .Fields("ID") Then Text1.Text = .Fields("ID") Text2.Text = .Fields("name") Text3.Text = .Fields("name2") Else Text1.Text = "" Text2.Text = "" Text3.Text = "" End If End With End Sub
Private Sub Timer1_Timer() Command1_Click End Sub
Private Sub Form_Load() Command6.Enabled = False SSTab1.Tab = 0 Command12.Enabled = True Command13.Enabled = False cb_ckh.ListIndex = 0 cb_btl.ListIndex = 0 '.ฐานข้อมูล With Conn If .State = 1 Then .Close .ConnectionString = strConn & ";Data Source=" & App.Path & "\db\new.mdb" .Open End With
'เปิดตาราง With RC SQL = "SELECT * FROM Table1 where ID" If .State = 1 Then .Close .CursorLocation = adUseNone .Open SQL, Conn, adOpenKeyset, adLockReadOnly End With End Sub |
จากคุณ
:
Luffy / akasitcoonat@hotmail.com [2013-03-28 01:12:54]
|
|
ความคิดเห็น #28807 (จาก IP: 58.8.194.148)
ลืมวนอ่านค่าต่างๆใน RC หรือเปล่าครับ มันจึงเปรียบเทียบเพราะค่า recordset แรกแบบนั้น
Do While Not RC.EOF With RC . . End With RC.MoveNext Loop |
จากคุณ
:
maddog [2013-03-28 11:27:44]
|
|
ความคิดเห็น #28808 (จาก IP: 115.87.151.38)
ใส่ตรงนี้หรือเปล่า ครับ
Do While Not RC.EOF With RC If tx_kh.Text = .Fields("IDx") Then Text1.Text = .Fields("IDx") Text2.Text = .Fields("name") Text3.Text = .Fields("name2") Else Text1.Text = "" Text2.Text = "" Text3.Text = "" End If End With RC.MoveNext Loop
ยังเหมือนเดิมเลยครับ ผมลอง SQL ใน Access ก็ใช้ได้นะดาต้าเบสไม่ได้ผิด งง ?? |
จากคุณ
:
Luffy [2013-03-28 23:59:23]
|
|
ความคิดเห็น #28809 (จาก IP: 58.8.170.156)
อ๋อไม่ได้ใส่ Exit While เพื่อให้ออกจากการวนลูป เทคนิคในการ debug คือใช้ msgbox ช่วยนะครับ
Do While Not RC.EOF With RC If tx_kh.Text = .Fields("IDx") Then Text1.Text = .Fields("IDx") Text2.Text = .Fields("name") Text3.Text = .Fields("name2") Exit While Else Text1.Text = "" Text2.Text = "" Text3.Text = "" End If End With RC.MoveNext Loop |
จากคุณ
:
maddog [2013-03-29 11:36:27]
|
|
|
- - - - - - - - - - - - - - ผู้ให้การสนับสนุน- - - - - - - - - - - - - -
|
|
|
|
|