Среда, 22.11.2017, 01:57
Приветствую Вас Гость

Не ошибается тот, кто ничего не делает.
Но и ничего не делать - ошибка.

Эмиль Кроткий

Меню сайта
Категории раздела
База данных "Склад" [14]
Статьи, связанные с программированием баз данных
Форма входа

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0


















Тиц
Главная » Статьи » Базы данных » База данных "Склад"

Delphi. Урок 1.8. Программирование баз данных в Delphi - создаем формы прихода продуктов на склад.
Содержание

Урок 1.1. Пишем программу складского учета.
Будем писать программу учета продуктов на складе по средней цене прихода. А для этого нам нужно научиться работать с базами данных. Начнем работу с создания базы в MS Access 2007.

Урок 1.2. Создаем главную форму программы склад.
На этом уроке мы создадим главную форму для нашего склада. Создадим подключение, к базе, используя компонент TADOConnection. Используемые компоненты ( TADOConnection ).

Урок 1.3. Создаем главную форму программы склад.
На этом уроке мы продолжим создание главной формы для нашего склада. Разместим основные компоненты, создадим меню... Используемые компоненты (TADOTable, TMainMenu).

Урок 1.4. Создаем подчиненные формы для справочников программы склад.
На этом уроке мы создадим форму для справочника "Единицы измерения"  нашего склада. Используемые компоненты (TButton, TDBGrid, TDataSource ).

Урок 1.5. Создаем подчиненные формы для справочников программы склад.
На этом уроке мы создадим форму для справочника «Категории продуктов» и «Поставщики»  нашего склада. Используемые компоненты (TButton, TDBGrid, TDataSource ).

Урок 1.6. Создаем подчиненные формы для справочников программы склад.
На этом уроке мы создадим форму для справочника «Продукты»  нашего склада c использованием поле Lookup  из других таблиц. Используемые компоненты (TButton, TDBGrid, TDataSource ).

Урок 1.7. Создаем формы прихода продуктов на склад.
На этом уроке мы создадим формы прихода продуктов на склад. Приход продуктов будет состоять из трех форм. В первой мы будем хранить данные о приходе. Во второй, данные о продуктах для каждого прихода. Третья – форма для выбора продуктов. Используемые компоненты (TButton, TDBGrid, TADOTable, TADOQuery, DataModule).

Урок 1.8. Создаем формы прихода продуктов на склад.
На этом уроке мы создадим вторую форму,  в которой будут отражаться данные о продуктах для каждого прихода. Используемые компоненты (TButton, TDBGrid, TADOTable, TADOQuery, DataModule, TDateTimePicker, TDBLookupComboBox).

Урок 1.9. Создаем формы прихода продуктов на склад.
На этом уроке мы создадим последнюю форму для прихода продуктов. В  ней  будет происходить   выбор продуктов прихода. Используемые компоненты (TButton, TDataSource, TDateTimePicker, TDBLookupComboBox, TDBEdit).

Урок 1.10. Программирование баз данных в Delphi - создаем формы прихода продуктов на склад.
На этом уроке мы напишем процедуры для обработки событий для наших форм прихода, созданных на уроках 1.7. – 1.9.

Урок 1.13. Программирование баз данных в Delphi (Создаем модуль печати данных о приходе и расходе).
На этом уроке мы реализуем  печать данных прихода, расхода и состояния склада.  Печать будем реализовывать через MS Excel, то есть это будет не совсем печать, а экспорт данных в MS Excel, а там пользователь может сам выбрать, печатать или сохранить отчет. В начале приготовим шаблоны  MS Excel, в которые будем выводить отчеты

Урок 1.14. Программирование баз данных в Delphi (Создаем модуль для сжатия и восстановления базы данных).


Урок 1.8.

Программирование баз данных в Delphi - создаем формы прихода продуктов на склад. 

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

Программирование баз данных в Delphi - создаем формы прихода продуктов на склад.

Приступим к созданию  формы.

Создаем новую форму File->New->Form –Delphi

В инспекторе объектов  устанавливаем следующие свойства для новой формы

Name -> Form_prihod_prod;

Visible->False;

 

Сохраните модуль с именем prihod_prod.

Пропишем uses general, prihod, unit_dm; после раздела implementation в программном модуле unit prihod_prod.

