Реферат: Створення клієнтської програми для користування базою данних MS ACCESS в Delphi 4 0

Реферат: Створення клієнтської програми для користування базою данних MS ACCESS в Delphi 4 0




🛑 👉🏻👉🏻👉🏻 ИНФОРМАЦИЯ ДОСТУПНА ЗДЕСЬ ЖМИТЕ 👈🏻👈🏻👈🏻




























































Шевчук Андрій. ПМП-42, Львів – 2000

Створення клієнтської програми для користування базою данних
MS ACCESS
в
Delphi 4.0

Для компоненти Database1 в вікні “Object Inspector” надамо наступні значення для властивостей: AliasName = “_db6” (вказуємо псевдонім нашої бази даних), DatabaseName = “_db1” (ім'я бази даних яке будуть використовувати решта компоненти DataAccess), LoginPromt = “False” (не запрошувати ім'я користувача і пароль при відкритті бази даних). Для компонент Table1, Table2, Table3 встановимо DatabasName = “_db1”,TableName відповідно “Товар”, “Рахунок”, “Партія товару”, і після цього для кожної компоненти Active присвоїмо значення True. Для компонент Datasource1, DataSource2, Datasource3 присвоїмо властивості DataSet відповідно значень “Table1”, “Table2”, “Table3”.
З вкладки Win32 на форму From1 помістимо компоненту PageControl, в вікні “Object Inspector” якої вкажемо Align = “AllClient”. Викликавши правою кнопкою миші контекстне меню виберемо пункт “New Page” і для нової закладки TabSheet1 властивість Caption присвоїмо значення “Товари”, яке буде назвою нашої закладки. На закладку помістимо компоненту DBGrid1 з закладки DataControls палітри компонентів. Надамо їй наступних властивостей: Align = “allClient”, DataSource = “DataModule1.DataSource1”. Тепер в вікні закладки “Товари” ми можемо переглядати дані з таблиці товар. Для можливості оперування з цими даними додамо на форму елемент управління DBNavigator. Для цього створимо для нашої форми Form1 панель інструментів. Помістимо на форму CoolBar1 з закладки Win32, на CoolBar1 ControlBar1 з закладки Additional, властивості AutoSize яких встановимо “True”. Після цього на ControlBar1 помістимо DBNavigator1. Створимо ще одну закладку PageControl1, для перегляду і редагування всіх трьох таблиць. Присвоїмо властивості Caption = «Виписка рахунку», для TabSheet2, і помістимо на закладку три компоненти GroupBox з палітри “Standart”, присвоївши властивості Caption для яких, відповідно, “Рахунок”, “Партія товару” і “Товар”. Помістимо на GroupBox1 (“Рахунок”) чотири компоненти DBEdit, з закладки “Data Controls”. Властивостям цих елементів DataSource присвоїмо значення DataModule1.DataSource3, а DataField, відповідно, імена полів з таблиці “Рахунок”: “Код рахунку”, “Дата виписки”, “Дата проплати”, “Сума оплати”. Над елементами DBEdit помістимо компоненти Label з палітри “Satndart”, присвоївши властивості Caption кожного з них імена відповідних полів. Аналогічно поступимо з GroupBox2 (“Товар”), помістивши на нього відповідну кількість DBEdit i Label, створивши перегляд таблиці “Рахунок”. На GroupBox3 (“Партія товару”) помістимо DBGrid, присвоїмо його властивостям такі значення: Align = AllClient, DataSource = DataModule1.DataSource2. Для того щоб перехід по всіх полях різних таблиць відбувався синхронно, а в DBGrid2 ми могли бачити список партій товару які виписані на вибраний рахунок вкажемо зв'язки між таблицями. Але щоб в першій закладці таблиця товар відображалась правильно зробимо це для таблиць “Рахунок” і “Партія товару” в «Object Inspector», а для таблиць “Партія товару” і “Товар” – програмно. Виберемо Table2 на DataModule1 і для властивості MasterSource виберемо значення DataSource3, для властивості MasterFields – “Код рахунку”. Для компоненти PageControl1 в колонці “Object Inspector” “Events” виберемо подію «OnChange», двічі натиснемо ліву клавішу миші і введемо наступне:
procedure TForm1.PageControl1Change(Sender: TObject);
// якщо здійснено перехід на закладку “Товар”
if PageControl1.ActivePage=TabSheet1 then
DBNavigator1.DataSource:=DataModule1.DataSource1; // панель DBNavigator керує таблицею “Товар”
DataModule1.Table1.MasterSource:=nil; // забираємо зв'язок з таблицею “Партія товару”
DataModule1.Table1.MasterFields:='';
// якщо здіймнено перехід на закладку “Партія товару”
if PageControl1.ActivePage=TabSheet2 then
DBNavigator1.DataSource:=DataModule1.DataSource3; // панель DBNavigator керує таблицею “Рахунок”
DataModule1.Table1.MasterSource:=DataModule1.DataSource2; // встановлюємо зв'язок між «Товар» і
DataModule1.Table1.MasterFields:='Код товару'; // “Партія товару” по полю “Код товару”
Біля полів “Дата виписки» та «Дата проплати» помістимо кнопки для переходу на нову форму – вибору дати. Створимо її у вигляді dll. Виберемо в меню меню File Þ New, і вікні “New Items” виберемо піктограму “Dll”. Після появи самого тексту dll збережемо проект як «slave.dpr», і виберемо в меню File Þ New Form. Властивостям нової форми надамо такі значення: Name = CalendarForm, Caption = «Виберіть дату», BorderStyle = bsToolWindow, Position = poDesktopCenter. Помістимо на форму компоненту MonthCalendar з закладки Win32, і SpeedButton з закладки Additional. Додамо в опис змінних для модуля :
для SpeedButton1 створимо таку процедуру обробки подіїOnClick:
procedure TCalendarForm.SpeedButton1Click(Sender: TObject);
selDate:=MonthCalendar1.Date; // запам'ятовуємо вибрану дату
CalendarForm.Close; // закриваємо форму
В модуль slave.dpr введемо наступний текст:
function GetDate: TDateTime; stdcall;
Application.CreateForm(TCalendarForm, CalendarForm);// динамічно створюємо форму
CalendarForm.ShowModal; // виводимо форму на екран
GetDate:=selDate;// значенню що повертає функція присвоюємо значення вибраної дати
GetDate; // функція для зовнішнього використання
Так як для більшої швидкості виконання програми, форми створюються динамічно, то відповідно в властивостях проекта (Projects Þ Properties) потрібно забирати форми з поля “AutoCreate Forms”.
Для SpeedButton1 i SpeedButton2 в основній програмі, в процедуру обробки події OnClick вставимо наступний текст:
procedure TForm1.SpeedButton1Click(Sender: TObject);
procedure TForm1.SpeedButton2Click(Sender: TObject);
Відповідно перед секцією Implementation вставимо наступне:
function GetDate: TDateTime; stdcall; external 'slave.dll';
Тепер при натисненні на кнопку біля відповідних полів користувач зможе вибрати дату з календаря.
Створимо нову закладку PageControl1, назвемо її “Запити”. Створимо для цієї закладки нову панель інструментів, помістивши на ControlBar1 ToolBar1. Додамо декілька кнопок викликаючи контектне меню на ToolBar1 і вибираючи опцію New Button. Помістимо на закладку DBGrid для перегляду результатів запитів. Помістимо на закладку GroupBox, на якому розташуємо для початку 6 компонент Edit, над якими розмістимо по Label з назвами відповідних полів з таблиці “Товар”. Розташуємо між двома останніми полями ComboBox1. Будемо використовувати відповідні поля для вводу критеріїв для запитів. Перш за все зробимо вікно в якому ми зможемо контролювати правильність створення запиту SQL. Виберемо в меню команду File Þ New Form, надамо її властивостям наступних значень: Name = SQLText, BorderStyle = bsToolWindow, Position = poDesktopCenter. Помістимо на форму Memo1, змінимо властивість Align = AllClient. Для Query1 з DataModule1 введемо такий текст для обробки події AfterOpen:
procedure TDataModule1.Query1AfterOpen(DataSet: TDataSet);
a для події кнопки OnClick, якій ми присвоїмо Hint “Показати текст виконаного запиту”, цей напис буде з'являтись при наведенні курсору миші на кнопку (властивість ShowHints для відображення вспливаючих підказок повинна мати значення True, для присвоєння всім елементам цього значення, достатньо присвоїти ShowHints = True батьківському елементу, наприклад Form1):
procedure TForm1.ToolButton10Click(Sender: TObject);
Application.CreateForm(TSQLText, SQLText); // динамічно створюємо форму
SQLText.Memo1.Lines:=SQLtxt; // виводимо текст запиту
SQLText.ShowModal; // показуємо форму
Для DBGrid3 властивості DataSource присвоїмо значення DataModule1.DataSource4, властивості DataSource4 DataSet = Query1. Щоб при завантаженні програми DBGrid не був пустим відобразимо в ньому таблицю «Товар» наступним чином – властивості DatabaseName Query1 надамо значення “_db1” в полі SQL викликавши вікно введемо текст: “select * from Товар;” (без лапок).
Для першої кнопки з ToolBar1 – ToolButton1 в полівластивості Hint напишемо настпуне – “Шукати записи по введених критеріях”, створимо для цієї кнопки виконання запиту з використанням інструкції SQL select. Перед цим ComboBox1 надамо таких значень для вибору в властивості «Items»: “=”,”>”,”<”,”..”.Для події OnChange ComboBox1 введемо наступне:
procedure TForm1.ComboBox1Change(Sender: TObject);
if ComboBox1.ItemIndex=3 then Edit12.Visible:=True // при виборі значення “..” з'являється поле для //вказання інтервалу відбору значень
Для обробки події OnClick ToolButton1 введемо наступний текст:
t1:string='[Код товару]'; // назви полів
t5:string='[Ціна за одиницю товару]';
procedure TForm1.ToolButton3Click(Sender: TObject);
sqlTable:=sqlTable + 'from Товар ';
sqlWhere:=sqlWhere+'('+t1+' like '''+'%'+Edit1.Text+''') and ('+t2+' like '''+Edit2.Text+''') and ('+
t3+' like '''+Edit3.Text+''') and ('+t4+' like '''+Edit4.Text+''') and (';
0: sqlWhere:=sqlWhere+t5+' = '+Edit5.Text+');'; // рівне вказаному значенню
1: sqlWhere:=sqlWhere+t5+' > '+Edit5.Text+');'; // більше
2: sqlWhere:=sqlWhere+t5+' < '+Edit5.Text+');'; // менше
3: sqlWhere:=sqlWhere+t5+' between '+Edit5.Text+' and '+Edit12.Text+');'; // в інтервалі
DataModule1.Query1.SQL.Add(sqlTable+sqlWhere);
Символ процента використовується в мові SQL драйвера MS ACCESS для вибору всіх значень з предикатом Like (наприклад like’a%’ поверне всі значення що починаються з букви а), тому по замовчуванні для Edit полів таблиці товар задамо значення Text = %, для поля «Ціна за одиницю товару” Text = 0, для Edit12, поля в якому вказуэться верхня межа по замовчуванны введемо Text = 1000. Запустимо програму і перейшовши на закладку “Запити” натиснемо кнопку з підказкою “Шукати записи по введених критеріях”, після чого натиснемо на кнопку для перегляду тексту запиту з підказкою “Показати текст виконаного запиту”, отримаємо наступне:
Аналогічно створимо на панелі інструментів кнопки, яким присвоїмо властивість Hint відповідно «Знищити записи, що задовільняють критеріям», «Створити нову таблицю на основі записів, що задовільняють критеріям», «Додати новий запис» і «Ввести запит самому», для яких введемо наступний текст обробки подій OnClick:
procedure TForm1.ToolButton4Click(Sender: TObject); // знищення записів
if MessageDlg('Ви впевненні що хочете знищити записи, що задовільняють введеним даним?',
mtConfirmation, [mbYes, mbNo], 0) = mrYes then
sqlTable:=sqlTable + 'from Товар ';
sqlWhere:=sqlWhere+'('+t1+' like '''+'%'+Edit1.Text+''') and ('+t2+' like '''+Edit2.Text+''') and ('+
t3+' like '''+Edit3.Text+''') and ('+t4+' like '''+Edit4.Text+''') and (';
0: sqlWhere:=sqlWhere+t5+' = '+Edit5.Text+');';
1: sqlWhere:=sqlWhere+t5+' > '+Edit5.Text+');';
2: sqlWhere:=sqlWhere+t5+' < '+Edit5.Text+');';
3: sqlWhere:=sqlWhere+t5+' between '+Edit5.Text+' and '+Edit12.Text+');';
DataModule1.Query1.SQL.Add(sqlTable+sqlWhere);
procedure TForm1.ToolButton9Click(Sender: TObject); // додання записів
sqlInsert:='Insert into Товар Values ('''+'%'+Edit1.Text+''','''+Edit2.Text+''','''+
Edit3.Text+''','''+Edit5.Text+''','''+Edit4.Text+''');';
DataModule1.Query1.SQL.Add(sqlInsert);
procedure TForm1.ToolButton7Click(Sender: TObject); // створення нової таблиці
TableName:=InputBox('Введіть ім''я нової таблиці','','');
sqlCreate:='Select * into '+TableName+' from Товар where ('+t1+' like '''+'%'+Edit1.Text+''') and ('+t2+' like '''+Edit2.Text+''') and ('+
t3+' like '''+Edit3.Text+''') and ('+t4+' like '''+Edit4.Text+''') and (';
0: sqlCreate:=sqlCreate+t5+' = '+Edit5.Text+');';
1: sqlCreate:=sqlCreate+t5+' > '+Edit5.Text+');';
2: sqlCreate:=sqlCreate+t5+' < '+Edit5.Text+');';
3: sqlCreate:=sqlCreate+t5+' between '+Edit5.Text+' and '+Edit12.Text+');';
DataModule1.Query1.SQL.Add(sqlCreate);
DataModule1.Query1.SQL.Add('Select * from '+TableName);
procedure TForm1.ToolButton11Click(Sender: TObject); // самостійне введення запиту
SQL.Add(InputBox('Введіть запит','',''));
Наведемо приклад створення запиту з двох таблиць. Помістимо на GroupBox Edit9, ComboBox3 i дві компоненти SpeedButton. Одна з них буде використовувати нашу функцію з dll GetDate. Запит повинен вибирати за введеною датою товари з таблиці «Товар» на основі дати виписки рахунку з таблиці «Рахунок». В ComboBox введемо такі елементи для вибору: Рахунок.[Сума оплати], Товар.[Назва товару], Рахунок.[Дата проплати], які користувач може вибрати для вибору сортування результатів. Введемо наступний текст для обробки події OnClick для SpeedButton4 (вибір дати) і SpeedButton6 (вивід результатів запиту):
procedure TForm1.SpeedButton4Click(Sender: TObject);
procedure TForm1.SpeedButton6Click(Sender: TObject);
var sqlStr: String; sDate: string; fRep:TReplaceFlags;
ShowMessage('Потрібно вибрати дату');
sDate:=StringReplace(Edit9.Text,'.','/',fRep);
sDate:=StringReplace(sDate,'.','/',fRep);
sqlStr:='Select Товар.[Назва товару],Товар.[Опис товару],[Партія товару].[Код рахунку],Рахунок.[Дата проплати],Рахунок.[Дата виписки],Рахунок.[Сума оплати] from Товар inner join ([Партія товару] inner join '+
'Рахунок on Рахунок.[Код рахунку]=[Партія товару].[Код рахунку]) on '+
'Товар.[Код товару]=[Партія товару].[Код товару] where Рахунок.[Дата виписки]=#'+sDate+'#';
if ComboBox3.Items[ComboBox3.ItemIndex]<>'' then sqlStr:=sqlStr+' Order By '+ComboBox3.Items[ComboBox3.ItemIndex];
DataModule1.Query1.SQL.Add(sqlStr);
Перейдемо до створення останньої закладки програми – “Звітність”, в якій проілюструємо роботу з QuickReports. Виберемо в меню опцію File Þ New, в вікні вибору натиснемо на піктограмці “Report”. Збережемо новий модуль, і заберемо його з опцій проекту, як форму що створюється автоматично. На нашу закладку звітність помістимо GroupBox, Сaption якого присвоїмо “Прайс лист товарів”. Помістимо на GroupBox кнопку «Перегляд і друк», події OnClick якої присвоїмо наступне:
procedure TForm1.SpeedButton7Click(Sender: TObject);
Application.CreateForm(TQuickRPrice, QuickRPrice);
На цьому закінчимо розробку першого звіту. Помістимо на закладку звітність ще один GroupBox, який назвемо відомості про продаж товарів, і організуємо як складний звіт з деталізацією інформації з різних таблиць. Для кнопки «Перегляд і друк» звіту введемо такий текст програми:
procedure TForm1.SpeedButton9Click(Sender: TObject);
DataModule1.Table1.MasterSource:=DataModule1.DataSource2;
DataModule1.Table1.MasterFields:='Код товару';
Application.CreateForm(TQuickRSum, QuickRSum);
DataModule1.Table1.MasterSource:=nil;
DataModule1.Table1.MasterFields:='';
Створимо новий Report, назвемо його QuickRSum, властивість DataSet присвоїмо DataModule1.Table1, з групи Bands присвоїмо значення True властивостям HasTitle, HasColumnHeader, HasDetail. Помістимо на Report QRBand i QRSubDetail. На розділ Title помістимо QRLabel “Відомості про продаж товарів”, на ColumnHeader QRLabel з назвами полів таблиці «Товар», на частину Detail QRDBText відповідно з властивостю DataSet DataModule1.Table1, a DataField з назвами відповідних полів таблиці. На частину GroupHeader помістимо назви полів таблиці “Рахунок”, відповідно на частину SubDetail QRDBText з DataSet = DataModule1.Table3, i DataFiled яких надамо назви полів таблиці “Рахунок”:
Викликавши контекстне меню правою кнопкою миші можна подивитись попередій перегляд звіту, але, наприклад, в нашому випадку, звіт буде відображатись неправильно в режимі розробки програми, тому що зв'язок між таблицями «Товар» і «Партія товару» ми встановлюємо під час роботи програми. Скомпілювавши і запустивши програму ми зможемо переглянути звіт в нормальному вигляді натиснувши кнопку «Перегляд і друк».

Название: Створення клієнтської програми для користування базою данних MS ACCESS в Delphi 4 0
Раздел: Рефераты по астрономии
Тип: реферат
Добавлен 11:33:09 15 января 2011 Похожие работы
Просмотров: 2
Комментариев: 15
Оценило: 2 человек
Средний балл: 5
Оценка: неизвестно   Скачать

Срочная помощь учащимся в написании различных работ. Бесплатные корректировки! Круглосуточная поддержка! Узнай стоимость твоей работы на сайте 64362.ru
Привет студентам) если возникают трудности с любой работой (от реферата и контрольных до диплома), можете обратиться на FAST-REFERAT.RU , я там обычно заказываю, все качественно и в срок) в любом случае попробуйте, за спрос денег не берут)
Да, но только в случае крайней необходимости.

Реферат: Створення клієнтської програми для користування базою данних MS ACCESS в Delphi 4 0
Контрольные Работы По Геометрии 7 Мельникова
Дисплеи Их Эволюция Направления Развития Реферат
Сильный Характер Пример Из Жизни Для Сочинения
Историческое Сочинение Про Опричнину
Вирусное Заболевание Реферат
Реферат: Women And Men Essay Research Paper It
Дипломная работа по теме Фразеологічна одиниця як предмет фразеологічної науки
Курсовая Работа На Тему Маркетинговое Исследование Рынка Безалкогольных Напитков Компании Coca Cola
Внешняя Политика И Международные Связи Реферат
Реферат: Принципи навчання інформатики
Беспроводные Сети Стандарта Ieee 802.11 Реферат
Название Реферата По Нацпроекту Культура
Контрольная работа: Развивающие занятия как средства преемственности в учебно-воспитательном процессе дошкольного и начального
Курсовая Работа Пиелонефрит У Детей
Реферат: Alfred Nobel Essay Research Paper Alfred Nobel
Эссе О Развитии Системы
Дипломная работа по теме Завод по производству тротуарной плитки из мелкозернистого бетона
Жүсіпбек Аймауытов Қазақ Халық Әдебиетінің Шебері Эссе
Беларускі нацыянальны рух і яго роля ў рэвалюцыйным працэсе пачатку хх ст.
Сочинение: Мой любимый поэт и писатель БПастернак
Реферат: Лев Выготский и современная педагогическая антропология
Курсовая работа: Рынок труда и его особенности в России
Реферат: Разновидности медоносных растений

Report Page