Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема с фильтрацией TTable. [D5, Win2k]


Страницы:   1 2

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]

Здравствуйте, с наступлением лета.
Всё таки, помогите, пожалуйста, решить мою проблему.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо