Субота, 23.11.2024, 12:34
Гость

Мішатронік

Мобільна версія | Додати у вибране  | Мій профіль | Вихід | RSS |
Меню сайту
Наше опитування
Хто ви?

Всього відповідей: 10
Статистика

Онлайн всього: 1
Гостей: 1
Користувачів: 0


Программирование баз данных в Delphi 7: Запись данных в таблицу (Append, TTable,AssignFileFieldByName)

Сегодня мы загрузим в нашу базу данных товары из текстового файла. Этот тактовый файл вы можете скачать здесь.

Создаем новый проект, кидаем на форму компонент TTable, он у нас на закладке DBE*:

Delphi 7: Запись данных в таблицу (Append, TTable, AssignFile, FieldByName)

Затем кладем на форму кнопочку (TButton). Напомню, она у нас на закладке Standart*:

Delphi 7: Запись данных в таблицу (Append, TTable, AssignFile, FieldByName)

Сменим заголовок и идентификатор кнопки. Пусть выглядит кнопка как "Старт", а свойство Name будет равно btnStart.

Затем переключимся на компонент TTable, что бы выбрать у него свойство DatabaseName*:

Delphi 7: Запись данных в таблицу (Append, TTable, AssignFile, FieldByName)

Свойство DatabseName установим в StorePrj, а свойство TableName нужно сделать wares.db.

Теперь пишем обработчик события OnClick кнопочки:

procedure TfrmLoader.btnStartClick(Sender: TObject);
var VF:textfile; s:string;
begin
      Table.Open;

      //связываем файловую переменную (типа дискриптор) с файлом
     AssignFile(VF,'d:\1\wares.txt'); //это разовая программа, поэтому не время тратим
     //на всякие диалоги выбора файлов и прочие "красивости"

     // открываем файл
     Reset(VF);

    //в цикле читаем файл
    while not(eof(VF)) do
    begin
         ReadLn(VF,s); //читаем наименование товара
         Table.Append; // добавляем запись в базу данных
         Table.Fields.FieldByName('name').Value:=s; //записываем в поле
         ReadLn(VF,s); // читаем цены
         Table.Fields.FieldByName('price').Value:=StrToInt(s);
    end;
    CloseFile(VF);
    Table.Close;
end;

Запускаем программу и нажимаем кнопочку "Старт"

Delphi 7: Запись данных в таблицу (Append, TTable, AssignFile, FieldByName)

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

Delphi 7: Запись данных в таблицу (Append, TTable, AssignFile, FieldByName)

Если у вас загруженные товары не показывает, то нужно в процедуре acWaresListExecute строку

CreateMDIChild(copy(SessionParams[i],6,Length(SessionParams[i])-5)+'/wares.db', WaresFields);

заменить нас строку

CreateMDIChild(copy(SessionParams[i],6,Length(SessionParams[i])-5)+'\wares.db', WaresFields);

Программирование баз данных в Delphi 7: Используем SQL-запрос для создания справочника складов (TQuery, select, from, join)

Сегодня мы продолжим создание справочников. На этот раз будет создавать более сложный справочник: "Склады". В отличии от справочника "Товар" он будет связан с другим справочником - "Сотрудники" (employees.db). И так, сначала мы организуем доступ с справочнику сотрудников, аналогично тому, как это мы делали на уроке 8.5.1.- создаем новые событие в TActionList, связываем с меню и туллбаром, в обработчик копируем содержимое обработчика события acWarsList, но в нем открываем файл employees.db.  Если вы не знаете где взять пример, скачайте его здесь. Да, и еще, давайте сразу добавим перевод полей на русский язык, перепишем процедуру TfrmStoreForm.FormCreate:

procedure TfrmStoreForm.FormCreate(Sender: TObject);
begin
    SetLength(WaresFields, 6);

    WaresFields[0].Name:='Id';
    WaresFields[0].Caption:='Код';

    WaresFields[1].Name:='Name';
    WaresFields[1].Caption:='Товар';

    WaresFields[2].Name:='Price';
    WaresFields[2].Caption:='Цена';

    WaresFields[3].Name:='Fio';
    WaresFields[3].Caption:='Фамилия Имя Отчество';

    WaresFields[4].Name:='Address';
    WaresFields[4].Caption:='Адрес';

    WaresFields[5].Name:='Phone';
    WaresFields[5].Caption:='Телефон';
end;

 Вот что в итоге у нас должно получиться:

Delphi 7: SQL-запрос, TQuery, select, from, join

А теперь, воспользовавшись знаниями, полученными на уроке 8.1 создадим базу данных stores.db (склады), со следующими полями:

Поле Тип Назначение
Id Autoincrement Уникальный идентификатор склада
Name String 30 Наименование склада
Storeman Number УИД сотрудника кладовщика

Полученную таблицу заполним чем нибудь, используя Database Desktop. В поле Storeman записываем Id какого нибудь сотрудника (убедимся, что это существующий Id)*:

Delphi 7: SQL-запрос, TQuery, select, from, join

А теперь создаем новую форму. Обзовем ее frmStores. Положим на форму компонент TQuery с закладки BDE, его имя с Query1  исправим на Query:

SQL, TQuery, select, from, join

Так же положим на форму TDataSource и TDBGrid*:

Delphi 7: SQL-запрос, TQuery, select, from, join

Свяжем между собой эти компоненты, как мы это делали на уроке 8.2. В компоненте TQuery свойство DatabaseName установим StorePrj. А вот свойство TableName не ищите, его там нет. Вместо него есть свойство SQL. В его поле редактирования имеется кнопочка с тремя точками*:

Delphi 7: SQL-запрос, TQuery, select, from, join

Нажмем на эту кнопку. У нас вылезет диалог редактирования текста. Введем туда вот такой текст:

select
    stores.id AS Id,
    stores.Name AS Name,
    employees.Fio AS FioStoreman
from stores left join employees on employees.id=stores.storeman

Это мы создали SQL-запрос, или говоря иными словами, мы написали запрос к базам данным на специальном языке запросов, который называется SQL. Слово select в данном тексте означает создание выборки. Эта команда имеет вот такой синтаксис:

select [список полей] from [список таблиц и их соединения]

Поля в списке полей перечисляются через запятую. Синтаксис описания поля такой:

[Имя таблицы].[Имя поля] AS [Имя поля в выборке]

После последнего поля из списка запятая не ставиться.

После слова from у нас идет список участвующих в запросе таблиц. в нашем случае их две stores и employees. Они связаны между собой: поле storeman из таблицы stores однозначно соответствует полю id из таблицы employees. Столбцы таблицы stores  расположены слева, к ним добавляются столбцы таблицы employees. Это правило в данном SQL запросе описывается так:

from stores left join employees on employees.id=stores.storeman

А теперь давайте сделаем так, что бы эту форму можно было открыть из программы. Нам всего то осталось создать новый пункт меню, новый Action, кнопочку туллбара и связать их. Это мы уже умеем.

И, последний штрих, добавляем в раздел uses основного модуля программы имя модуля формы и пишем обработчик вновь экшена acStoresList:

procedure TfrmStoreForm.acStoresListExecute(Sender: TObject);
var frm:TfrmStores;
begin
   frm:=TfrmStores.Create(self);
   frm.Query.Active:=true;
   frm.Show;
end;

Все, запускаем программу, и что же мы видим:

Delphi 7: SQL-запрос, TQuery, select, from, join

 

Форма входа
Пошук
Друзі сайту
Календар
«  Листопад 2024  »
ПнВтСрЧтПтСбНд
    123
45678910
11121314151617
18192021222324
252627282930

Єдина Країна! Единая Страна!