А программном модуле unit general главной формы пропишем Uses ed_izmer, product_group, postav_ik, products, prihod, prihod_prod;

А программном модуле unit prihod формы прихода (form_prihod) пропишем uses general, unit_dm, prihod_prod;

Далее размещаем на форме следующие компоненты

Три кнопки TButton, компонент  TEdit и пять компонентов TLable из вкладки Standart

В инспекторе объектов для Button1 устанавливаем свойство  Caption  -> Новая запись;

для Button2 устанавливаем  свойство  Caption  -> Удалить запись;

для Button3 устанавливаем  свойство  Caption  -> Закрыть;

для Edit1  устанавливаем  свойство  Name-> docum_number,  NumbersOnly->True;

для Label1 устанавливаем  свойство  Caption ->  Документ номер;

для Label2 устанавливаем  свойство  Caption -> от;

для Label3 устанавливаем  свойство  Caption -> Поставщик;

для Label4 устанавливаем  свойство  Caption -> Итого на сумму

для Label5 устанавливаем  свойство  Caption -> руб.

 

Из вкладки Win32, компонент TDateTimePicker

 В инспекторе объектов для него устанавливаем свойство Format -> dd.MM.yyyy, Time -> 0:00:00;

 

Далее из панели компонентов dbGo (ADO) размещаем на форме компоненты два  TADOTable и TADOQuery.

для ADOTable1 в инспекторе объектов  свойство Name записываем table_copy_prihod,

Connection устанавливаем -> form_general.ADOConnection1

 TableName-> prihod,

Active-> True;

для ADOTable2 в инспекторе объектов  свойство Name записываем  table_storage,

Connection устанавливаем -> form_general.ADOConnection1

 TableName-> strorage,

Active-> True;

Выбираем table_storage  и в структуре (Structure) -> storage -> Fields -> щелкнем правой кнопкой мыши и выберем Add all fields.

Программирование баз данных в Delphi - создаем формы прихода продуктов на склад.

должно получиться следующее:

Программирование баз данных в Delphi - создаем формы прихода продуктов на склад.

Далее выбираем поле id и в инспекторе объектов устанавливаем у него свойство Visible->False.

Для поля id_product  устанавливаем свойство Visible->False.

Для поля id_product_group  устанавливаем свойство Visible->False.

Для поля id_prihod  устанавливаем свойство Visible->False.

Для поля id_ed_izmer устанавливаем свойство Visible->False.

Для поля quantity

DisplayFormat->0.000

DisplayLabel -> Количество;

DisplayWidth -> 10;

 

Для поля price

DisplayFormat->0.00

DisplayLabel -> Цена;

DisplayWidth -> 10;

 

Для поля  date_realization

DisplayLabel -> Реализовать до:;

DisplayWidth -> 18;

 

Далее создаем выпадающее поле Lookup (поле подстановки) для просмотра данных из справочника «Продукты».

 

Для этого в структуре (Structure) -> Storage -> Fields -> щелкнем правой кнопкой мыши и выберем New  field.

Программирование баз данных в Delphi - создаем формы прихода продуктов на склад.


и заполняем следующее окно


Программирование баз данных в Delphi - создаем формы прихода продуктов на склад.


В поле Name: пишем product;

в поле Type: выбираем String;

выбираем поле Lookup;

в Key Fields:выбираем id_product;

в Dataset: выбираем form_general.table_products;

в Lookup Keys: выбираем id;

а в Result Field: выбираем product_name  жмем ОК

 

В инспекторе объектов для созданного поля свойство DisplyLabel-> Продукт, DisplyWidth-> 20 и перемещаем поле мышкой в позицию после поля  id_product.

Далее создаем выпадающее поле Lookup (поле подстановки) для просмотра данных из справочника «Единицы измерения».

 

Для этого в структуре (Structure) -> Storage -> Fields -> щелкнем правой кнопкой мыши и выберем New  field. и делаем аналогично предыдущему …

 

В поле Name: пишем ed_izmer;

в поле Type: выбираем String;

выбираем поле Lookup;

в Key Fields:выбираем id_ed_izmer;

в Dataset: выбираем form_general.table_ed_izmer;

в Lookup Keys: выбираем id;

а в Result Field: выбираем ed_name  жмем ОК

 

