Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Работа с данными

Страница: 1 |

 

  Вопрос: Помогите новичку: RecordCount = -1 Добавлено: 23.09.04 11:06  

Автор вопроса:  AleksP
Есть БД на Oracle, хочу написать для нее интерфейс.
Возникла проблемма: не могу подсчитать количество записей в Recordset используя RecordCount, выдает -1.
Из за чего это может быть?
Привожу свой код:
Private Sub Form_Load()
    Dim rst As New ADODB.Recordset
    Dim myConn As New ADODB.Connection
    Dim stConn As String, strSQL As String
    Set myConn = New ADODB.Connection
    stConn = "Provider=OraOLEDB.Oracle;Data Source=WORK;User Id=user;Password=gfd26;"
    myConn.Open stConn
    If rst.State = 1 Then
        rst.Close
        Set rst = Nothing
    End If
    strSQL = "Select * from vnp.goods"
    rst.Open strSQL, myConn, adOpenDynamic, adLockOptimistic
    rst.MoveLast
    rst.MoveFirst
    MsgBox rst.RecordCount
    ' При этом можно нормально пробежать по всем данным
    While Not rst.EOF
        MsgBox rst(0).Value
        rst.MoveNext
    Wend
    rst.MoveFirst
    myConn.Close
End Sub

Еще просьба: поделитесь ссылками где можно почитать про ADODB.

Ответить

  Ответы Всего ответов: 6  

Номер ответа: 1
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #1
Добавлено: 23.09.04 13:28
Исходники по БД Oracle:
http://www.vb.kiev.ua/code/db/VB_Connect_Oracle8i.zip
У ADO есть свой файл help, он в составе mdac, если не ошибаюсь - там примеры на VB самые нормальные по ADODB, ADOX, ADOR :)

Ответить

Номер ответа: 2
Автор ответа:
 Shota



Вопросов: 22
Ответов: 52
 Профиль | | #2 Добавлено: 23.09.04 17:40
Я с этой проблемой сталкивался, проблема в следующей строке:

rst.Open strSQL, myConn, adOpenDynamic, adLockOptimistic

если использовать не это сочетание:

adOpenDynamic, adLockOptimistic

а другое ( не помню точно кажется........ точно только что проверил, работает )

adOpenKeyset, adLockOptimistic

тогда работает...

Ответить

Номер ответа: 3
Автор ответа:
 Shota



Вопросов: 22
Ответов: 52
 Профиль | | #3 Добавлено: 23.09.04 17:44
Почему в твоем случае rst.RecordCount = -1 честно говоря не могу объяснить, но проблема есть и о ней написано в книге:
"Разработка настольных приложений, MS Access 2002"
Автор: Кен Гетц ......... (либо что-то похожее......:)
Кстати отличная книга.... рекомендую.

Ответить

Номер ответа: 4
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #4
Добавлено: 24.09.04 11:25
stConn = "Provider=OraOLEDB.Oracle;Data Source=WORK;User Id=user;Password=gfd26;"
myConn.Open stConn


Может лучше смотрится так:

myConn.ConnectionString = "Provider=OraOLEDB.Oracle;Data Source=WORK;User Id=user;Password=gfd26;"

? В правильности ConnectionString ты уверен?

Потом, друг другу противоречат строки:
Dim myConn As New ADODB.Connection 'и
Set myConn = New ADODB.Connection
т.е. либо вторую стоку убери, либо New в первой строке.

Ответить

Номер ответа: 5
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #5
Добавлено: 24.09.04 11:28
Едем дальше: зачем это надо было?
If rst.State = 1 Then
  rst.Close
  Set rst = Nothing
End If

Ты же не сообщал ещё rst о твоем соединении
rst.ActiveConnection = myConn

Ответить

Номер ответа: 6
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #6
Добавлено: 24.09.04 11:32
дальше текст тоже дико глючный, короче твой пример легче по полной будет переписать, живого места от старого примера не останется :) Кстати, работа с Oracle в данном случае не отличается от работы с Access кроме строки подключения с базой, т.что смотри другие примеры работы с ADODB и пиши, пиши, пиши...

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам