1 (edited by m.prokhachev 2018-07-05 13:53:01)

Topic: TableGrid и поиск записей

Хочу:
1) имеется TableGrid на форме, который при показе формы автоматом наполняется всеми записями из БД
2) необходимо организовать вывод результатов поиска через EditText (или ComboBox) в этот же грид
3) при этом при очистке результатов поиска необходимо вернуть изначальное наполнение этого TableGrid, так сказать, вернуть как бы в момент показа-запуска формы

Нюансы:
1) изначальное содержимое и результаты поиска могут различаться по количеству и очередности столбцов-полей

Варианты решения:
1) создавать второй грид и подсовывать на форму в момент поиска поверх изначального грида, играясь с Visible обоих гридов, при этом поиск осуществляется через ComboBox (опробовал - работает)
2) ... (дальше пока не пробовал вариант с EditText)
3) в идеале хотелось бы хотя бы тупо присвоить изначальный набор данных или SQL-запрос, его создающий, в буферную переменную, произвести вывод результатов поиска, и при очистке поиска вернуть через буфер прежнее наполнение в TableGrid

P.S. А вообще, хотелось бы больше информации по используемому в MVD языку, компонентам, их свойствам и методам, справка уж очень урезана, если юзать MVD 4.5, то не все свойства и методы описаны и прописаны)

Re: TableGrid и поиск записей

Проще всего это сделать, используя две кнопки с действием Поиск, одна из которых будет приводить грид в первоначальное положение.


Проект с примером

Post's attachments

Attachment icon Employees remark.zip 8.01 kb, 343 downloads since 2018-07-06 

Dmitry.

3 (edited by m.prokhachev 2018-07-09 11:19:50)

Re: TableGrid и поиск записей

Хм... А ведь логично же!  Мог бы и сам додуматься...

То есть на одной форме две кнопки с действием "поиск" поставить - одну собственно на поиск, другую - на возврат в исходное состояние?..

Re: TableGrid и поиск записей

DriveSoft wrote:

Проще всего это сделать, используя две кнопки с действием Поиск, одна из которых будет приводить грид в первоначальное положение.

Возникла проблема: я не могу настроить действие "поиск" на кнопке, так как требуется выбрать те компоненты формы, которые участвуют в поиске... А так как я хочу возвратить грид в исходное (сразу после показа формы) состояние, то мне нет смысла указывать компоненты в принципе...

Выход пока вижу такой: сделать невидимый компонент и не связывать его ни с какими полями таблиц, и просто указать в настройках на кнопке возврата грида в исходное состояние (с действием "поиск"). Но еще не проверял эту версию...

Re: TableGrid и поиск записей

m.prokhachev
Именно так я сделал в примере, который дал выше. Просто добавил на форму невидимый компонент.

Dmitry.

Re: TableGrid и поиск записей

DriveSoft wrote:

m.prokhachev
Именно так я сделал в примере, который дал выше. Просто добавил на форму невидимый компонент.

Ах вот оно чего... А я все думал, нафига он...

Re: TableGrid и поиск записей

Что-то у меня приложение при запуске начало выдавать ошибку с отсылкой на дебаг-окно:

Сигнатура проблемы:
  Имя события проблемы:    APPCRASH
  Имя приложения:    Monitoring.exe
  Версия приложения:    1.0.0.0
  Отметка времени приложения:    5b34ab48
  Имя модуля с ошибкой:    KERNELBASE.dll
  Версия модуля с ошибкой:    6.1.7601.23572
  Отметка времени модуля с ошибкой:    57fd0379
  Код исключения:    0eedfade
  Смещение исключения:    0000c54f
  Версия ОС:    6.1.7601.2.1.0.256.1
  Код языка:    1049
  Дополнительные сведения 1:    a70a
  Дополнительные сведения 2:    a70af4299e524ee78ba3a9ea87cff008
  Дополнительные сведения 3:    a67c
  Дополнительные сведения 4:    a67c877ebe4b58016e0695c79471daeb

Ознакомьтесь с заявлением о конфиденциальности в Интернете:
  http://go.microsoft.com/fwlink/?linkid= … cid=0x0419

Если заявление о конфиденциальности в Интернете недоступно, ознакомьтесь с его локальным вариантом:
  C:\Windows\system32\ru-RU\erofflps.txt

и месседжем:

Exception EListError in module Monitoring.exe at 000BB6E2. List index out of bounds (0).

Не могу понять, в чем дело.

8 (edited by m.prokhachev 2018-07-09 16:04:50)

Re: TableGrid и поиск записей

Переустановил MVD 4.5 - не помогло. А как понять все же, где ошибка - не могу. На код жалоб нет у интерпретатора, на формы и компоненты тоже не жалуется. однако какой-то "лист индекс аут оф баундс" - и хоть об стену убейся. EListError - что-то со списком, но где конкретно - с ходу не понять. Код проверил в местах, где списки используются - вроде на глаз ничего криминального нет... А где она конкретно возникает, на каком этапе - хз.

9 (edited by m.prokhachev 2018-07-10 08:56:27)

Re: TableGrid и поиск записей

Нашел. Согласно этой теме - http://www.delphisources.ru/forum/showt … hp?t=11225 - ошибка была в основном блоке приложения, видимо, игры с выводом в грид трех наборов данных с разным числом колонок играет свою роль... в основном блоке begin...end таки не стоит в динамическом режиме устанавливать ширину столбцов для грида, в который в зависимости от нескольких SQL-запросов выводится разное количество столбцов.

Re: TableGrid и поиск записей

Устанавливать ширину столбцов лучше в событии грида OnChange, также у грида есть свойство Tag, в котором вы можете присваивать числовое значение (в событии кнопки OnClick), на основе этого числового значения можно различать, например от какой кнопки пришел запрос, таким образом устаналивать различные размеры колонок в зависимости от используемой кнопки.


Если не получиться, можете приложить ваш проект, постараюсь помочь.

Dmitry.

Re: TableGrid и поиск записей

Не-не, Дмитрий, всё нормально. Не такой я уж и ламер, представление о прикладном программировании имеются, как и навыки имеются, просто последний раз прогу писал лет 5 назад. Не хватает просто знаний о типовых решениях тех или иных микрозадач.

С выводом в грид разного количества столбцов таки справился тупо путем перестройки БД, нормализовал ее по максимуму. Все-таки правильно структурированная БД - это 80% успеха в написании ПО