小弟是新手,对vb还不熟悉,有两个问题想请教各位高手!小弟的程序中有以下代码:
Private Sub connSer_Click()Set cn = New ADODB.Connection
cn.ConnectionString = "Driver={SQLServer};Server=" & loginSer.servName & ";UID=" & loginSer.userName & ":PWD=" & loginSer.userPwd & ";Database=" & loginSer.dbNamecn.Open
Set rst = New ADODB.Recordset
Set rst = cn.Execute("SELECT * FROM GPSInfo")While rst.NextRecordset()
longitude = rst!longitude
latitude = rst!latitude
speed = rst!speed
WendPrint longitude
Print latitude
Print speedEnd Sub问题一:目的是从loginSer窗体中获得由servName,userName,userPwd和dbName几个文本框中填入的字符串,然后由这个几个字符串来决定去那个数据库中取数据!但是老是报错说:参数不可选.那该怎么改了?如果我使用指定的方式来访问数据库的话是可以取到数据的,比如说如下代码:cn.ConnectionString = "DSN=GIS;UID=sa;PWD="
问题二:代码:
While rst.NextRecordset()
longitude = rst!longitude
latitude = rst!latitude
speed = rst!speed
Wend
的目的是获得数据库中最后一条数据记录.报错为实时错误'91',对象变量或'with'块变量未设置.我去查了msdn,看不太明白,所以就跑来这里请教该如何处理了!

解决方案 »

  1.   


    问题一:
    loginSer你这是什么?!问题二:While not rs.Eof()
    longitude = rst!longitude
    latitude = rst!latitude
    speed = rst!speed
    rs.MoveNext
    Wend
      

  2.   

    问题二如果仍然有错误,请照此方法改:Set rst = New ADODB.Recordset
    rst.Open "SELECT * FROM GPSInfo", cn
      

  3.   

    呵呵,感谢楼上老大的回复,loginSer是一个窗体啊!上面的程序是在Map1窗体中实现的.问题二的解决方案等我试一下再来回复哈!
      

  4.   

    问题2,如果你只想要最后一条记录的话可以rs.movelast
    longitude = rst!longitude
    latitude = rst!latitude
    speed = rst!speed
      

  5.   

    昨天电脑坏了,所以现在才上来!
    我用rst.moveLast是了一下.系统报错:行集不支持反向提取.
    使用如下代码可以解决:
    While not rs.Eof()
    longitude = rst!longitude
    latitude = rst!latitude
    speed = rst!speed
    rs.MoveNext
    Wend253两位兄弟了!