В инспекторе объектов для созданного поля свойство DisplyLabel-> Ед.изм., DisplyWidth-> 20 и перемещаем поле мышкой в позицию после поля  product.

Далее создаем вычисляемое  поле  summa .

 

Для этого в структуре (Structure) -> Storage -> Fields -> щелкнем правой кнопкой мыши и выберем New  field. и делаем аналогично предыдущему …

 

В поле Name: пишем summa;

в поле Type: выбираем Float;

выбираем поле Calculated;

и жмем ОК

 

В инспекторе объектов для созданного поля свойство DisplyLabel-> Сумма., DisplyWidth->10, DisplayFormat->0.00 .

 

Свяжем таблицу table_storage с таблицей table_prihod в Datamodule (dm) для этого выбираем компонент table_storage и в инспекторе объектов  свойство MasterSource -> dm.prihod, MasterFields->…

и в открывшемся окне выбираем в левом окне id_prihod а в правом  окне id нажимаем Add.

Программирование баз данных в Delphi - создаем формы прихода продуктов на склад.

В окне JoinedFields  должна появиться связь

Программирование баз данных в Delphi - создаем формы прихода продуктов на склад.



Нажимаем ОК и связь между таблицами установлена.

 
Для table_storage устанавливаем свойство Active-> True;

для ADOQuery1 в инспекторе объектов  свойство Name записываем  ADOQuery_summa,

Connection устанавливаем -> form_general.ADOConnection1;

DataSource-> dm.prihod;

SQL (TString) -> в открывшемся окне вводим следующий запрос

Программирование баз данных в Delphi - создаем формы прихода продуктов на склад.

SELECT storage.id_prihod, Sum([storage].[quantity]*[storage].[price]) AS [sum]
FROM storage
GROUP BY storage.id_prihod
HAVING (((storage.id_prihod)=:id));

 
далее выбираем свойство Parameters((TParameters)



Программирование баз данных в Delphi - создаем формы прихода продуктов на склад.



Программирование баз данных в Delphi - создаем формы прихода продуктов на склад.


Создаем новый параметр Name->id

Value->Type->Integer;

Выбираем ADOQuery_summa и в структуре (Structure) -> ADOQuery_summa -> Fields -> щелкнем правой кнопкой мыши и выберем Add all fields.

Программирование баз данных в Delphi - создаем формы прихода продуктов на склад.


Для поля sum

DisplayFormat->0.00

DisplayLabel -> sum;

DisplayWidth -> 10;

Из вкладки Data Access помещаем на форму три компонента TDataSource.

 
для DataSource1 в инспекторе объектов свойство Name записываем  summa,

DataSet-> ADOQuery_summa;

 
для DataSource2 в инспекторе объектов свойство Name записываем  postav_ik,

DataSet-> Form_general.table_postav_ik;

 
для DataSource3 в инспекторе объектов свойство Name записываем  storage,

DataSet-> table_storage;

 

Из вкладки Data Controls помещаем на форму компоненты  TDBLookupComboBox , TDBGrid и TDBEdit.

 
для DBGrid1 в инспекторе объектов свойство  DataSource-> storage, а свойство Options->dgRowSelect->True.

 
для DBEdit1 в Name-> DBEdit_summ, DataSource->summa, DataField->sum, ReadOnly->True.

 
для DBLookupComboBox1 в инспекторе объектов свойство Name записываем  DBLookup_postav_ik, ListSource->postav_ik, ListField->postav_ik_name, KeyField->id, DataSource->dm.prihod, DataField->id_postav_ik.

Далее приводим нашу форму к следующему виду:

Программирование баз данных в Delphi - создаем формы прихода продуктов на склад.


Скачать исходники урока можно здесь.


Категория: База данных "Склад" | Добавил: xaramamburu (27.06.2011)
Просмотров: 13783 | Комментарии: 23 | Рейтинг: 5.0/3
Всего комментариев: 231 2 »
23  
Все уже разобралась)

22  
Здравствуйте, при создании нового параметра "name: id" при попытке ввода типа integer тип автоматически становится OleStr. Как его установить в значение integer?

18  
Здравствуйте! Подскажите пожалуйста столкнулся с такой проблемой, при открытие проекта в делфи выдает ошибку что не может найти базу данных. которая находится в папке мои документы, хотя подключенная база данных находится в папке с проектом и в адресе прописано только название базы данных. Как решить данную проблему? Спасибо

