下面的四题分别给分,全答对的给多分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

解决方案 »

  1.   

    建议你还是先学习一下SQL语言的相关知识吧
    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
      

  2.   

    1、求平均数最后十行数据.
    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
      

  3.   


    没偏,你说的是判断数据库是不是空的,不是判断某个数据表是不是空的,判断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
    后一种方法效率更高。
      

  4.   

    偶晕
    能不能不用SQL的相关语法啊,因为SQL现在偶还一无所知啊,有没有纯粹的只用VB 代码就能实现上面的四个动作的啊?
      

  5.   

    日,最基本的SQL语法都不会,还做个球的数据库应用啊!
      

  6.   


    那再请问一下,VB中怎样使用SQL ,需要装什么软件啊.望能指点因为刚刚放进去的时候,发现VB里目前用不了SQL语言
      

  7.   


    不需要安装任何东西
    Set rsdata = db.OpenRecordset("select * from tablename")
    里面的"select * from tablename"就是SQL里的一条查询语句,功能是查询tablename表里的所有记录
      

  8.   

    会了一点了,至少目前这个判断数据库空不空可以用SQL了真的太谢谢 CityBird 了
      

  9.   

    再问一个问题:Set rsdata = db.OpenRecordset("select * from tablename") 
    里的 tablename 如果就用一个直接的表名,可以查到
    如果tablename 是一个表达式的话,会提示要求对象,怎么解决啊?