Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка Builder 2курс.doc
Скачиваний:
4
Добавлен:
16.11.2019
Размер:
1.26 Mб
Скачать

7. 2. Задание

1. Создайте приложение, позволяющее просматривать все поля из таблицы Country c использованием компонента  TQuery.

2. Создайте приложение, позволяющее выполнять запросы, загружая их с диска, т.е. запросы записаны в виде текстовых файлов.

3. Создайте приложение с использованием параметрического запроса.

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

5. Создайте приложение, позволяющее выполнить запрос,  возвращающий  список таблиц БД и открывает для просмотра выбранную в списке таблицу.

7. 3. Ход выполнения работы

Задание №1

1. Откройте новое приложение.

2. В меню File выберите  команду New. На вкладке New выберите DataModule. Поместите на модуль  компоненты   TQuery, TDataSource.

3. В свойство DatabaseName  объекта TQuery установите значение используемого алиаса, в качестве значения свойства SQL введите оператор SQL, например,  Select * from Country. В свойстве Name введите, например, CountryQuery.

4. Присвойте свойству Active компонента   TQuery значение True.

5. В свойстве DataSet  компонента TDataSource выберите из списка имя запроса (CountryQuery).

6. На форму поместите компонент  TDBGrid  TDBNavigator. Чтобы источник данных был доступен, включите в основную форму  модуль данных, выполнив команду Include Unit Hdr..  из менюFile.

7. Установите значения в свойствах DataSource для сетки и для навигатора.

8. Для навигатора, используя свойство VisibleButtons, оставьте кнопки для перемещения на первую, следующую, предыдущую и последнюю запись.

9. Запустите приложение на выполнение.

Задание№2

1. Отройте новое приложение.

2. Откройте окно модуля данных. Поместите на него компоненты TQuery, TDataSourse. Присвойте модулю данных имя DMod.

3. Установите в свойстве Name  компонента TQuery значение CountryQuery.

4. Установите в свойстве DataSet  компонента TDataSource значение CountryQuery, в свойстве Name –значение CountrySource.


 

5. В основную форму  поместите  компонент  TPanel. На панели  разместите пять кнопок компонента TBitBtn с соответствующими именами :bbLoad, bbLoad2, bbpickA, bbPickB, bbPickC и подписями: Load, Load2, A, B, C. Чтобы поместить на кнопку графическое изображение надо воспользоваться свойством Glyph, щелкнуть в конце строки свойства и открыть окно Picture Editor, затем в окне редактора нажать кнопку Load, загрузить нужное изображение из папки Borland Shared\Images\Buttons.

6. Ниже разместите объект TDBGRid и объект TOpenDialog.

7. В свойстве DataSource  объекта TDBGrid  выберите из списка  значение DMod->CountryQuery.

8. Для объекта TOpenDialog  в свойстве Filter с помощью редактора введите имя фильтра SQL  и сам фильтр  -    *.txt (или любое расширение, которое вы будете использовать для текстовых файлов с инструкцией SQL)   В результате в списке будут отображаться только файлы с расширением *.txt.

9. С помощью программы Блокнот создайте два текстовых файла с расширением .txt :

Select * from  country where Name like '%ia';

 

Select * from country where name like '%c%';

 

10. В модуле данных в редакторе кода поместите  методы  RunQuery  RunQuery2, позволяющие загрузить файлы с диска.

void TDMod::RunQuery(TStringList *StringList)

{

  CountryQuery->Close();

  CountryQuery->SQL = StringList;

  CountryQuery->Open();

}

 

void TDMod::RunQuery2(AnsiString S)

{

  CountryQuery->Close();

  CountryQuery->SQL->Clear();

  CountryQuery->SQL->LoadFromFile(S);

  CountryQuery->Open();

}

Функция LoadFromFile позволяет с помощью одной команды загрузить весь текстовый файл в процессе выполнения программы.

11. Также в модуле данных поместите метод выбора второй строки запроса в зависимости от выбранной кнопки : А, В, С.

void TDMod::SelectItems(AnsiString S)

