Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
AVRora
Зарегистрирован: 10.01.2002 Сообщения: 7
|
Добавлено: Пн Мар 25 2002 11:39 Заголовок сообщения: Где глюк? (TrueDBGrid+БД Access + ADO) |
|
|
Появилась необъяснимая проблема! Использую БД Access + ADO. Подключаюсь каждый раз к БД программно таким образом (ConnectionString): ConnStrDB = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\DB\system.mdb" _ & ";Persist Security Info=False ;Jet OLEDB:Database Password=aaaaa" На форме лежит TrueDBGrid 6.0 связанные с Adodc1 Заполняю TrueDBGrid так: Dim MainDB As New ADODB.Recordset SQLStrFind = "SELECT * FROM DBOrders WHERE Deleted=False ORDER BY NumOrder DESC"
On Error Resume Next MainDB.Close MainDB.Open SQLStrFind, ConnStrDB, adOpenKeyset Set Adodc1.Recordset = MainDB Adodc1.Refresh On Error GoTo 0
Заголовки в TrueDBGrid реагируют на нажатие мышкой - строка запроса сортирует таблицу в зависимости от поля Private Sub TDBGmain_HeadClick(ByVal ColIndex As Integer) ' Сортировка сетки Select Case ColIndex Case 1 If flgFirstClick Then SQLStrFind = "SELECT * FROM DBOrders WHERE Deleted=False ORDER BY NumOrder ASC" flgFirstClick = False Else SQLStrFind = "SELECT * FROM DBOrders WHERE Deleted=False ORDER BY NumOrder DESC" flgFirstClick = True End If Case ......... End Select On Error Resume Next MainDB.Close MainDB.Open SQLStrFind, ConnStrDB, adOpenKeyset Set Adodc1.Recordset = MainDB Adodc1.Refresh On Error GoTo 0 End Sub
ВНИМАНИЕ ГЛЮК: ПРИ 32-ОМ (!!!) НАЖАТИИ НА ЗАГОЛОВОК (ЛЮБОЙ) СЕТКА ПЕРЕСТАЕТ ОБНОВЛЯТЬСЯ И ПРИ ПОПЫТКЕ ЗАКРЫТЬ И ОТКРЫТЬ БД СНОВА ДАЕТ СООБЩЕНИЕ "Runtime error "- дофига чисел(дофига чисел)" Unspecified error"
Не понял юмора? почему именно на 32 нажатии??? Это глюк ADO или TrueDBGrid или БД? Может кто подскажет? |
|
Вернуться к началу |
|
|
AVRora
Зарегистрирован: 10.01.2002 Сообщения: 7
|
Добавлено: Пн Мар 25 2002 16:40 Заголовок сообщения: Re: Где глюк? - ЕСТЬ НАВОДКА, НО ВОПРОС ОСТАЛСЯ! |
|
|
Нашел возможный глюк: когда открывается форма, то в каталоге с БД system.mdb создается файл system.LDB (если можете подскажите нафига, хотя я понимаю, что это какой-то системный файл ACCESS) Так вот этот файл при каждом нажатии на заголовок увеличивается на 128 байт и при достижении размера 4096 байт переполняется (в его свойствах записано, что он модет быть именно 4096 байт)
и вот откуда берется эта цифра 32 клика!!! 128(байт) х 32(клика) = 4096 (байт) т.е. файл заполняется!!!
КАК ОБНУЛЯТЬ РАЗМЕР ЭТОГО ФАЙЛА??? МОЖЕТ ЕСТЬ СРЕДСТВА? КАКИЕ? |
|
Вернуться к началу |
|
|
AVRora
Зарегистрирован: 10.01.2002 Сообщения: 7
|
Добавлено: Вт Мар 26 2002 13:35 Заголовок сообщения: Re: Где глюк? (TrueDBGrid+БД Access + ADO) |
|
|
!!!! ПОЛУЧИЛОСЬ !!!! ДЕЛЮСЬ С ВАМИ СВОИМИ ИЗЫСКАНИЯМИ В ОБЛАСТИ АДО: (спасибо за подсказку с коннекшен, но тут дело еще и в Adodc)
1. Коннекшн открывать 1 раз при загрузке формы [code] Public MainCnn As New ADODB.Connection Public MainDB As New ADODB.Recordset
Private Sub Form_Load() ... MainCnn.Open ConnStrDB 'Это строка коннекшен ... End Sub [/code]
2. Юзать рекордсет таким образом: [code] Sub RefreshTable() On Error Resume Next: MainDB.Close: Adodc1.Recordset.Close Set Adodc1 = Nothing: Set MainDB = Nothing MainDB.Open SQLStrFind, MainCnn, adOpenKeyset Set Adodc1.Recordset = MainDB 'И НИ В КОЕМ СЛУЧАЕ НЕ ДЕЛАТЬ Adodc1.Refresh On Error GoTo 0
End Sub [/code] |
|
Вернуться к началу |
|
|
|