19  
Я делал так:
В настройках подключения AdoConnection прописывал полный адрес, проверял подключение, а затем удалял путь и снова проверял подключение и все становилось ОК.)))

20  
Тоже так делал не помогло. Да проект, то открывается только перед этим раз 5 нужно нажать на ок данной ошибки и все нормально. Что за фигня правда не понятно.)

21  
Версия Delphi какая? После удаления пути к базе, подключение проверяете? И после чего стала возникать такая ошибка?

12  
больше ничего не выдает, кроме этого я может не правильно в sql что нибудь написала, у меня идет сумма без ндс вычисляется в OnCalcFields table_rashod.FieldByName('summa_bez_nds').Value:= table_rashod.FieldByName('price').Value* table_rashod.FieldByName('quantity').Value;
сумма ндс table_rashod.FieldByName('summa_nds').Value:= table_rashod.FieldByName((('summa_bez_nds').Value)/100) * table_rashod.FieldByName('nds').Value;
а сумма с ндс, т.е. итого table_rashod.FieldByName('summa_nds').Value:= table_rashod.FieldByName((('summa_bez_nds').Value)/100) * table_rashod.FieldByName('nds').Value;  и пишет ошибка где value в сумме ндс
или можно Вам скинуть прогу посмотрели бы просто так не скоро все объяснишь

13  
Скидывайте.)))

14  
http://yadi.sk/d/SurK2bQ773RwC ссылка на файл

15  
Куда вам отправить ответ.))))

16  
можете яндекс диск либо почта Plackin2010@yandex.ru

17  
Смотрите почту.)))

10  
Здравствуйте.я выполняю дипломную работу за основу взяла ваши уроки, но у меня в расходе возникла ошибка, я добавила кроме поля сумма также поля ндс, сумма с ндс и без и теперь я запуталась не могли бы Вы мне помочь.ошибка F2063 Could not compile used unit 'rashod_doc_prod.pas'а как ее устранить не могу разобраться

11  
А кроме этого еще что нибудь выдается? Эта ошибка говорит, что он не может откомпилировать данный модуль, а почему? По идее должно быть еще какое то сообщение перед этим.))))

8  
Помогите пож-то....У меня почему-то когда я пишу sql-запрос, выдаётся ошибка:
select Склад.Номер_ТТН, Стоимость([Склад].[Количество]*[Склад].[Цена]) AS [Стоимость]
from Склад
group by Склад.Номер_ТТН
Having ( (Склад.Номер_ТТН)=:Номер_ТТН );
поле "Стоимость" находится в таблице ТТН, где ключевое поле Номер_ТТН
и delphi выдаёт ошибку на sql-запрос:"неопределенная функция "стоимость" в выражении"

9  
Ошибка возникает потому, что здесь  Стоимость([Склад].[Количество]*[Склад].[Цена]) AS [Стоимость] он ожидает функцию например sum или другую. Т.е. эта часть запроса должна выглядеть как то так : sum([Склад].[Количество]*[Склад].[Цена]) AS [Стоимость] smile

6  
"Выбираем ADOQuery_summa и в структуре (Structure) -> ADOQuery_summa -> Fields -> щелкнем правой кнопкой мыши и выберем Add all fields."
На рисунке ниже ADOQuery_summa ->summa и Fields. А у меня: parametrs и Fields!! Что не правильно у меня???

7  
У вас все правильно, просто выполняйте урок дальше и поле summa появится.)))

5  
"Создаем новый параметр Name->id" А у меня уже создано!!??

4  
С KeyPress разобрался:)

3  
Если возможно - подскажите:
делаю замену NumbersOnly вручную:
procedure TForm1.KeyPress(Sender: TObject; var Key: Char);
begin
if not(Key in ['0'..'9', #8]) then Key:=#0;
end;
а хотел:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not(Key in ['0'..'9', #8]) then Key:=#0;
end;

Делал обработчик событий в Edit. А почему вышло без Edit1? просто в Form1???

1-10 11-11
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск
Наш опрос
Оцените мой сайт
Всего ответов: 532
Уголок общения



Copyright MyCorp © 2017Конструктор сайтов - uCoz