{

   CountryQuery->Close();

   CountryQuery->SQL->Clear();

   CountryQuery->SQL->Add("Select * from Country");

 

   switch (S[1])

   {

     case 'A':

       CountryQuery->SQL->Add("where name like 'A%'");

       break;

 

     case 'B':

       CountryQuery->SQL->Add("where name like 'B%'");

       break;

 

     case 'C':

       CountryQuery->SQL->Add("where name like 'C%'");

       break;

   }

   CountryQuery->Open();

}

//******

Поместите объявление функций в заголовочный файл в раздел public

void SelectItems(AnsiString S);

    void RunQuery(TStringList *StringList);

    void RunQuery2(AnsiString S);

 

12. Создайте процедуры обработки события нажатия кнопок. Для кнопки bbLoad:

void __fastcall TForm1::bbLoadClick(TObject *Sender)

{

  if (OpenDialog1->Execute())

  {

    TStringList *StringList = new TStringList();

    StringList->LoadFromFile(OpenDialog1->FileName);

    DMod->RunQuery(StringList);

    StringList->Free();

  }

}

Для кнопки bbLoad2:

void __fastcall TForm1::bbLoad2Click(TObject *Sender)

{

  if (OpenDialog1->Execute())

    DMod->RunQuery2(OpenDialog1->FileName);

}

Для трех кнопок : A, B, C  создайте одну и ту же процедуру нажатия кнопки:

void __fastcall TForm1::bbPickAClick(TObject *Sender)

{

  TComponent *C = (TComponent *)Sender;

    switch (C->Tag)

  {

    case 65:

      DMod->SelectItems("A");

      break;

    case 66:

      DMod->SelectItems("B");

      break;

    case 67:

      DMod->SelectItems("C");

      break;

  }

}

13. Запустите приложение. Убедитесь в работоспособности приложения.

Задание №3

1. Откройте новое приложение.

2. Введите в модуль данных (DMod)  компоненты  TQuery, TDataSource.

3. В форму компоненты TDBGrid   и  TTabSet. Компонент TTabSet  расположите в нижней части формы, установите в свойстве Align aBottom. Для компонента TDBGrid в свойстве Align установите значение aClient.

4. Свяжите элементы управления данными и присвойте свойству запроса DatabaseName значение псевдонима.

5. Заполните вкладки с буквами алфавита от A до Z , если будете использовать таблицу Country, или буквами русского алфавита , если будете использовать таблицу Country_r.

В свойстве Tabs щелкните в конце строки и вызовите окно редактора. Последовательно введите символы, которые будут отображаться на вкладках.

6. Введите в свойстве SQL  компонента TQuery следующую строку:

Select * from Country where Name like  :NameStr.

7. В модуль данных поместите метод

void TDMod::NewParamQuery(AnsiString S)

{

  CountryQuery->Close;

  CountryQuery->Prepare;

  CountryQuery->ParamByName(“NameStr”)->AnsiString=S;

  CountryQuery->Open();

}

8. В форме создайте две процедуры обработки события OnChange  компонента TTabSet   и события OnShow  компонента TForm.

void __fastcall TForm1::FormShow(TObject *Sender)

{

  DMod->NewParamQuery("A%");

}

//---------------------------------------------------------------------------

void __fastcall TForm1::TabSet1Change(TObject *Sender, int NewTab,

      bool &AllowChange)

{

  AnsiString S(UpperCase(TabSet1->Tabs->Strings[NewTab]) + "%");

 

  DMod->NewParamQuery(S);

}

//---------------------------------------------------------------------------

 

9. Запустите приложение на выполнение. Убедитесь в работоспособности приложения.

 

Задание №4

1. Откройте новое приложение. Скопируйте в свой каталог таблицу Animals  (создайте псевдоним , если он не существует) .

2. Поместите на модуль данных (DMod) компоненты TQuery  (AnimalsQuery), TDataSource.

3. Для объекта  TQuery установите в свойстве DatabaseName значение используемого алиаса, в свойстве Name значение AnimalsQuery, в свойстве SQL введите с помощью редактора:

Select  * from Animals

   where

    Animals.”Size”  >  :Size  and

   Animals.”Weight” > :Weight

