大家好!
   我用的是access数据库,由ado连接到DataGrit,数据在DataGrit中显示,我现在想将数据用排序,怎么做啊?
   我这样写不行啊
     sSOL = "select * from 学生信息汇总 order by 学号 desc"
     Set rs = cn.Execute(sSOL)
   还有一个问题,为什么一用update,就提示sub or function not defined 啊.   还有不用updata,用ado自带的更新命令怎么写啊,是像这样Adodc1.reflesh 吗?   刚接触VB,SQL语句也不熟,请大家帮忙,谢谢!   

解决方案 »

  1.   

    每次调用DataGrit也要刷新DataGrit.reflesh。只刷新Adodc1.reflesh 也不能显示即是数据
      

  2.   

    运行后,在DataGrid3中数据显示如下
    学号   姓名   性别   年龄   班级   英语   程序设计
     2     .........................
     4    ...................................
     5...........
     6...........
     1.........
     3..........
    现在想让其按学号排列,,我看了一下,再数据库中的表"学生信息汇总"也是乱序,和DataGrid3中显示一样
    我用单独的SQL语句 select * from 学生信息汇总 order by 学号 desc
    可以实现排序,单为什么在程序里就不行呢?
      

  3.   

    我这样写不行啊
         sSOL = "select * from 学生信息汇总 order by 学号 desc" 
         Set rs = cn.Execute(sSOL) 是不行。你这样写得到是行集合。     sSOL = "select * from 学生信息汇总 order by 学号 desc"
        rs.Open sSOL, cn, 3, 3
        Set DataGrid1.DataSource = rs
      

  4.   

    我试了你得方法,但运行后,DataGrid中的数据变成空的了还有 rs.Open sSOL, cn, 3, 3 
    这一句中后面的"3,3"是什么作用啊在数据库中表里的数据是按顺序排列的
    通过ado连接的DataGrid上就是上面的样子?怎么会这样呢?   我是这样写的:
          sSOL = "select * from 学生信息汇总 order by 学号 desc"
          rs.Open sSOL, cn, 3, 3
          Set DataGrid3.DataSource = rs
          DataGrid3.Refresh
        不加DataGrid3.Refresh这句,没有任何反映,加上后,DataGrid中的数据就便为空了
         数据库中表里的数据不变    不知为什么,现在表中的数据不能反映到DataGrid中了
      

  5.   

    Set DataGrid3.DataSource = Nothing
    Set DataGrid3.DataSource = rs 两行即可刷新DataGrid(Refresh)
      

  6.   

    Set DataGrid3.DataSource = Nothing 
    Set DataGrid3.DataSource = rs 我把它们放到了Private Sub Form_Load()里,DataGrid3里的数据清空了
    但ado里的数据映射不到Datagrid3里啊再把Set DataGrid3.DataSource = Nothing 注释掉
    DataGrid3中又显示原来的乱序数据了为什么通过ado数据库中的数据映射不到DataGrid3中了呢?还有 rs.Open sSOL, cn, 3, 3  
    这一句什么用啊?
    这一句中后面的"3,3"是什么作用啊?
      

  7.   

    3,3是常数
    第一个是锁的类型
    第二个是说你用的是SQL查询,而不是使用表或存储过程,也就是相当于AdCmdText
      

  8.   

    '工程引用Microsoft ActiveX Data Objects 2.5 Library
    '添加 DataGrid1Option Explicit
    Public conn As New ADODB.Connection
    Public rs As New ADODB.Recordset
    Dim db$, Appdisk$, sSQL$
    Private Sub Form_Load()
       Appdisk = IIf(Right(Appdisk, 1) = "\", App.Path, App.Path & "\")
       db = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & Appdisk & "你的数据库名.mdb"
       conn.CursorLocation = adUseClient  '这行必需加上
       conn.Open db
       sSQL = "select * from 学生信息汇总 order by 学号 desc"
       rs.Open sSQL, conn, adOpenKeyset, adLockPessimistic
       'rs.Open sSOL, cn, 3, 3  这行与上面的是一样的
       Set DataGrid1.DataSource = rs
    End Sub
      

  9.   

    问题解决了
    谢谢Sam Liu
    也谢谢of123和泰山_抛砖引玉不过小弟还有几处不明白
    '工程引用Microsoft ActiveX Data Objects 2.5 Library Option Explicit 
    ...........Private Sub Form_Load() 
       Appdisk = IIf(Right(Appdisk, 1) = "\", App.Path, App.Path & "\") 
    ..............
       conn.CursorLocation = adUseClient  '这行必需加上 
    ................
       rs.Open sSQL, conn, adOpenKeyset, adLockPessimistic 
       'rs.Open sSOL, cn, 3, 3  这行与上面的是一样的 
    ...........
    End Sub 就这几句,什么作用?泰山说
    3,3是常数 
    第一个是锁的类型 
    第二个是说你用的是SQL查询,而不是使用表或存储过程,也就是相当于AdCmdText什么是锁?有什么用?
    我用了SQL,那么AdCmdText就是指adodc控件的commandType吧,我设置时选的是2-adCmdTable,
    recordSourse选的是表名.在这里和   rs.Open sSQL, conn, adOpenKeyset, adLockPessimistic 
       'rs.Open sSOL, cn, 3, 3 这些语句有冲突吗?
      

  10.   

    程序运行后
    DataGrid里的数据就是乱序,是什么引起的呢?
    DataGrid通过adodc与Access数据库相连之前顺序是正确地,我删除了其中两条记录,之后又加上了
    加上的数据就排在原来数据后面显示在DataGrid中了,但我看表里的数据仍是正常顺序啊是什么原因使DataGrid中的数据乱序了呢?是因为我删除后又添加吗?