Проблема с числом записей в БД Access

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Gigahard
Бывалый
Бывалый
 
Сообщения: 253
Зарегистрирован: 24.07.2002 (Ср) 11:15
Откуда: Russia

Проблема с числом записей в БД Access

Сообщение Gigahard » 04.04.2003 (Пт) 18:21

Всем привет! У меня возникли некоторые затруднения с БД: В программе 2 формы. 1-ая, просто навигационная, вызывает вторую: Form2.show
Вот листинг второй формы:

Код: Выделить всё
Dim dbTest As Database
Dim dbLocation As String
Dim rsTitles As Recordset


Private Sub Form_Load()
Command1.Caption = “Число записей”

dbLocation = "c:\base.mdb"
Set dbTest = OpenDatabase(dbLocation)
Set rsTitles = dbTest.OpenRecordset("table", dbOpenTable)
End Sub

Private Sub Command1_Click()
MsgBox rsTitles.RecordCount
End Sub


Во второй форме подключена БД.

Так вот в чем собственно проблема: При клике по кнопке, выскакивает MessageBox показывающий кол-во записей в БД. Допустим при запуске программы мы кликаем по кнопке и выскакивает цифра 5. После этого удаляем или добавляем запись в БД, кликаем по кнопке и видим опять цифру 5! Не 4 или 6, а 5!!! Не помогает даже выгрузка формы. Unload Form2. Если потом опять из первой формы загрузить вторую, то по прежнему будет 5!!!
Только при общем перезапуске программы RecordCount отображается правильно! Но это не выход! Как сделать так, чтобы RecordCount обновлялся без перезапуска всей программы???

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 04.04.2003 (Пт) 18:30

Обновлять его в ручную RecordSet.Update и потом RecordSet.ReQuery наверное прокатит.

Gigahard
Бывалый
Бывалый
 
Сообщения: 253
Зарегистрирован: 24.07.2002 (Ср) 11:15
Откуда: Russia

Сообщение Gigahard » 04.04.2003 (Пт) 18:34

RayShade писал(а):Обновлять его в ручную RecordSet.Update и потом RecordSet.ReQuery наверное прокатит.
Не не прокатывает :(

Gigahard
Бывалый
Бывалый
 
Сообщения: 253
Зарегистрирован: 24.07.2002 (Ср) 11:15
Откуда: Russia

Сообщение Gigahard » 04.04.2003 (Пт) 18:49

Я немножко уточню: Записи удаляются/добавляются другой программой. И почему то не происходит переопределения RecordSet.RecordCount при следующей загрузке формы... Ведь по идее в соответствии с кодом Recordset должен переопределятся при каждой загрузке формы!?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 05.04.2003 (Сб) 8:40

Может попробовать Dbtest.Close, а потом опять сразу OpenDatabase?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 05.04.2003 (Сб) 9:01

Попробуй открывать Recordset не как dbOpenTable, а как dbOpenDynaset.
И в любом случае, следует делать .MoveLast перед .RecordCount. Т.е. так:
Код: Выделить всё
Private Sub Command1_Click()
rsTitles.MoveLast
MsgBox rsTitles.RecordCount
End Sub
Lasciate ogni speranza, voi ch'entrate.

Gigahard
Бывалый
Бывалый
 
Сообщения: 253
Зарегистрирован: 24.07.2002 (Ср) 11:15
Откуда: Russia

Сообщение Gigahard » 05.04.2003 (Сб) 16:23

alibek писал(а):Попробуй открывать Recordset не как dbOpenTable, а как dbOpenDynaset.
И в любом случае, следует делать .MoveLast перед .RecordCount. Т.е. так:
Код: Выделить всё
Private Sub Command1_Click()
rsTitles.MoveLast
MsgBox rsTitles.RecordCount
End Sub

Во первых Dynaset мне не нужен, а во вторых, MoveLast и RecordCount никак не связаны...

В общем ситуация такая: При отткрытии БД прогой, она не видит изменений произошедших с БД средствами другой программы.
Т.е. я запускаю прогу, затем запускаю Access, модифицирую БД access'ом, а прога не видит изменений произошедших в БД! Причем доступ к БД не в монопольном режиме!
Как заставить? Видеть???

Gigahard
Бывалый
Бывалый
 
Сообщения: 253
Зарегистрирован: 24.07.2002 (Ср) 11:15
Откуда: Russia

Сообщение Gigahard » 05.04.2003 (Сб) 17:26

GSerg писал(а):Может попробовать Dbtest.Close, а потом опять сразу OpenDatabase?

Спасибо! Все заработало! Да действительно, нужно было просто добавить в Form_Unload()
Код: Выделить всё
dbTest.Close


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 116

    TopList