Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ricard.net

recordcount negativo

Recommended Posts

Olá galera, estou com um probleminha aparentemente simples mais que não estou conseguindo resolver.utilizo a function :Public Sub abrirDAccess()Dim ConectaAccess As StringDim strArquivo As StringDim strLocal As StringstrArquivo = "Busca.mdb"strLocal = App.PathSet cnxObj = CreateObject("ADODB.connection")'conexão via odbc'ConectaAccess = "Driver={Microsoft Access Driver (*.mdb)};" & _ "Dbq=" & strArquivo & ";" & _ "DefaultDir=" & strLocal & ";" & _ "Uid=Admin;Pwd=;"'conexão via ole dbConectaAccess = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & strLocal & "\" & strArquivo & ";" & _ "User Id=admin; Password=;"cnxObj.Open ConectaAccessEnd Subpara abrir uma conexão com o banco de dados accessE a functionPublic Sub AbrirRecordSetAccess(strSql As String) Set rstObj = CreateObject("ADODB.Recordset") rstObj.ActiveConnection = cnxObj rstObj.Open strSql, cnxObjEnd Subpara abrir e povoar minha record set.Depois faço as chamadasCall abrirDAccessCall AbrirRecordSetAccess("select * from empregados order by username")Call PreencherMSFlexGridonde preenchermsflexgrid()éSub PreencherMSFlexGrid()If rstObj.recordcount > 0 Then MSFlexGrid1.Cols = 4 MSFlexGrid1.ColWidth(0) = 500 MSFlexGrid1.TextMatrix(0, 0) = "Sr. No" For i = 0 To rstObj.fields.Count - 1 MSFlexGrid1.ColAlignment(i) = vbCenter MSFlexGrid1.ColWidth(i + 1) = 1500 MSFlexGrid1.TextMatrix(0, i + 1) = rstObj.fields(i).Name i = i + 1 rstObj.movenext Next MSFlexGrid1.Rows = rstObj.recordcount + 1 i = 1 Do While Not rstObj.EOF MSFlexGrid1.TextMatrix(i, 0) = i MSFlexGrid1.TextMatrix(i, 1) = rstObj(0) MSFlexGrid1.TextMatrix(i, 2) = rstObj(1) MSFlexGrid1.TextMatrix(i, 3) = rstObj(2) i = i + 1 rstObj.movenext LoopElse MsgBox rstObj.recordcount End IfEnd SubEntretando o rstObj.recordcount sempre vem negativo com valor igual a -1.Onde poderia estar o erro??Valeu.,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu, vou tentar aqui!

 

Esse problema ocorre por causa do Cursor utilizada na abertura do recordset. O Cursor padrão do RecordSet quando aberto é o "Forward-Only" (Somente avançar)  que não suporta o uso do RecordCount. Uma maneira de resolver o problema seria mudando o cursor mais ou menos assim :

 

   numregistros = 0    set conn = Server.CreateObject("ADODB.Connection")    conn.open "<String de Conexão>"    set rs = Server.CreateObject("ADODB.Recordset")    sql = "SELECT campo FROM tabela WHERE [condição]"    rs.open sql,conn,1,1    if not rs.eof then numregistros = rs.recordcount    msgbox("Encontrados " & numregistros & " registros.")
B)

<{POST_SNAPBACK}>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.