下面的四题分别给分,全答对的给多分1.如何得到access数据库中某个表中的最后十行数据,我想求他们的平均值.(不足十个,假如就三个,那就求这三个的平均值)
比如说求rsdata.Fields(6).Value中的后几行数据的平均值(DAO连接方式)2.因为要进行数据的比较,而数据库一开始是空的,如何判断数据库里没有值,就不用比较呢?3.因为数据库中的表,我每天要删掉,但是想通过VB中的指令在删除之前,在指定位置保存为与表的名称一样的EXCEL文件,这个如何写代码啊?4. rsdata.Fields(6).Value这一列中的值,我每次存进新的一行时,都要判断这一列中有没有相同的值,现在用的代码是这样的,如果这一列中的值超过5万个,会感觉到比较时有点慢,有没有快一点的比较方法
.....
Set db = OpenDatabase(App.Path & "\test data" & "\data.mdb") '设定数据库路径
Set rsdata = db.OpenRecordset("数据")
rsdata.MoveFirst
Do While Not rsdata.EOF
If LCase(rsdata.Fields(6).Value) = LCase(Text1.Text) Then MsgBox "这个值已经存在!", vbOKOnly, "重要提示" Exit Sub
End If
rsdata.MoveNext ' Remember to move to the next record.
Loop
比如说求rsdata.Fields(6).Value中的后几行数据的平均值(DAO连接方式)2.因为要进行数据的比较,而数据库一开始是空的,如何判断数据库里没有值,就不用比较呢?3.因为数据库中的表,我每天要删掉,但是想通过VB中的指令在删除之前,在指定位置保存为与表的名称一样的EXCEL文件,这个如何写代码啊?4. rsdata.Fields(6).Value这一列中的值,我每次存进新的一行时,都要判断这一列中有没有相同的值,现在用的代码是这样的,如果这一列中的值超过5万个,会感觉到比较时有点慢,有没有快一点的比较方法
.....
Set db = OpenDatabase(App.Path & "\test data" & "\data.mdb") '设定数据库路径
Set rsdata = db.OpenRecordset("数据")
rsdata.MoveFirst
Do While Not rsdata.EOF
If LCase(rsdata.Fields(6).Value) = LCase(Text1.Text) Then MsgBox "这个值已经存在!", vbOKOnly, "重要提示" Exit Sub
End If
rsdata.MoveNext ' Remember to move to the next record.
Loop
1、对你要查询的那个表按入库时间的逆序排序,然后用Top关键字去前N条记录,用Avg返回平均值
如:select avg(colname) as avgcolname from (select top 10 colname from tablename order by id desc)2、用ADOX对象可以取Access里的所有表,如果ADOX取不到表那就是空库3、用Select Into语句在删除前先将表中的数据导出到Excel
如:select * into [excel 8.0;database=ExcelFileName].[SheetName] from TableName4、在OpenRecordset打开对象时使用查询语句进行查询
如:
Set db = OpenDatabase(App.Path & "\test data" & "\data.mdb") '设定数据库路径
Set rsdata = db.OpenRecordset("select * from tablename where 你的查询条件")
if not rsdata.eof
已经存在
else
不存在
end if
select top 10 a,avg(a)as '平均数' from tabel group by a order by a asc(desc)
2、Adodc1.RecordSource = "select * from tabel"
Adodc2.ConnectionString=“Provider=Microsoft.Jet.OLEDB.4.0;Data SourceApp.Path & "\test data" & "\data.mdb");Jet OLEDB"
Adodc1.Refresh
If Adodc1.Recordset.RecordCount 〈 0 Then
msgbox"数据为空",vbInformation, "提示"
exit sub
end if
...........3、导出excel并保存.
http://topic.csdn.net/u/20080704/15/a26d4841-b8ed-46cb-bf68-f564b07d8a5c.html 4、Adodc1.RecordSource = "select a from tabel where a='a'"
Adodc2.ConnectionString=“Provider=Microsoft.Jet.OLEDB.4.0;Data SourceApp.Path & "\test data" & "\data.mdb");Jet OLEDB"
Adodc1.Refresh
If Adodc1.Recordset.RecordCount > 0 Then
msgbox"数据已经存在",vbInformation, "提示"
exit sub
end if
没偏,你说的是判断数据库是不是空的,不是判断某个数据表是不是空的,判断Access数据库是不是空的可以用我前面提到的方法。
判断某个数据表是不是空的可以用:
Set rsdata = db.OpenRecordset("select * from tablename")
if rs.eof then
tablename里没数据
else
tablename里有数据
end if
也可以用:
set rsdata=db.OpenRecordset("select count(*) as count1 from tablename")
if rs.fields(0)=0 then
tablename里没有数据
else
tablename里有数据
end if
后一种方法效率更高。
能不能不用SQL的相关语法啊,因为SQL现在偶还一无所知啊,有没有纯粹的只用VB 代码就能实现上面的四个动作的啊?
那再请问一下,VB中怎样使用SQL ,需要装什么软件啊.望能指点因为刚刚放进去的时候,发现VB里目前用不了SQL语言
不需要安装任何东西
Set rsdata = db.OpenRecordset("select * from tablename")
里面的"select * from tablename"就是SQL里的一条查询语句,功能是查询tablename表里的所有记录
里的 tablename 如果就用一个直接的表名,可以查到
如果tablename 是一个表达式的话,会提示要求对象,怎么解决啊?