VB2010从数据库逐条读取记录并计算
本人VB初学者,电脑装的是VB2010(装不了VB6.0),想设计一个简单的对话框应用程序利用三边长计算三角形面积,三个边分别为a,b,c,计算公式:s=(a+b+c)/...
本人VB初学者,电脑装的是VB2010(装不了VB6.0),想设计一个简单的对话框应用程序利用三边长计算三角形面积,三个边分别为a,b,c,计算公式:s=(a+b+c)/2,area=sqr(s*(s-a)(s-b)(s-c));用ACCESS数据库建立一个表格,里面存放多个不同的三角形边长数据,如图所示
。建立一个对话框应用程序,逐条读取每个记录中的边长数据,计算面积,再将面积存入到每个记录的area字段中。我是VB初学者,半个月前连怎么定义变量都不知道,之前有一点点VC基础。图书馆找到的好多书都是讲VB6.0的,跟VB2010不一样啊,所以最好写出代码,要不我理解不了~多谢啦 展开
。建立一个对话框应用程序,逐条读取每个记录中的边长数据,计算面积,再将面积存入到每个记录的area字段中。我是VB初学者,半个月前连怎么定义变量都不知道,之前有一点点VC基础。图书馆找到的好多书都是讲VB6.0的,跟VB2010不一样啊,所以最好写出代码,要不我理解不了~多谢啦 展开
- 你的回答被采纳后将获得:
- 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏50(财富值+成长值)
1个回答
展开全部
在一个Form上添加五个text控件,分别命名为Text_ID,Text_a,Text_b,Text_c,Text_Area。再添加三个Button控件,分别命名为Btn_Read,Btn_Cal,Btn_Write,并将其Text属性分别改为“读取记录”,"计算",“写入面积数据”。
然后再将Form的名字改为Frm_Main,然后进入代码编码界面。
在先编写FrmMain的加载程序前,先声明了几个变量,供整个程序使用,如下:
Dim MyConnectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='D:\Area.accdb';Persist Security Info=True;Jet OLEDB:Database Password=123456;"'这里假设你的Access是2007版本的,数据库是放在D盘下,数据库名称是Area.accdb。密码是“123456”,如果没后密码,可以将"Persist Security Info"以及后面的全删掉,只保留最后的双引号即可。这句话主要是告诉计算机我的数据库放在硬盘什么地方了,数据库是用什么软件做的。
Dim MyQuery as string="Select * from 三角形面积"'这里假定数据库中保存数据的表的名字叫“三角形面积”,这句是SQL语句,意思是将这个表中所有的数据都读出来。
Dim MyOLEConnection As System.Data.OleDb.OleDbConnection = New System.Data.OleDb.OleDbConnection(MyConnectionString)‘这句是要建立一个现在的程序和你硬盘数据库之间的连接,就相当于打电话时的拨号。
Dim DataAdapter As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter(MyQuery, MyOLEConnection)’这句是连接时的匹配,就相当于打电话时,你播的是固定电话,还是手机,是联通的还是移动的?不同的电话要采用不同的匹配方法。
Dim myDataSet As System.Data.DataSet = New System.Data.DataSet‘这句是将读出来的数据放在哪。DataSet直译的话就是数据集。
Dim intRow as integer =0'定义要读的当前行编号
Private Sub FrmMain_Load(sender As Object, e As System.EventArgs) Handles Me.Load
mydataSet.Clear()’先将放数据的仓库清空,免得污染我们的数据。
If MyOLEConnection.State = ConnectionState.Closed Then
MyOLEConnection.Open()
End If‘这个判断是判断连接是否已经接通,若不通,则接头,若已经通,则保持。
Try
DataAdapter.Fill(myDataSet)’这句就是将数据放到我们规定的仓库中。
Catch ex As Exception
MsgBox("Error Number:" & "Error Description:" & Err.Description)
End Try
Return myDataSet
MyOLEConnection.Close()
DataAdapter = Nothing
mydataSet = Nothing
End Sub
然后再添加Btn_Read_Click 事件
Private Sub Btn_Read_Click(sender As System.Object, e As System.EventArgs) Handles Btn_Read.Click
if intRow<MyDataset.tables(0).Rows.Count then
text_ID.text=mydataset.tables(0).rows(0).Item(0)
text_A.text=mydataset.tables(0).rows(0).Item(1)
text_B.text=mydataset.tables(0).rows(0).Item(2)
text_C.text=mydataset.tables(0).rows(0).Item(3)
end if
intRow=intRow+1
End Sub
然后添加Btn_Cal_click事件
‘这一块我就不写了,留给你当练习吧。因为这个最简单。
’最后的计算结果应保存在text_area里面。
最后添加Btn_Write_Click事件
Private Sub Btn_Write_Click(sender As System.Object, e As System.EventArgs) Handles Btn_Write.Click
MyQuery="Update 三角形面积 SET [area] = ‘“&Text_Area.Text & "' where [a]='"&text_A.text'" and [b]='"&text_B.text'" and [c]='"&text_C.text'";"
‘这句也是SQL语句,意思是将计算出的面积值插入到数据库中
Dim SaveCmd as system.Data.Oledb.OledbCommand= New OleDbcommand(MyQuery, MyOleConnection)
If MyOLEConnection.State = ConnectionState.Closed Then
MyOLEConnection.Open()
End If
Try
SaveCmd.ExecuteNonQuery()
Catch ex As Exception
MsgBox("Error Number:" & "Error Description:" & Err.Description)
End Try
MyOLEConnection.Close()
SaveCmd = Nothing
End Sub
现场编的,有可能有拼写错误,你先调试一下,有什么看不明白的地方再问我。
然后再将Form的名字改为Frm_Main,然后进入代码编码界面。
在先编写FrmMain的加载程序前,先声明了几个变量,供整个程序使用,如下:
Dim MyConnectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='D:\Area.accdb';Persist Security Info=True;Jet OLEDB:Database Password=123456;"'这里假设你的Access是2007版本的,数据库是放在D盘下,数据库名称是Area.accdb。密码是“123456”,如果没后密码,可以将"Persist Security Info"以及后面的全删掉,只保留最后的双引号即可。这句话主要是告诉计算机我的数据库放在硬盘什么地方了,数据库是用什么软件做的。
Dim MyQuery as string="Select * from 三角形面积"'这里假定数据库中保存数据的表的名字叫“三角形面积”,这句是SQL语句,意思是将这个表中所有的数据都读出来。
Dim MyOLEConnection As System.Data.OleDb.OleDbConnection = New System.Data.OleDb.OleDbConnection(MyConnectionString)‘这句是要建立一个现在的程序和你硬盘数据库之间的连接,就相当于打电话时的拨号。
Dim DataAdapter As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter(MyQuery, MyOLEConnection)’这句是连接时的匹配,就相当于打电话时,你播的是固定电话,还是手机,是联通的还是移动的?不同的电话要采用不同的匹配方法。
Dim myDataSet As System.Data.DataSet = New System.Data.DataSet‘这句是将读出来的数据放在哪。DataSet直译的话就是数据集。
Dim intRow as integer =0'定义要读的当前行编号
Private Sub FrmMain_Load(sender As Object, e As System.EventArgs) Handles Me.Load
mydataSet.Clear()’先将放数据的仓库清空,免得污染我们的数据。
If MyOLEConnection.State = ConnectionState.Closed Then
MyOLEConnection.Open()
End If‘这个判断是判断连接是否已经接通,若不通,则接头,若已经通,则保持。
Try
DataAdapter.Fill(myDataSet)’这句就是将数据放到我们规定的仓库中。
Catch ex As Exception
MsgBox("Error Number:" & "Error Description:" & Err.Description)
End Try
Return myDataSet
MyOLEConnection.Close()
DataAdapter = Nothing
mydataSet = Nothing
End Sub
然后再添加Btn_Read_Click 事件
Private Sub Btn_Read_Click(sender As System.Object, e As System.EventArgs) Handles Btn_Read.Click
if intRow<MyDataset.tables(0).Rows.Count then
text_ID.text=mydataset.tables(0).rows(0).Item(0)
text_A.text=mydataset.tables(0).rows(0).Item(1)
text_B.text=mydataset.tables(0).rows(0).Item(2)
text_C.text=mydataset.tables(0).rows(0).Item(3)
end if
intRow=intRow+1
End Sub
然后添加Btn_Cal_click事件
‘这一块我就不写了,留给你当练习吧。因为这个最简单。
’最后的计算结果应保存在text_area里面。
最后添加Btn_Write_Click事件
Private Sub Btn_Write_Click(sender As System.Object, e As System.EventArgs) Handles Btn_Write.Click
MyQuery="Update 三角形面积 SET [area] = ‘“&Text_Area.Text & "' where [a]='"&text_A.text'" and [b]='"&text_B.text'" and [c]='"&text_C.text'";"
‘这句也是SQL语句,意思是将计算出的面积值插入到数据库中
Dim SaveCmd as system.Data.Oledb.OledbCommand= New OleDbcommand(MyQuery, MyOleConnection)
If MyOLEConnection.State = ConnectionState.Closed Then
MyOLEConnection.Open()
End If
Try
SaveCmd.ExecuteNonQuery()
Catch ex As Exception
MsgBox("Error Number:" & "Error Description:" & Err.Description)
End Try
MyOLEConnection.Close()
SaveCmd = Nothing
End Sub
现场编的,有可能有拼写错误,你先调试一下,有什么看不明白的地方再问我。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询