4. Для объекта DataSource установите в свойстве Name значение  AnimalsDataSource, в свойстве DataSet выберите из списка AnimalsQuery.

5. Поместите на форму компонент  TDBGrid,  2 компонента TListBox, TBBImage. Разместите их как показано на рисунке

6. Также поместите на форму два компонента Label, чтобы ввести надписи Size  и Weight.

7. Включите модуль данных в основную форму.

8. Для объекта TDBImage установите значение свойства DataSource , выбрав из списка, и введите в свойство DataField значение BMP (так называется поле в таблице).

9. Для объекта TDBGrid определите источник данных, выбрав из списка.

10. В модуле данных (DMod)  поместите метод для выполнения условия для двух операторов:

void TDMod::RunQuery(int Box1, int Box2)

{

   AnimalsQuery->Close();

   AnimalsQuery->Prepare();

   AnimalsQuery->Params->Items[0]->AsInteger=Box1;

   AnimalsQuery->Params->Items[1]->AsInteger=Box2;

    AnimalsQuery->Open();

}

11.     Для формы определите события OnCreate:

void __fastcall TForm1::FormCreate(TObject *Sender)

{

  int i;

  AnsiString S;

  for (i=0; i<40; i++)

  {

    S=i;

    ListBox1->Items->Add(S);

    ListBox2->Items->Add(S);

   }

   ListBox1->ItemIndex=0;

   ListBox2->ItemIndex=0;

}

Также для формы определите событие OnShow:

void  __fastcall TForm1::FormShow(TObject *Sender)

{

  DMod->RunQuery(0,0);

}

12. В форме для обоих списков для события OnClick поместите следующую процедуру:

void  __fastcall TForm1::ListBox1Click(TObject *Sender)

{

      DMod->RunQuery( ListBox1->Items->Strings[ListBox1->ItemIndex].ToInt(),

                          ListBox2->Items->Strings[ListBox2->ItemIndex}.ToInt());

}

13. Запустите приложение на выполнение. Убедитесь в работоспособности приложения.

Задание №5

1. Откройте новое приложение

2. Поместите на форму следующие компоненты, как показано на рисунке:

TListBox, TQuery, TDataSource, TDBGrid, TMainMenu, (TMenuItem)

3. Определите свойства для объектов:

TQuery –в свойстве DatabaseName установите алиас BCDEMOS, в свойстве Name установите значение FormatQuery, в свойстве SQL select * from :Table

TDataSource –в свойстве Name –dsFormat, в свойстве DataSet –FormatQuery.

TDBGrid – в свойстве DataSource –dsFormat, в свойстве Align –значение   alClient

TList – установите в свойстве Align –значение   alLeft

4. Для компонента TMainMenu установите в свойстве Items StringTrick1

5. Для события OnCreate формы создайте процедуру. в которой формируется список таблиц БД и этим списком заполняется объект TListBox:

void __fastcall TForm::FormCreate(TObject *Sender)

{

   Session->GetTableNames(FormatQuery->DatabaseName, “ “, False, False, ListBox1->Items);

}

6. Затем необходимо создать метод обработки события ListBox1.OnClick:

 

void __fastcall TForm1::ListBox1Click(TObject *Sender)

{

  AnsiString S = ListBox1->Items->Strings[ListBox1->ItemIndex];

  S = Format("Select * from %s", OPENARRAY(TVarRec, (S)));

  Caption = S;

 

  FormatQuery->Close();

  FormatQuery->SQL->Clear();

  FormatQuery->SQL->Add(S);

  FormatQuery->Open();

}

Добавьте также код метода GetQuery:

AnsiString GetQuery(AnsiString S1, AnsiString S2, int Value)

{

  return Format("Select * from %s where %s = %d", OPENARRAY(TVarRec, (S1, S2, Value)));

}

По событию OnClick:

void __fastcall TForm1::StringTrick1Click(TObject *Sender)

{

  Caption = GetQuery("Customer", "CustNo", 42);

}

6.        Запустите приложение. Убедитесь в его работоспособности.