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不一样啊,所以最好写出代码,要不我理解不了~多谢啦
展开
 我来答
  • 你的回答被采纳后将获得:
  • 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏50(财富值+成长值)
飞向蓝天的童话
推荐于2016-09-07 · TA获得超过941个赞
知道小有建树答主
回答量:283
采纳率:100%
帮助的人:153万
展开全部
在一个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

现场编的,有可能有拼写错误,你先调试一下,有什么看不明白的地方再问我。
追问

这个Update语句最后是不是这个效果啊?

我调整了很多遍以后才变成这样,读取和计算都没有错,一点写入就会报错,提示:标准表达式中数据类型不匹配。是不是就是这个Update语句有问题?借了本讲2008的书,上面写的也不详细,还请大神多指教,感激不尽啊~

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式