JBTALKS.CC

标题: 很急~VB TRY CATCH~END TRY 问题~ [打印本页]

作者: pikachew    时间: 2011-7-17 03:27 PM
标题: 很急~VB TRY CATCH~END TRY 问题~
很急~VB TRY CATCH~END TRY 问题~
  Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
If txtID.Text <> "" Then
strsql = "insert into Table1 (stfID,staffname,staffage,staffadd,staffposition,staffsex,stafftime) values ('" _
           & txtID.Text & "','" _
           & txtName.Text & "','" _
            & txtAge.Text & "','" _
       & txtAddress.Text & "','" _
          & txtPosition.Text & "','" _
     & txtSex.Text & "','" _
        & txtTime.Text & "')"
            MsgBox("Saved")
        Else
            MsgBox("invalid", vbCritical)

        End If

        Dim acscmd As New OleDb.OleDbCommand
        acscmd.CommandText = strsql
        acscmd.Connection = acsconn
        acsda.SelectCommand = acscmd
        acsdr = acscmd.ExecuteReader
        acscmd.ExecuteNonQuery()
        acscmd.Dispose()

        Me.filllistview()
    End Sub
这是小弟的CODING
想请问下
如果要用TRY CATCH ENDTRY确保当同样的ID时不能被SAVE??
因为如果同样的ID SAVE了会有RUNTIME ERROR
请问要如何解决此问题呢?
谢谢
作者: goodhermit95    时间: 2011-7-18 09:19 PM
在出现runtime error的部分try catch...
作者: 宅男-兜着走    时间: 2011-7-18 10:48 PM
那么急?????
----------------------------------------------------------------------------------------------------------------------------------------------

简单。

在database内 set ID = unique.

那么同样的资料就会 throw exception.

作者: forexen    时间: 2011-7-19 01:40 PM
如果 stfID 是user keyin 的,你可以写:

sql = "select * from table1 where stfid = '" & txtid.text & "' "
if  ds.tables(0).rows.count > 0 then
msgbox("invalid staff id")
else
sql insert command
end if
作者: forexen    时间: 2011-7-19 01:52 PM
通常stfid 是 autogenerate 的。比如,IT001, IT002, ACC001,ACC002,HR001,HR002
这样就不会出现duplicate staffid 了。如果是出现duplicate data, 用 try catch 不是最好的方法,因该check 你的 program 错在哪里。
作者: pikachew    时间: 2011-7-23 01:53 PM
SOLVE 到了。谢谢帮忙。
还有一个问题就是我想问
概念大概是这样。
CAR PARK PARKINg ticketing system
每当读取DATABASE 里的资料,就会在其户口扣取钱。
比如说, 每当RFID TAGS 被SCAN 到时,DATABASE里有一个FIELD我命它为BALANCE. BALANCE 会减少。应该如何下手呢?
谢谢
balance = balance - 10.
大概这样~
作者: forexen    时间: 2011-7-27 09:52 PM
If RFIDTags= True then
select balance  from balancedatabase
If balance >10 then
balance = balance - 10
else
msgbox("Please top up your amount")
end if
End if
作者: 宅男-兜着走    时间: 2011-7-28 08:07 PM
很奇怪, 你竟然都已经会把 Balance Select 出来了, 那么RFID Scan 了 Event 你 Catch 到了, Select Data, 扣掉 Balance 然后再 save 回去 database。

你都会 query + hardware integration 了, 那么还有什么难度呢?
作者: pikachew    时间: 2011-9-1 09:01 PM
谢谢~帮满~
作者: sven86    时间: 2011-12-10 02:50 PM
别用try and catch .

建议你先用select command 查找user 输入的user id.
如果user id 存在在database 里, 可以告诉user 说不能用。


 用try and catch 会把任何error 都抹杀掉




欢迎光临 JBTALKS.CC (https://jbtalks.my/) Powered by Discuz! X2.5