Показать сообщение отдельно
  #3  
Старый 17.10.2019, 06:34
APTEMKA APTEMKA вне форума
Прохожий
 
Регистрация: 28.09.2019
Сообщения: 13
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Guaho
Использовать конструкции вроде DBGrid6.Columns[3] - плохая примета. В случае, если столбец грида будет перемещён (методом перетаскивания) - получите неверный результат. Лучше работать с датасетом, откуда берутся данные для грида (это может быть ADOTable или ADOQuery), следующим образом:
Код:
Query1.FieldByName('Имя_поля_откуда_надо_получить_данные').AsString
Кроме того, использование имён, не несущих информации (вроде "DBGrid6") - дурной тон. Если будете продолжать в том же духе, даже в средней своей программе быстро запутаетесь и будете тратить кучу времени, чтобы вспомнить, что есть что. Правильнее будет давать осмысленные имена с префиксом, например qClients для Query или tClients для Table. Да, это займёт чуть больше времени на написание имён, но существенно облегчит процесс разработки, поверьте! Префиксы к именам Вы используете, но ставьте их не сзади, а спереди, так будет удобнее.
Теперь по сути вопроса. Если часть базы, расположенная на других формах, функционирует нормально, тогда смотрим приведённый код.
Первое: не нужно засовывать в текст запроса конструкции вроде DBGrid6.Columns[3], он этого не поймёт. Введите ещё одну текстовую переменную и сделайте присвоение. Второе: DBGrid6.Columns[3] имеет тип TColumn, с текстовым типом несовместим. Вытащить данные конечно оттуда можно, но это через ...опу, гораздо правильнее делать так, как я описал выше, через датасет.
Третье: закрывать датасет не нужно, он автоматически закроется сам после команды "SQL.Clear".
Четвёртое: тщательно проверьте текст запроса, не допущены ли ошибки в алгоритме (это касается слова "AND" в запросе в разных ситуациях, проверьте!). Оперативная проверка текста запроса с отменой его выполнения такова:
Код:
ShowMessage(DataModule1.FindKlientsQ.SQL.CommaText);
Exit;
Да,здравствуйте,спасибо за замечания,обязательно учту это в следующей своей программе,ибо в этой нет ни желания,ни времени исправлять,с курсовой всегда так
Но у меня такой вопрос:а нельзя ли сделать легче-например,человек вводит в edit'ы фамилию,имя,отчество,в в DbGrid,например,просто выводятся все строки из таблицы с клиентами,удовлетворяющие условию поиска по ФИО?
Ответить с цитированием