Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Рассмотрим первую часть руководства





1. Для реализации поиска по наборам данных будем использовать отдельную форму. Поэтому создаем отдельную форму, выбрав в меню File -> New -> Form или нажав кнопку на панели инструментов

 

2. Для вызова (отображения) формы поиска и ряда других возможностей используем падающее меню на главной форме, т.е. компонент MainMenu (класс TMainMenu). Размещаем его на форме, в контекстном меню выбираем команду «Menu Designer» и в редакторе создаем расположение пунктов и подпунктов главного меню на свое усмотрение

 

3. Создаем для пункта меню N3 «Поиск» процедуру-обработчик события OnClick, в которую записываем программный код по отображению созданной формы Form4, предварительно подключив модуль Unit4 к модулю Unit1

 

4. Размещаем на новой форме необходимые компоненты

Чем больше возможностей поиска будет реализовано (поиск по полям из разных таблиц; по полям, принадлежащим разным типам данных; поиск по подстроке или всей строке; поиск в наборе данных и т.д.), тем более весомой будет смотреться реализация КП!

 

5. На модуле данных размещаем невизуальные компоненты:

§ набор данных FIND (класс TADOQuery);

§ источник данных DSFIND (класс TDataSource).

 

 

6. Далее, выполняем:

§ связываем набор данных с БД через свойство Connection;

§ в свойство SQL заносим примерный многотабличный запрос;

§ временно активируем набор данных. Эти два пункта необходимы для запроса полей в визуальную таблицу;

§ связываем источник данных DSFIND с соответствующим набором данных FIND;

§ связываем визуальную таблицу на форме с источником данных, не забыв при этом предварительно прописать доступность соответствующего модуля данных;

§ запрашиваем поля в таблицу cxGrid1DBTableView1, нажав на кнопку Retrieve Fields; переименовываем их, удаляем или скрываем ненужные и т.д.;

§ деактивируем примерный набор данных, т.к. точный набор данных все равно будет формироваться динамически.

 


7. Для организации поиска записей создаем процедуру-обработчик события OnClick у кнопки Button1 «Начать поиск», которая сработает после нажатия на кнопку, и в нее записываем следующий программный код для создания и отправки динамического запроса к БД с целью формирования набора данных FIND.

Текст данного динамического запроса на языке T-SQL строится с учетом данных, введенных на экранной форме.

 

Label1.Visible:=false; with DM do begin if CheckBox1.Checked or CheckBox2.Checked then begin FIND.SQL.Clear; FIND.SQL.Add('select * from T1, T2, T3'); FIND.SQL.Add('where (T1.i1=T2.i1) and (T2.i3=T3.i3)'); end else FIND.Close; if CheckBox1.Checked then if CheckBox3.Checked then FIND.SQL.Add('and p1 like '+#39+'%'+Edit1.Text+'%'+#39) else DM.FIND.SQL.Add('and p1='+#39+Edit1.Text+#39); if CheckBox2.Checked then if CheckBox3.Checked then FIND.SQL.Add('and p3 like '+#39+'%'+Edit2.Text+'%'+#39) else FIND.SQL.Add('and p3='+#39+Edit2.Text+#39); if CheckBox1.Checked or CheckBox2.Checked then begin FIND.SQL.Add('order by t1.i1, t3.i3'); FIND.Open; if FIND.IsEmpty then Label1.Visible:=true; end; end;

 

Необходимо понимать, что именно делает та или иная строка, тот или иной оператор процедуры-обработчика.

 

8. Результат работы приведенного запроса может выглядеть следующим образом:

 


9. С целью реализации поиска по дате в курсовом проекте:

§ размещаем один (или несколько) компонентов DataTimePicker с вкладки Win32 для того, чтобы не вводить дату (даты) вручную, а воспользоваться календарем;

 

§ в свойство Format вводим значение, например, dd/MM/yyyy, т.е. формат даты, привычный для России (этот шаг возможно пропустить);

 

§ в процедуру-обработчик добавляем аналогичный следующему программный код:

 

var fSTR:TFormatSettings; begin ... fSTR.DateSeparator:='-'; fSTR.ShortDateFormat:='yyyy-mm-dd'; DM.FIND.SQL.Add('and (data_posadki>=' + #39 + DateToStr(DateTimePicker1.date, fSTR) + #39 + ')'); DM.FIND.SQL.Add('and (data_posadki<=' + #39 + DateToStr(DateTimePicker2.date, fSTR) + #39 + ')'); ... end;

 

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

 

При получении запроса СУБД Microsoft SQL Server воспринимает дату в международном формате и с дефисами в качестве разделителей, поэтому при реализации поиска по дате необходимо использовать переменную типа TFormatSettings. С помощью переменной fSTR мы меняем формат даты на международный формат, меняем разделитель между месяцем и числом, месяцем и годом на дефис.

 

Кроме того, СУБД Microsoft SQL Server воспринимает дату как строковое значение, записанное в апострофах, поэтому при формировании текста динамического запроса мы записываем символы #39 слева и справа от даты, приведенной к международному формату.


Date: 2015-07-22; view: 518; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию