![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с фильтрацией TTable. [D5, Win2k]
Solod © (2002-05-31 10:30:00)Добрый день, уважаемые Мастера.
Помогите, пожалуйста, разобраться со следующей проблемой.
1. Открываю TTable и устанавливаю фильтр.
2. Открываю Отчёт, в котором TQuery повторяет тот же набор данных, что и в TTable.
3. Закрываю Отчёт, TQuery.Active:=False.
4. В TTable меняю фильтр и при Filtered:=True происходит ошибка.
Причём я не могу понять её природу(try тоже не срабатывает), а компилятор выдаёт состояние регистров CPU(насколько
я понимаю, а я, честно говоря, ничего не понимаю - не дорос ещё).
Ещё интересное замечание: при TTable.Exclusive=False ошибка не выходит.
БД - файлы FoxPro.
Vint (2002-06-04 17:06:00) [21]Попробуй написать так:
Filter:="NOMDOK="+""""+cbNomReport.Text+""""
или попробуй вместо FoxPro использовать dbase или Paradox, хотя бы ради эксперемента, будет вылетать ошибка или нет?
SoloD (2002-06-04 13:00:00) [22]TTable.Exclusive=True с запросом не конфликтует.
А разве запрос на выборку может конфликтовать?
roottim (2002-06-04 12:47:00) [23]>Ещё интересное замечание: при TTable.Exclusive=False ошибка не выходит
а захват таблицы(Exclusive=true)... c запросом разве не конфликтуют?
SoloD (2002-06-04 12:39:00) [24]Ошибку выдаёт Debugger:
"Project C:\Banks.exe faulted with message: "access violation at 0x4de3b711: read of address 0xf1312be8". Process Stopped. Use Step or Run to continue."
и далее информация CPU и всё. Я ничего не понимаю.
SoloD (2002-06-04 12:28:00) [25]И квадратные скобки не помогают.
DmitryS (2002-06-04 12:11:00) [26]Попробуй
Filter:="[NOMDOK]="+chr(39)+cbNomReport.Text+chr(39),
я обычно имена полей всегда закрываю квадратными скобками (для TTable)и все работает без проблем
Johnmen (2002-06-04 11:52:00) [27]Под W2K такое может быть (без предупреждения).
Пройдись с трассировкой, чтобы найти ошибку...
skiph (2002-06-04 11:37:00) [28]Что так просто вылетает без сообщений?
SoloD (2002-06-04 11:27:00) [29]Система ничего не кричит.
Кстати, пробовал chr(39) тот же эффект: ни пользы, ни вреда.
Да ещё, что интересное, ошибка может и не возникнуть, а может возникнуть.
У пользователей она возникает постоянно и просто молча закрывает приложение.
Я ничего не понимаю.
skiph (2002-06-04 10:37:00) [30]Ну если в первый раз проходит, то и во второй должен. А вообще что система кричит?
SoloD (2002-06-04 06:28:00) [31]Да нету у меня фильтра в Инспекторе.
Даже если бы было так, то как бъяснить, что,повторяюсь: "обработчик cbNomReportChange выполняется успешно сколько угодно раз, пока не откроешь отчёт" или,как правильно заметил skiph, отчёт - это запрос.
Бежечаночка (2002-06-03 10:41:00) [32]Так у тебя первый фильтр наверно стоит в Инспекторе при дизайне, поэтому и работает.
SoloD (2002-06-03 09:24:00) [33]Да, отчёт - это запрос. Фильтр тот же.
Более того, обработчик cbNomReportChange выполняется успешно
сколько угодно раз, пока не откроешь отчёт.
skiph (2002-06-03 09:08:00) [34]Я так понимаю под отчетом ты понимаешь запрос. А какое значение фильтра ты устанавливаешь в первый раз?
SoloD (2002-06-03 08:27:00) [35]А почему это проходит в первый раз, когда ещё не открывал отчёт, а во второй раз выдаётся ошибка, да ещё неизвестно какая?
skiph (2002-06-03 06:43:00) [36]Если значение строковое, то нужно его в кавычки брать:
Filter:="NOMDOK="+chr(39)+cbNomReport.Text+chr(39)
SoloD (2002-06-03 05:53:00) [37]То, что Filtered:=False, это само собой. Я так и делаю.
Фильтр простой "Filter:="NOMDOK="+cbNomReport.Text".
Поле NOMDOK строка, длина 6.
И действия эти осуществляю в обработчике cbNomReportChange.
skiph (2002-06-03 04:55:00) [38]Перед изменением фильтра делай Filtered:=False, а уже после изменения - Filtered:=True; - может помочь.
А вообще какой фильтр ставишь?
Solod (2002-06-03 04:15:00) [39]Здравствуйте, с наступлением лета.
Всё таки, помогите, пожалуйста, решить мою проблему.