重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
Dim OraSession As Object '会话对象
专注于为中小企业提供网站建设、成都网站制作服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业梅江免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千余家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
Dim OraDatabase As Object '数据库对象
Dim OraDynaset As Object'动态集对象
Dim OraDatabase As Object’字段集对象
Set OraSession =CreateObject("OracleInProcServer.XOraSession")
Set OraDatabase=OraSession.CreateDatabase
("Demo","scott/tiger",0)'建立数据库连接
Set OraDynaset=OraDatabase.CreateDynaset("select*from
student",0)'初始化动态集对象
’添加记录
'Begin an AddNew
OraDynaset.DbAddNew
OraDynaset.Fields("ID").value="1000"
’ID为列名
OraDynaset.DbUpdate'更新数据到表
’删除
OraDynaset.DbDelete
'修改
OraDynaset.DbEdit
OraDynaset.Fields("ID").value="101210"
OraDynaset.DbUpdate
button里执行
sleep 5000 '等5秒
call xxxx '另外的过程代码
即可。
这种情况一般都是窗口设计器自动生成的代码出错了,xxx_frm.designer.vb这个文件里面的代码有错误,打开它检查一下,然后试试F8逐步调试。
Imports System.Data.OleDb
Public Class Parking
Private Sub Parking_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Now_Timer.Enabled = True
End Sub
Private Sub Now_Timer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Now_Timer.Tick
Now_Time_Label.Text = "当前时间:" Date.Now
End Sub
Private Sub Enter_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Enter_Button.Click
'定义一个OLEDB连接字符串
Dim conStr As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=F:\test\test.mdb"
'实例化OLEDB连接
Dim con As OleDbConnection = New OleDbConnection(conStr)
Dim sql As New System.Text.StringBuilder
'定义数据库插入语句
sql.Append("insert into Time_billing([Car_Num],[Enter_Time])")
sql.Append("values('" Trim(Car_Num_Text.Text) "','" Date.Now "')")
'打开数据库链接
con.Open()
'定义执行命令
Dim cmd As New System.Data.OleDb.OleDbCommand(sql.ToString, con)
'执行命令
cmd.ExecuteNonQuery()
'关闭数据库链接
con.Close()
MsgBox("提交成功!")
End Sub
Private Sub Leave_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Leave_Button.Click
Dim Time_Length As Double
Dim Pack_Fee As Double
Dim Enter_time As Date
Dim Leave_time As Date
Dim conStr As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=F:\test\test.mdb"
Dim con As OleDbConnection = New OleDbConnection(conStr)
Dim selSql As New System.Text.StringBuilder
Dim inSql As New System.Text.StringBuilder
Dim upSql As New System.Text.StringBuilder
Dim delSql As New System.Text.StringBuilder
Dim dr As OleDbDataReader
con.Open()
'SQL拼接过程中最后不需要有分号
'在赋值时,读取字段值时必须使用在数据库客户端查询时显示的字段名
selSql.Append("select")
selSql.Append(" Enter_Time")
selSql.Append(" from [Time_billing]")
selSql.Append("where Car_Num = '").Append(Trim(Car_Num_Text.Text)).Append("'")
Dim selcmd As New OleDb.OleDbCommand(selSql.ToString, con)
dr = selcmd.ExecuteReader()
If dr.Read() Then
Enter_time = dr("Enter_Time")
Leave_time = Date.Now
Else
MsgBox("木有数据!")
End If
Enter_Time_Text.Text = Enter_time
Leave_Time_Text.Text = Leave_time
'求时间差
Time_Length = Math.Round(DateDiff(DateInterval.Minute, Enter_time, Leave_time) / 60, 2)
Pack_Fee = Time_Length * 5
Pack_Fee_Text.Text = Pack_Fee
inSql.Append("update [Time_billing]")
inSql.Append(" set [Leave_Time] = '").Append(Trim(Leave_Time_Text.Text)).Append("'")
inSql.Append(" ,[Packing_Fee] = '").Append(Pack_Fee).Append("'")
inSql.Append("where Car_Num = '").Append(Trim(Car_Num_Text.Text)).Append("'")
Dim incom As New OleDb.OleDbCommand(inSql.ToString, con)
incom.ExecuteNonQuery()
'con.Close()
MsgBox("结算完成!")
'con.Open()
upSql.Append("insert into Time_billing_History([Car_Num],[Enter_Time],[Leave_Time],[Packing_Fee])")
upSql.Append(" select")
upSql.Append(" [Car_Num]")
upSql.Append(",[Enter_Time]")
upSql.Append(",[Leave_Time]")
upSql.Append(",[Packing_Fee]")
upSql.Append(" from [Time_billing]")
upSql.Append("where [Car_Num] = '").Append(Trim(Car_Num_Text.Text)).Append("'")
Dim upcom As New OleDb.OleDbCommand(upSql.ToString, con)
upcom.ExecuteNonQuery()
delSql.Append("delete")
delSql.Append(" from")
delSql.Append(" [Time_billing]")
delSql.Append(" where [Car_Num] = '").Append(Trim(Car_Num_Text.Text)).Append("'")
Dim delcom As New OleDb.OleDbCommand(delSql.ToString, con)
delcom.ExecuteNonQuery()
con.Close()
End Sub
Private Sub Clear_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Clear_Button.Click
Car_Num_Text.Clear()
Enter_Time_Text.Clear()
Leave_Time_Text.Clear()
Pack_Fee_Text.Clear()
End Sub
End Class
在VB.Net当中,事件的"关联"是需要明显标志的,不像vb6当中,声明一个过程就是事件执行过程了
Handles用来静态"关联"一个或多个事件到一个过程
"关联"时,过程的签名必须与事件的签名相同(签名的意义请查看相关文档)
在VB.Net当中,事件也是一个对象(VB.Net当中一切皆为对象)
使用Handles时实际就相当于创建了一个对委托的实现(委托的意义请查看相关文档)
可以简单的认为,当事件被触发时,被Handles"关联"了的那些过程代码将被执行
而且,被"关联"的过程可以任意起名,不需要与事件和对象的名称相对应
上述代码如果去掉Handles 及其后面的内容,它将是一个最普通不过的过程,与其它过程没有两样,也不会有任何事件被触发时去执行这段代码,正因为加入了Handles 及其后面的一堆事件,它才会因事件被触发而被执行
说得再简单一点: 当PictureBox1.DoubleClick, PictureBox4.DoubleClick, PictureBox3.DoubleClick,PictureBox2.DoubleClick当中的任何一个事件被触发时,上述这个过程的代码都将被执行
再说说参数: sender表示触发了此事件的对象,在这里就是PictureBox1/PictureBox2/PictureBox3/PictureBox4当中的某一个,利用它能知道到底是哪个对象触发了此事件,e在这里没有用处,利用不到什么,之所以有它,是因为Object/EventArgs是.Net事件的基本签名方式,它的好处在你以后对.Net深入之后能体会到.
这些参数的值都是通过被触发的事件传递过来的,可以简单的认为[事件调用了此过程并为参数赋了值]