Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Объясните код пожалуйста, Код поиска  
:(
    Опции темы
Fergus2014
Дата 27.3.2014, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 27.3.2014

Репутация: нет
Всего: нет



Здравствуйте. Есть код поиска, объясните пожалуйста каждую строчку что к чему: 
Код

begin
s1:=AnsiUpperCase(Edit1.Text);
s2:= s1+'яяяя';
Q1.SQL.Text:= sql1;
Q1.SQL.Add('and UPPER(Название таблицы и столбца)>"'+s1+'"');
Q1.SQL.Add('and UPPER(Название таблицы и столбца)<"'+s2+'"');
Q1.Open;
end;

При вводе например буквы "Д" в списке таблицы остаются строчки начинающиеся на "Д" и т.д, остальные исчезают. Вот как это работает ? 

Это сообщение отредактировал(а) Poseidon - 27.3.2014, 21:05
PM MAIL   Вверх
CompWorm
Дата 28.3.2014, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Допеределыватель
***


Профиль
Группа: Участник Клуба
Сообщений: 1689
Регистрация: 6.12.2004
Где: /

Репутация: нет
Всего: 31



так тебе объяснит;ь каждую строчку или принцип работы программы?

для первого покажи объявления, для второго - весь код.

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
superVad
Дата 29.3.2014, 01:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 3
Всего: 15



Fergus2014, запрос конечно странноватый, лучше, наверное, лайк использовать какой нибудь. Но так то вроде все понятно.
PM MAIL   Вверх
Bose
Дата 29.3.2014, 02:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 9
Всего: 51



Цитата(Fergus2014 @  27.3.2014,  17:45 Найти цитируемый пост)
begin // эта строка начинает блок
s1:=AnsiUpperCase(Edit1.Text);  // взять текст из Edit1, привести его к ВЕРХНЕМУ регистру и сохранить в переменной s1
s2:= s1+'яяяя'; // в переменную s2 сохранить значение из переменной s1 плюс 'яяяя'
Q1.SQL.Text:= sql1; // в свойство текст свойства SQL свойства объекта (компонента?) Q1 сохранить то что было в sql1 (переменная или константа строкового типа, скорее всего содержащая sql запрос вида select .... from ... where (какое-то условие) )
Q1.SQL.Add('and UPPER(Название таблицы и столбца)>"'+s1+'"'); // к свойству SQL добавить строку 'and UPPER()..... ' + значение переменной s1 в кавычках
Q1.SQL.Add('and UPPER(Название таблицы и столбца)<"'+s2+'"'); // к свойству SQL добавить строку 'and UPPER()..... ' + значение переменной s2 в кавычках
Q1.Open; // вызвать метод Open объекта Q1 (скорее всего это открытие набора данных)
end;  // эта строка начинает блок 


По сути, этот код изменяет SQL запрос у объекта (dataset-a) Q1 так, чтобы dataset Q1 отоборажал только те записи, у которых значение (Название таблицы и столбца) было больше чем текст введённый в Edit1 И при этом меньше чем "текст в Edit1" + "яяяяя".

PM MAIL WWW Skype   Вверх
Fergus2014
Дата 29.3.2014, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 27.3.2014

Репутация: нет
Всего: нет



Цитата(Bose @ 29.3.2014,  02:46)
Цитата(Fergus2014 @  27.3.2014,  17:45 Найти цитируемый пост)
begin // эта строка начинает блок
s1:=AnsiUpperCase(Edit1.Text);  // взять текст из Edit1, привести его к ВЕРХНЕМУ регистру и сохранить в переменной s1
s2:= s1+'яяяя'; // в переменную s2 сохранить значение из переменной s1 плюс 'яяяя'
Q1.SQL.Text:= sql1; // в свойство текст свойства SQL свойства объекта (компонента?) Q1 сохранить то что было в sql1 (переменная или константа строкового типа, скорее всего содержащая sql запрос вида select .... from ... where (какое-то условие) )
Q1.SQL.Add('and UPPER(Название таблицы и столбца)>"'+s1+'"'); // к свойству SQL добавить строку 'and UPPER()..... ' + значение переменной s1 в кавычках
Q1.SQL.Add('and UPPER(Название таблицы и столбца)<"'+s2+'"'); // к свойству SQL добавить строку 'and UPPER()..... ' + значение переменной s2 в кавычках
Q1.Open; // вызвать метод Open объекта Q1 (скорее всего это открытие набора данных)
end;  // эта строка начинает блок 


По сути, этот код изменяет SQL запрос у объекта (dataset-a) Q1 так, чтобы dataset Q1 отоборажал только те записи, у которых значение (Название таблицы и столбца) было больше чем текст введённый в Edit1 И при этом меньше чем "текст в Edit1" + "яяяяя".

Спасибо огромное!)  
Если я убераю 'яяяя' или оставлю просто ' ' то ничего не работает, я думал что это 'яяяя' фишка дельфи какая то. Q1 sql запрос на вывод из таблицы математиков столбца ФИО в дбгрид, чтобы видно было список из ФИО и как бы поиск по этому списку с помощью кода выше. Т.е. при запросе "Владимир" в списке остаются математики с именами "Владимир" и т.д. 

Это сообщение отредактировал(а) Fergus2014 - 29.3.2014, 11:19
PM MAIL   Вверх
Bose
Дата 29.3.2014, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 9
Всего: 51



Цитата(Fergus2014 @  29.3.2014,  10:12 Найти цитируемый пост)
Если я убераю 'яяяя' или оставлю просто ' ' то ничего не работает, я думал что это 'яяяя' фишка дельфи какая то. 

добавление яяяя - это просто костыль для реализации фильтрации через одно место. В общем это правильнее делать через SQL оператор STARTING или LIKE (что именно будет работать и будет ли, неизвестно, так как ты не указал какую БД используешь).
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0725 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.