АРМ менеджера з продажу комплектуючих

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Міністерство освіти і науки Республіки Білорусь

Білоруський Державний Університет Інформатики і радіоелектроніки

Факультет інформаційних технологій і управління

Кафедра інформаційних технологій автоматизованих систем

ПОЯСНЮВАЛЬНА ЗАПИСКА

до курсового проекту з курсу «Бази і банки даних»

на тему

«АРМ менеджера з продажу комплектуючих»

Мінськ 2000

Зміст

Введення

  1. Огляд можливостей Visual Foxpro

  2. Огляд базових класів і елементів управління Microsoft Visual Foxpro

  3. Опис функцій і можливостей мови SQL

  4. Постановка завдання

  5. Керівництво користувача

Висновок

Список використаних джерел

Додаток 1. Лістинг програми

Введення

Бази даних потрібні людині для систематизації своїх знань. На основі цієї систематизації він може створити нові знання. Так чи інакше, будь-яка база даних служить людині саме для опису відбулися в минулому подій і на основі знання цих подій допомагає прийняти те чи інше рішення на майбутнє. Пояснимо цю думку прикладами. Почнемо з простих випадків. Наприклад, опис складу необхідно для знання наявності на складі товарів на основі введення руху товару на склад та зі складу. Інакше, людині довелося б постійно звірятися з реальним наявністю, тобто перераховувати товар по-кілька разів на день перед виписуванням вихідної накладної. Як додаткова і потрібна функція може розглядатися можливість статистичного аналізу витрати товару зі складу по місяцях. Приміром, є сезонні коливання витрат медикаментів. На основі таких спостережень можна прогнозувати план закупівель. Бухгалтерські програми дозволяють у найпростішому випадку правильно заплатити податки. Тут ми бачимо класичний приклад генерації нових знань, а саме про фінансовий стан організації, на основі обробки проводок. Більш складним є випадок розгляду баз знань. База знань може бути побудована як мультимедійний довідник або як набір текстів і файлів іншого формату, проіндексованих за певними ознаками в базі даних. Тут варто трохи відволіктися і дати визначення бази даних в моєму розумінні цього питання. База даних - це набір файлів певного формату? Так, але не тільки. База даних - це засіб доступу до таких файлів? Так, але не це головне. На мою думку, база даних - це, перш за все, сховище об'єктів даних, тобто набору можливих понять або подій, що описуються базою даних, з можливістю пошуку цих об'єктів за ознаками. Невід'ємною рисою бази даних є можливість зв'язування об'єктів між собою. Наприклад, шапка накладної та її зміст (включення), ІПН та реквізити організації (посилання), тобто унікальне значення в одному із стовпчиків таблиці і одне або кілька значень з іншої таблиці. Такі зв'язки прийнято називати нормалізацією бази даних, але про це пізніше. Так от, це ліричний відступ було мені необхідно для пояснення прикладу про бази знань. Я вважаю, і думаю, що Ви погодитеся, що базою даних можна вважати не тільки таблиці, індексують файли зі знаннями різних форматів, але й самі ці файли, тому, що вони є не типізований сховищами знань у такій базі даних. Отже, у базах знань ми накопичуємо досвід минулого. Потім людина може сама прийняти рішення на основі цього досвіду (типовий випадок з мультимедійним довідником) або поставити завдання перед базою даних з пошуку рішення згідно ситуації, що склалася (знайти закон, який пояснює правило оформлення митної декларації тощо). Так відбувається в програмах довідкового характеру, наприклад «Консультант плюс» і т.д. Як окремий випадок баз даних, можна розглядати різні структуровані файли, наприклад словники для перекладачів, формати файлів RTF, DOC, книги Microsoft Excel, файли з листами для поштових Internet програм і т.д., життєво важливі функції баз даних, в яких реалізуються за рахунок внутрішніх функцій програм працюють з ними. Бази даних можуть застосовуватися як допоміжний засіб, що дозволяє реалізувати якусь корисну функцію. Наприклад, зберігання налаштувань програми (реєстр Microsoft Windows), Internet адрес для розсилки реклами і т.д. Отже, ми розглянули різні бази даних. Цих прикладів достатньо, щоб оцінити діапазон застосувань баз даних у сучасному світі.

Відмінною рисою баз даних слід вважати те, що дані зберігаються разом з їх описом, а в прикладних програмах опис даних не міститься. Незалежні від програм користувача дані зазвичай називаються метаданими. У ряді сучасних систем метадані, що містять також інформацію про користувачів, формати відображення, статистику звернення до даних і ін відомості, зберігаються в словнику бази даних.

Таким чином, система управління базою даних (СКБД) - найважливіший компонент інформаційної системи. Для створення і управління інформаційною системою СУБД необхідна в тій же мірі, як для розробки програми на алгоритмічній мові необхідний транслятор. Основні функції СУБД:

керування даними в зовнішній пам'яті (на дисках);

керування даними в оперативній пам'яті;

журналізація змін і відновлення бази даних після збоїв;

підтримка мов БД (мова визначення даних, мова маніпулювання даними).

Зазвичай сучасна СУБД містить наступні компоненти (див. рис. 1):

ядро, яке відповідає за управління даними у зовнішній і оперативної пам'яті і журналізацію,

процесор мови бази даних, що забезпечує оптимізацію запитів на вилучення та зміну даних і створення, як правило, машинно-незалежного виконуваного внутрішнього коду,

підсистему підтримки часу виконання, яка інтерпретує програми маніпуляції даними, що створюють користувальницький інтерфейс із СУБД

а також сервісні програми (зовнішні утиліти), що забезпечують ряд додаткових можливостей по обслуговуванню інформаційної системи.

Рис.1 Компоненти СУБД

Створення перших баз даних і СУБД стало можливо лише з появою достатньо дешевих і продуктивних пристроїв зовнішньої пам'яті, якими стали жорсткі диски (вінчестери), що з'явилися в другій половині 60-х років. У 70-ті роки йшла інтенсивна розробка теоретичних питань побудови баз даних. У результаті на початку 80-х років на ринку з'явилися потужні інструментальні засоби проектування та побудови інформаціоонних систем. Однак, розвиток інформаційних технологій у 90-х призвело до появи нових, більш широких вимог до обробки та представлення даних.

1. Огляд можливостей Visual FoxPro

Visual FoxPro дає вам більше того, що можна було очікувати від системи управління базами даних (СКБД), якщо говорити про швидкість, потужності і гнучкості. Більш того, Visual FoxPro веде вас у світ нового покоління Xbase-систем, надаючи нові об'єктну і подієву моделі, які допоможуть вам швидше, ніж раніше, створювати і модифікувати програми.

Visual FoxPro пропонує наступні засоби та можливості:

Швидка розробка додатків:

Майстра і побудовники:

Якщо ви хочете швидко отримувати результати, майстри ѕ це те, що вам потрібно. Вони розбивають часто зустрічаються в Visual FoxPro задачі на ряд елементарних кроків, супроводжуючи кожен з них докладними інструкціями з його виконання. Наприклад, майстер таблиць керує процесом створення таблиці, майстер форми розповідає, як будувати форму, а майстер запиту показує, як скласти стандартний запит.

Побудовники ѕ це візуальні інструментальні засоби, що допомагають створювати елементи управління згідно вашим специфікаціям. Наприклад, будівник списків являє собою діалогове вікно з вкладками, за допомогою якого можна сконструювати список у цій формі. Цей будівник дозволить задати властивості вашого списку.

Конструктори Visual FoxPro:

Якщо ви хочете мати більш широкими можливостями контролю в порівнянні з тими, які надають майстра і побудовники, використовуйте конструктори Visual FoxPro. Конструктори забезпечують графічний інтерфейс, за допомогою якого ви можете створювати ті чи інші компоненти свого застосування. Наприклад, ви можете визначити форму за допомогою конструктора форм або сконструювати таблицю за допомогою конструктора таблиць.

Стандартні інтерфейси додатків

У Visual FoxPro ви можете за допомогою конструктора форм включати в додатки потужні елементи управління, які виступають в ролі інтерфейсів, не вимагаючи (або майже не вимагаючи) при цьому ніякого кодування. Елемент управління сітка, пов'язаний з однією з таблиць, дозволить без праці створювати форми, що відображають відношення один-до-багатьох: досить мишею накласти таблицю на дану форму, щоб сформувати елемент управління сітка. Щоб забезпечити сумісність з іншими додатками, ви можете за допомогою елемента управління кадр сторінки створювати діалоги з вкладками або власні інтерфейси конструювання.

Розширені можливості розробки

Об'єктно-орієнтоване програмування

Хоча система Visual FoxPro як і раніше підтримує стандартні методи процедурного програмування Xbase, тепер у її склад включені засоби справжнісінького об'єктно-орієнтованого програмування. За допомогою об'єктної моделі Visual FoxPro ви можете отримати доступ до всіх можливостей об'єктно-орієнтованого програмування, включаючи успадкування, інкапсуляцію, поліморфізм і підкласи. Всі ці кошти реалізовані у вигляді розширень мови Xbase. Ви можете прискорити розробку додатків, скориставшись класами. Наприклад, можна створити базові форму, панель інструментів або сторінковий кадр за допомогою базових класів Form, Toolbar і PageFrame, передбачених у складі Visual FoxPro.

Потім ви можете повторно використовувати свій код і форми, визначаючи нові класи на основі раніше створених класів. Наприклад, на основі базового класу Form можна створити користувальницький клас, який автоматично додасть усім формам додатка необхідний вид і спосіб дій.

Модель класів Visual FoxPro дає вам широкі можливості по контролю над об'єктами вашої програми. Ви зможете на етапі виконання керувати зовнішнім виглядом і поведінкою об'єктів форми в тому ж обсязі, що і в конструкторі форм на етапі розробки.

У Visual FoxPro можна створювати класи або візуально, використовуючи конструктор класів, або програмним шляхом з допомогою команди DEFINE CLASS.

Події

У Visual FoxPro можна створювати додатки, повністю керовані подіями, причому для цього вам не знадобляться ні команди READ різних рівнів, ні обмеження вікна перегляду, ні самостійно написані програми обробки подій: Visual FoxPro містить подієву модель, яка виконує автоматичну обробку подій.

Завдяки цій моделі ви отримуєте доступ до всіх стандартних подій Windows, таким як рух миші, дана подія дозволяє переміщати об'єкти за допомогою миші. Ви можете контролювати події або візуально, використовуючи вікно Properties, або програмним шляхом, за допомогою мови Visual FoxPro.

Технологія RushMore

Продуктивність обробки запитів можна різко підвищити за допомогою технології Rushmore: це унікальна технологія, що дозволяє швидко вибирати групи записів з таблиць; з її допомогою час відповіді на запит скорочується з декількох годин або хвилин до секунд.

При зверненні до окремих таблиць ви можете користуватися технологією Rushmore щоразу, коли зустрічається пропозиція FOR.

Взаємодія з іншими додатками

Конфіденційність

Як і в інших додатках Microsoft, в Visual FoxPro для зручності роботи передбачені панелі інструментів. Вони складаються з кнопок, які представляють часто зустрічаються завдання або часто використовувані об'єкти. Щоб виконати завдання або скористатися об'єктом, досить натиснути відповідну кнопку.

Ви можете адаптувати панелі інструментів, які у складі Visual FoxPro, а також визначати для користувача панелі інструментів для своїх додатків.

Спільне використання даних з іншими додатками

У Visual FoxPro досить просто забезпечити спільне використання даних з іншими додатками. Наприклад, користуватися даними Visual FoxPro спільно з Excel дозволяє майстер опорних таблиць, а спільно з Word майстер автоматизованої розсилки.

Можна включати об'єкти з іншої програми, пов'язуючи або впроваджуючи їх у таблиці або в форми. Потім ці об'єкти можна редагувати безпосередньо, не виходячи з Visual FoxPro.

Автоматизація OLE

Засоби автоматизації OLE дозволяють розширити можливості програми: ви можете програмним способом контролювати роботу інших додатків. Наприклад, можна зробити так, щоб додаток Excel виконало певні обчислення, додаток Graph побудувало графік на підставі отриманих результатів, а потім зберегти цей графік у поле типу General у таблиці Visual FoxPro - і все це в рамках коду Visual FoxPro.

Імпортування та експортування даних

Ви можете імпортувати і експортувати дані між Visual FoxPro і багатьма іншими додатками, використовуючи різноманітні формати файлів: текст, електронну таблицю та інші. Дані можна легко додавати в існуючі таблиці. Майстер імпорту допоможе вам прийняти рішення про структуру, яку будуть мати дані, імпортовані в Visual FoxPro.

Засоби пов'язані з середовищем клієнт / сервер

Словник даних

Бази даних Visual FoxPro (файли.DBC) надають вам словник даних, який дозволяє визначати подання і з'єднання, а також правила, тригери і постійні відносини для будь-якої таблиці, що належить базі даних.

У базі даних можна визначати наступні елементи.

Правила рівня поля або рівня запису, дотримання яких Visual FoxPro відстежує при кожному використанні таблиці у додатку.

Ключі первинного індексу та індексу-кандидата.

Локальні і віддалені уявлення.

Тригери.

Постійні відносини між таблицями бази даних.

З'єднання з віддаленими джерелами даних.

Збережені процедури.

Значення, що приймаються для полів за замовчуванням.

Довгі імена таблиць і полів.

Крім цього, ви можете забезпечити для кожного постійного відносини цілісність на рівні посилань, визначивши за допомогою будівника посилальної цілісності правила операцій додавання, оновлення та видалення.

Visual FoxPro також підтримує значення NULL в таблицях, що істотно підвищує сумісність з іншими джерелами даних, такими як Microsoft Access, Visual Basic і сервери на базі SQL.

Дистанційні і гетерогенні подання

Ви можете розробити і протестувати на своєму локальному комп'ютері програму клієнт / сервер, що використовує дані з віддалених, локальних або багатотабличних гетерогенних уявлень. У локальних уявленнях використовуються таблиці, розміщені на локальному комп'ютері, але не таблиці віддаленого сервера, а в багатотабличних уявленнях ѕ пов'язані дані з різних таблиць. Можна створювати параметризрвані подання, щоб з сервера витягалося якомога менше даних, а потім оновлювати видалені дані з програми Visual FoxPro.

Транзакції

Ви можете розробити додаток таким чином, щоб воно забезпечувало спільний доступ до даних. Спільний доступ увазі колективне використання даних декількома користувачами, а також обмеження доступу в разі потреби. Застосування транзакцій і буферизації (жорсткої або м'якої, на рівні записів або на рівні таблиці) означає, що вам доведеться менше програмувати. Процес оновлення даних в багатокористувацької середовищі значно спрощується завдяки вбудованої пакетної обробки і засобів деталізованого контролю над конфліктами при оновленні.

Підтримка системи клієнт / сервер

Visual FoxPro можна використовувати як середовище розробки додатків клієнт / сервер. У Visual FoxPro поєднується Високорівнева підтримка оновлюваних представлень даних сервера з безпосереднім доступом до власного синтаксису сервера за допомогою технології наскрізного запиту SQL pass-through, що забезпечує солідний фундамент для створення універсальних додатків клієнт / сервер. У вашому розпорядженні є все необхідне для розробки ѕ словник даних, локальні і видалені подання, підтримка значень NULL, транзакції, доступ до будь-якого джерела даних ODBC.

2. Огляд базових класів і елементів управління Microsoft Visual Foxpro

Розвиток графічного інтерфейсу користувача призвело до створення гнучкого і потужного інструментарію, що забезпечує в будь-який момент часу взаємооднозначної відповідність програмного коду і розроблюваних екранних форм. Це дозволило піти від стомлюючої і постійної генерації коду.

Елемент управління CheckBox

Створює прапорець.

Прапорець використовується для переходу між двома станами, такими як «істина» (. T.) і «брехня» (. F.), «так» і «ні». Коли необхідне умова істинна, на кнопці прапорця з'являється значок X. За допомогою властивості Caption можна задати текст, який з'явиться біля прапорця. Використовуючи властивість Picture, можна задати малюнок прапорця.

Об'єкт Column

Створює стовпець сітки.

Кількість стовпців сітки визначається властивістю сітки ColumnCount.

Стовпець сітки може містити дані з табличного поля або значення виразу. За допомогою властивості DataSource можна задати дані, які будуть фігурувати у стовпці. Стовпець може містити елементи керування. Вони включаються в стовпець сітки за допомогою методу AddObject події Init форми, що містить дану сітку. Щоб визначити активний елемент управління сітки, використовуйте властивість CurrentControl. Зауважте, що доступ до верхніх і нижніх колонтитулів Column не може бути отриманий до виникнення події Init для Grid.

Елемент управління CommandButton

Створює одиночну командну кнопку.

Командна кнопка зазвичай використовується для запуску події, що виконує деяку дію, наприклад закриття форми, перехід до іншого запису, друк звіту і т.д. Щоб створити групу командних кнопок, якими можна маніпулювати як індивідуально, так і в цілому, використовуйте елемент управління CommandGroup.

За допомогою властивості Caption можна задати текст, що з'являється біля командної кнопки. Використовуючи властивість Picture, можна задати малюнок для командної кнопки.

Ви можете натиснути командну кнопку, клацнувши її мишею або, якщо значення властивості Default ѕ «істина» (. T.), натиснувши клавішу ENTER в той момент, коли командна кнопка виділена. Якщо значенням властивості Cancel командної кнопки є «істина» (. T.), ви можете натиснути цю кнопку, натиснувши клавішу ESC.

Елемент управління CommandGroup

Створює групу командних кнопок.

За допомогою елемента управління CommandGroup можна створити групу командних кнопок, якими можна маніпулювати індивідуально і як єдиним цілим. Щоб створити окрему командну кнопку, використовуйте елемент управління CommandButton.

За допомогою властивості ButtonCount можна задати кількість командних кнопок у групі, а за допомогою властивості Caption ѕ назва групи командних кнопок.

Елемент управління ComboBox

Створює поле введення з спадним списком.

Якщо вибрати поле введення з списком, воно відкривається і показує список елементів, з яких можна вибрати потрібний. Елемент управління ComboBox поєднує в собі властивості елементів управління TextBox (текстове поле) і ListBox (список). Ви можете або вводити інформацію в текстовому полі, або вибирати елементи зі списку.

Тип поля вводу зі списком визначається властивістю Style. Якщо значення властивості Style встановлено рівним 0, створюється поле введення з спадним списком. Якщо значення властивості Style дорівнює 2, створюється список.

Об'єкт Container

Створює об'єкт, який може вміщати інші об'єкти.

Об'єкти-контейнери можуть містити інші об'єкти і дозволити доступ до цих об'єктів. Наприклад, якщо ви створили об'єкт-контейнер, що складається з двох списків і двох командних кнопок, а потім включили його у форму, то цими списками і кнопками можна буде маніпулювати на етапі розробки та на етапі виконання.

Об'єкт Custom

Користувальницький клас можна створити за допомогою команди DEFINE CLASS або за допомогою конструктора класів. Щоб відкрити конструктор класів, видайте команду CREATE CLASS.

Користувальницькі класи - це класи, що володіють властивостями, подіями і методами, але не мають візуального представлення. Ці класи визначаються у відповідності з тими ж загальними правилами, що й класи інших типів.

Елемент управління EditBox

Створює полі редагування.

Використовуйте елемент управління EditBox для редагування змінної пам'яті, елементу масиву, поля або memo-поля, що мають символьний тип.

У полі редагування можна користуватися усіма стандартними можливостями редагування Visual FoxPro - вирізати, копіювати і вставляти фрагменти і т.п. Текст в полі редагування прокручується вертикально, а слова переносяться горизонтально.

Об'єкт Form

Створює форму.

Використовуйте даний об'єкт для створення форми, в якій розміщуються елементи управління. Також можете використовувати конструктор форм. Форми мають властивості, які визначають їх зовнішній вигляд (наприклад позицію, розмір і колір) та деякі аспекти поведінки (наприклад, можливість зміни розміру).

Форми також реагують на події, ініційовані користувачем або системою. Наприклад, ви можете написати код для процедури обробки події Click деякої форми, який буде змінювати колір форми, коли ви клацнете її мишею.

Крім властивостей і подій, ви можете використовувати методи для маніпулювання формами. Наприклад, за допомогою методу Move можна змінювати місце розташування і розмір форми.

Конструюючи форми, використовуйте властивість BorderStyle для створення обрамлення форми і властивість Caption для визначення тексту в рядку заголовка. Якщо встановити значення властивості BorderStyle рівним 0, обрамлення буде видалено. У рамках програми можна використовувати методи Hide і Show для того, щоб робити форми прозорими або видимими на етапі виконання.

Елемент управління Grid

Створює сітку.

Сітка - це об'єкт-контейнер, який відображає дані по рядках і стовпцях; він нагадує за зовнішнім виглядом вікно перегляду. Сітка як контейнер містить об'єкти-стовпці. Стовпець може містити об'єкт-заголовок і елементи управління. Оскільки сітка, як і її стовпці, заголовки і елементи управління, має власні набори властивостей, ви отримуєте повний контроль над кожним елементом сітки. Можна створити сітку інтерактивно, використовуючи будівник сітки.

Об'єкт Header

Створює заголовок для стовпця елемента управління сітка.

Стовпці, що утворюють сітку, мають заголовки. Об'єкт-заголовок відображає назву вгорі стовпця і може реагувати на події.

Елемент управління Image

Створює зображення ѕ елемент управління, що відображає на екрані малюнок файла.BMP.

Зображення - це графічний елемент управління, що відображає рісунок.BMP, який не можна змінити безпосередньо. Однак оскільки це зображення володіє повним комплектом властивостей, подій і методів, як і інші елементи управління, воно може реагувати на події і може бути змінено динамічно на етапі виконання.

Елемент управління Label

Створює мітку, в якій відображається текст.

Мітка - це графічний елемент управління, що відображає текст, який не можна змінити безпосередньо. Однак оскільки мітка має повним комплектом властивостей, подій і методів, як і інші елементи управління, вона може реагувати на події і може бути змінена на етапі виконання.

Щоб призначити мітці клавішу доступу, поставте в її назві зворотну косу риску і знак менше (\ <) безпосередньо перед символом, який ви вирішили використовувати як клавіші доступу. Коли мітка відображається, цей символ буде виділено підкресленням. При натисканні клавіші доступу мітки активізується наступний елмент управління в порядку табуляції. Для призначення мітці порядку табуляції використовується властивість TabIndex.

Назви відображаються на екрані по-різному, в залежності від об'єкта.

Врахуйте, що максимальна кількість символів, допустима для властивості Caption елемента управління Label, так само 256.

Елемент управління ListBox

Створює полі вводу зі списком

Список містить перелік елементів, з якого ви можете вибрати потрібні. Список нагадує поле введення з списком, тільки останнє спочатку відображає один елемент.

Зв'язаний елемент управління OLE

Створює пов'язаний елемент управління OLE.

У формі або звіті пов'язаний елемент управління OLE дозволяє відображати вміст об'єкта OLE (такого як об'єкт Microsoft Word або Microsoft Excel) в табличному полі типу General.

На відміну від елементів управління OLE, що вставляються об'єкти OLE не володіють власним набором подій. Крім того, пов'язані елементи управління OLE, на відміну від контейнерних елементів управління OLE, прив'язані до поля типу General у таблиці Visual FoxPro.

Елемент управління OLE - контейнер

Створює елемент управління типу OLE-контейнер.

OLE-контейнер дає можливість включати OLE-об'єкти в додатки. До числа OLE-об'єктів відносяться об'єкти OLE Control (файли.OCX) і вставляються OLE-об'єкти, створені в інших додатках, таких як Microsoft Word і Microsoft Excel. На відміну від об'єктів OLE Control (файлов.OCX), що вставляються OLE-об'єкти не мають власним набором подій. Елементи керування типу OLE-контейнер, на відміну від елементів управління OLE Bound, не прив'язані до поля типу General у таблиці Visual FoxPro.

Елемент управління OptionButton

Створює одиночний перемикач.

Одиночний перемикач можна додати тільки до групи перемикачів.

Елемент управління OptionGroup

Створює групу перемикачів.

Групи перемикачів являють собою контейнери, що містять перемикачі. Група перемикачів надає можливість вибору одного з них. Якщо встановити який-небудь перемикач, він стає поточним і при цьому скидається раніше встановлений перемикач. Встановлений у даний момент перемикач позначається символом бюлетеня. Наприклад, за допомогою перемикачів можна направити висновок у файл, на принтер або у вікно.

Об'єкт Page

Створює сторінку в сторінковому кадрі.

За допомогою сторінок можна створювати табульований форми або діалогові вікна. Набір сторінок міститься в сторінковому кадрі.

Ви можете посилатися на сторінку в сторінковому кадрі по імені, як це зроблено в наступному прикладі:

myFrame.MyPage1

Ви можете також посилатися на сторінку по її номеру індексу, використовуючи ключове слово PAGES. Тим самим досягається однаковість з наборами елементів управління в інших контейнерах FoxPro.

myFrame.PAGES (2). Visible =. T.

Зауважте, що цей індекс не обов'язково збігається зі значенням властивості PageOrder. Нехай у вас є три сторінки зі значеннями PageOrder, рівними 2, 3 і 5. Ви можете таким чином сформувати посилання на ці сторінки:

myFrame.PAGES (1)

myFrame.PAGES (2)

myFrame.PAGES (3)

Зверніть увагу, що оновлюється лише активний об'єкт Page при виникненні методу Refresh для форми, в якій знаходиться об'єкт Page.

Елемент управління PageFrame

Створює сторінковий кадр, в який будуть включатися сторінки.

Сторінковий кадр - це об'єкт-контейнер, що містить сторінки. Сторінки в свою чергу можуть містити якісь елементи управління. Слід зауважити, що сторінковий кадр стає видимим при включенні у форму.

Сторінковий кадр визначає глобальні характеристики сторінки в даній формі: розміри і розташування, стиль обрамлення, яка сторінка активна і т.д.

Сторінковий кадр визначає, де розміщується сторінка і яка її частина повинна бути видимою. Сторінки розташовуються в лівому верхньому кутку сторінкового кадру. Якщо переміщати сторінковий кадр, разом з ним переміщуються і його сторінки.

Сторінковий кадр містить окремі сторінки, яким за замовчуванням присвоюються імена Page0, Page1, Page2 і т.д.

Елемент управління TextBox

Створює елемент управління TextBox.

Створює поле введення, в якому можна редагувати вміст змінної пам'яті, елементу масиву або поля. У полі введення можна користуватися усіма стандартними можливостями редагування Visual FoxPro ѕ вирізати, копіювати і вставляти фрагменти і т.п.

Використовуючи властивості InputMask і Format, можна визначати, як значення вводяться у полі вводу та відображаються в ньому.

Елемент управління Shape

Створює фігуру - елемент управління, що відображає прямокутник, коло або еліпс.

Фігура - це графічний елемент управління, що відображає прямокутник, коло або еліпс, які не можна змінити безпосередньо. Однак оскільки фігура володіє повним комплектом властивостей, подій і методів, як і інші елементи управління, вона може реагувати на події і може бути змінена динамічно на етапі виконання.

Властивість Curvature визначає, яка саме фігура відображається, і може змінюватися в діапазоні від 0 до 99. Значення 0 задає нульову кривизну і будує прямі кути; 99 задає максимальну кривизну і будує окружності і еліпси.

3. Опис функцій і можливостей мови SQL

Мова для взаємодії з БД SQL з'явився в середині 70-х і був розроблений в рамках проекту експериментальної реляційної СУБД System R. Початкове назву мови SEQUEL (Structered English Query Language) тільки частково відображає суть цієї мови. Звичайно, мова був орієнтований головним чином на зручну і зрозумілу користувачам формулювання запитів до реляційної БД, але насправді вже був повним мовою БД, що містить крім операторів формулювання запитів і маніпулювання БД засоби визначення та маніпулювання схемою БД; визначення обмежень цілісності і тригерів; уявлень БД; можливості визначення структур фізичного рівня, що підтримують ефективне виконання запитів; авторизації доступу до відносин і їхніх полів; точок збереження транзакції і відкатів. У мові відсутні засоби синхронізації доступу до об'єктів БД з боку паралельно виконуваних транзакцій: з самого початку передбачалося, що необхідну синхронізацію неявно виконує СУБД.

Запити та оператори маніпулювання даними

Як відомо, двома фундаментальними мовами запитів до реляційних БД є мови реляційної алгебри і реляційного числення. При всій своїй строгості і теоретичної обгрунтованості ці мови рідко використовуються в сучасних реляційних СУБД в якості засобів для користувача інтерфейсу. Запити на цих мовах важко формулювати і розуміти. SQL представляє собою деяку комбінацію реляційного обчислення кортежів і реляційної алгебри, причому до цих пір немає загальної згоди, до якого з класичних мов він ближче. При цьому можливості SQL ширше, ніж у цих базових реляційних мов, зокрема, в загальному випадку неможлива трансляція запиту, сформульованого на SQL, у вираз реляційної алгебри, потрібен якийсь її розширення.

Істотними властивостями підмови запитів SQL є можливість простого формулювання запитів із з'єднаннями декількох відносин та використання вкладених підзапитів в предиката вибірки. Взагалі кажучи, одночасна наявність обох засобів надмірно, але це дає користувачеві при формулир-вання запиту можливість вибору більш зрозумілого йому варіанти.

У предикатах з вкладеними підзапитах в SQL System R можна вживати теретіко-множинні оператори порівняння, що дозволяє формулювати квантифікованій запити (ці можливості зазвичай найважче розуміються користувачами і тому надалі в SQL з'явилися явно квантіфіціруемие предикати).

Суттєвою особливістю SQL є можливість зазначення в запиті потреби групування відносини-результату за вказаними полями з підтримкою умов вибірки на всю групу цілком. Такі умови вибірки можуть містити агрегатні функції, обчислювані на групі. Ця можливість SQL головним чином відрізняє цю мову від мов реляційної алгебри та реляційного числення, не містять аналогічних засобів.

Ще однією відмінністю SQL є необов'язкове видалення кортежів-дублікатів в остаточному або проміжних відносинах-результати. Строго кажучи, результатом оператора вибірки в мові SQL є не ставлення, а мультімножество кортежів. У тих випадках, коли семантика запиту вимагає наявності відносини, знищення дублікатів проводиться неявно.

Найбільший загальний вид запиту на мові SQL представляє теоретико-множинне вираження алгебри, складене з елементарних запитів. У SQL System R допускалися всі базові теретіко-множинні операції (UNION, INTERSECT і MINUS).

Робота з невизначеними значеннями в SQL System R до кінця продумана не була, хоча неявно передбачалося використання тризначної логіки при обчисленні логічних виразів.

Оператори маніпулювання даними UPDATE і DELETE побудовані на тих же принципах, що і оператор вибірки даних SELECT. Набір кортежів зазначеного відносини, що підлягають модифікації або видалення, визначається входять у відповідний оператор логічним виразом, який може включати складні предикати, в тому числі і з вкладеними підзапитах.

У операторі вставки кортежу (ів) у вказане відношення заносяться кортеж може задаватися як у літеральної формі, так і за допомогою внутрішнього подоператора вибірки.

Уявлення бази даних

У мові допускалося використання збережених відносин БД і експонованих відносин. Найбільш вдалим рішенням було використання для визначення уявлень загального апарата операторів вибірки. Будь-який оператор вибірки може бути використаний для визначення уявлення.

У мові відсутні будь-які обмеження щодо використання уявлень: будь-який оператор SQL, в якому дозволяється використання імені зберігається відносини, допускається і використання імені уявлення. У SQL System R нічого не говориться про рекомендований способі реалізації доступу до уявлень, але при будь-якому способі ефект повинен бути таким, як якщо б виконати повну матеріалізацію подання до виконання оператора.

Масу проблем, досліджень і пропозицій породила потенційна можливість виконання операторів маніпулювання даними над уявленнями. Зрозуміло, що ця можливість легко можна реалізувати для простих уявлень, але в більш складних випадках не тільки реалізація, але і семантика операцій стає нетривіальною. До речі, в System R оператори маніпулювання даними допускалися тільки над простими уявленнями.

Визначення керуючих структур

Внесення до реляційний мову, яким є SQL, явних операторів породження та знищення структур фізичного рівня, що підтримують ефективне виконання запитів до БД, з'явилося в SQL System R чисто прагматичним рішенням, що забезпечує можливість усіх видів робіт з БД за допомогою однієї мови.

У SQL System R згадуються два види таких структур: індекси та зв'язку (links). Індекс у його абстрактному мовному представленні - це інвертований файл, що забезпечує доступ до кортежам відповідного ставлення на основі заданих значень одного чи декількох стовпців, складових ключ індексу. Оператори мови дозволяли створювати і знищувати індекси, але ніяким чином не давали можливості явно вказати на необхідність використання існуючого індексу при виконанні оператора вибірки, рішення про це покладалося на реалізацію.

За допомогою оператора визначення індексу можна було виразити два додаткових твердження, що стосуються логічної схеми відношення і фізичної структури його зберігання. Використання при визначенні індексу ключового слова UNIQUE означало, що ключ цього індексу є можливим ключем відповідного ставлення. Фактично це означає наявність додаткового механізму визначення обмеження цілісності відносини. Один з індексів для даного відношення міг бути визначений за ключовим словом CLUSTERING. Це означає вимогу фізичної кластеризації у зовнішній пам'яті кортежів відносини з рівними або близькими значеннями ключа індексу.

Оператори визначення зв'язку дозволяли в стилі мережевої моделі даних організувати у зовнішній пам'яті списки кортежів зазначеного відносини. Як і у випадку індексів, оператори дозволяли створювати і знищувати такі списки, але не давали можливості явно вказати на необхідність використання існуючих списків при виконанні операторів вибірки. Велика трудомісткість підтримки списків при виконанні операторів маніпулювання даними та труднощі виконання оцінок вартості їх використання при виконанні операторів вибірки призвели до того, що механізм зв'язків зник з мови вже на пізній стадії проекту System R. З тих пір цей механізм, наскільки нам відомо, не з'являвся ні в одному варіанті SQL.

Вбудований SQL

У SQL System R присутні спеціальні оператори, що підтримують вбудовування операторів SQL у традиційні мови програмування (в System R основним такою мовою був PL / 1).

Основна проблема вбудовування SQL в мову програмування полягала в тому, що SQL - реляційний мову, тобто його оператори здебільшого працюють з множинами, в той час як в мовах програмування основними є скалярні операції. Рішення SQL полягає в тому, що в мову додатково включаються оператори, що забезпечують покортежний доступ до результату запиту до БД.

Для цього в мову вводиться поняття курсору, з яким зв'язується оператор вибірки. Над певним курсором можна виконувати оператор OPEN, що означає матеріалізацію відносини-результату запиту, оператор FETCH, що дозволяє вибрати черговий кортеж результуючого відносини в пам'ять програми, і оператор CLOSE, що означає кінець роботи з даними курсором.

Додаткову гнучкість при створенні прикладних програм з вбудованим SQL забезпечує можливість параметризації операторів SQL значеннями змінних включаючи програми.

Динамічний SQL

Для спрощення створення інтерактивних SQL-орієнтованих систем в SQL System R були включені оператори, що дозволяють під час виконання транзакції відкомпілювати і виконати будь-який оператор SQL.

Оператор PREPARE викликає динамічну компіляцію оператора SQL, текст якого міститься у вказаному змінній-символьному рядку включаючи програми. Текст може бути поміщений в змінну при виконанні програми будь-яким припустимим способом, наприклад, введено з терміналу.

Оператор DESCRIBE служить для отримання інформації про зазначений операторі SQL, раніше підготовленому за допомогою оператора PREPARE. C допомогою цього оператора можна дізнатися, по-перше, чи є підготовлений оператор оператором вибірки, і по-друге, якщо це оператор вибірки, отримати повну інформацію про кількість і типи стовпців результуючого відносини.

Для виконання раніше підготовленого оператора SQL, яка не є оператором вибірки, служить оператор EXECUTE. Для виконання динамічно підготовленого оператора вибірки використовується апарат курсорів з деякими відмінностями за частиною завдання адрес змінних включаючи програми, в які повинні бути поміщені значення стовпців поточного кортежу результату.

Підводячи підсумок наведеному короткому опису основних рис SQL System R, відзначимо, що незважаючи на недостатню технічну опрацювання, в ідейному відношенні мова містив всі необхідні засоби, що дозволяють використовувати його як базова мова СУБД

4. Постановка завдання

СУБД менеджера з продажу комплектуючих повинна виконувати функції полегшують роботу з переліком комплектуючих, що є на складі фірми. Програма повинна виконувати пошук необхідних комплектуючих із заданими параметрами. Необхідно передбачити виведення всіх найменувань виробів, додавання записів до бази даних, видалення записів, а також редагування записів. При виведенні всіх найменувань потрібно здійснити сортування по всіх відображуваним полях. Структура бази даних повинна бути ідентична структурі прайс-листів комп'ютерних фірм м. Мінська. Як приклад виступає прайс-лист фірми «Конструктив».

Комплектуючі характеризуються такими параметрами:

Розділ - найменування виробу.

Позиція - інформація про виробника та моделі виробу.

Характеристики - додаткові параметри.

Гарантія - гарантійний термін експлуатації виробу.

Роздрібна ціна.

Дрібнооптова ціна.

Оптова ціна.

Три останніх поля введені через необхідність роботи фірми з різними клієнтами.

Програма повинна здійснювати управління БД за допомогою інтуїтивно зрозумілого сучасному користувачеві інтерфейсу, пропонованого операційною системою Windows 95/98, використовуючи стандартні елементи управління.

5. Керівництво користувача

Розробка програми велася на мові управління базами даних Visual FoxPro 6.0 використовує технологію об'єктно-орієнтованого візуального програмування.

Елементи використані при розробці програми є стандартними для ОС Windows і описані вище в п.2 даної записки.

Після запуску програми з'являється головне вікно (рис.2), яке містить меню для роботи з формою, таблицю, яка містить всі записи бази даних, а також закладки для переходу на сторінку роботи з окремою записом і сторінку формування SQL-запиту.



Рис.2

У цьому вікні можна здійснити сортування записів за всіма ознаками з можливістю сортування по зростанню і спаданню. Ця дія виконується натисканням лівої кнопки миші при підведенні курсора до заголовка поля. Причому сортування за убуванням здійснюється з натисканням кнопки Ctrl на клавіатурі і клацанням миші по заголовку поля, в якому потрібно зробити сортування. Переміщення по таблиці виконується за допомогою курсорів клавіатури, а також за допомогою миші і правого скроллера. Редагувати або яким-небудь чином змінювати вміст БД з цього вікна не можна.

Для цього необхідно переміститься на сторінку Тек. Запис. (Рис. 3)

Рис. 3

При цьому запис, на якому знаходився курсор на попередній сторінці буде відображатися на цій.

Ця сторінка містить кнопки навігації по базі даних, кнопки видалення, редагування.

«Початок» - переміщення покажчика БД на перший запис.

«Вгору» - переміщення покажчика на одну запис вгору.

«Редагувати» - дозволяє зміна значень полів поточного запису.

«Новий запис» - додавання нової порожній запису і можливість введення значень.

«Видалити» - видалення після ствердної відповіді на підтверджує запит.

«Вниз» - переміщення покажчика поточного запису на одну запис вниз.

«Кінець» - переміщення покажчика БД на останній запис.

При натисканні кнопки «Редагувати» поля запису стають доступними для зміни.

Головне вікно містить кнопку «Вихід», яка доступна з усіх сторінок.

Пункти меню, також доступні з будь-якої сторінки. Розглянемо їх.

File - пункт меню для роботи з файлами, містить одну опцію - Quit.

Edit - пункт меню для редагування бази даних, містить 3 опції:

Add record - додати порожню запис.

(Аналогічно кнопці «Новий запис» сторінки «Тек. Запис")

Delete record - видалити поточну запис.

(Аналогічно кнопці «Видалити» сторінки «Тек. Запис")

Edit record - редагувати поточний запис.

(Аналогічно кнопці «Редагувати» сторінки «Тек. Запис")

Query - робить активної сторінку формування запиту

(Аналогічно натисненню закладки «Запит»)

Help - пункт меню допомоги, містить одну опцію About - виклик вікна «Про програму»

Вибір закладки «Запит» головного вікна робить активним сторінку формування SQL-запиту. (Рис. 4)

Рис. 4

Елементи цієї сторінки дозволяють створити SQL-запит за трьома полями бази даних з різними знаками зв'язок в умовах і з'єднань (та / або) критеріїв відбору між собою. Вибір поля, по якому здійснюється запит відбувається з елемента управління ComboBox, який містить всі найменування полів бази. Якщо не вказані імена полів для вибірки, кнопка «Виконати», яка запускає сформований запит, неактивна.

Кнопка «Очистити» наводить форму створення запиту у вихідний стан і очищає її від раніше введених значень.

Наведемо приклад створення запиту по розділу «Монітори» з обов'язковим розміром по діагоналі 17 дюймів або гарантією більше 12 місяців. Заповнивши відповідні поля та натиснувши кнопку виконати, спостерігаємо наступні результати (рис. 5)

Рис. 5

Результати роботи запиту виводяться в стандартному вікні «Browse». Якщо в базі даних немає запису повністю задовольняє створеному запитом, на екран буде видане відповідне повідомлення.

При виборі пункту меню Help / About на екран виводиться вікно з інформацією про програму та її розробника:

Програма виконує основні вимоги, які висувалися до неї на етапі постановки завдань, володіючи при цьому інтуїтивно зрозумілим інтерфейсом.

При внесенні певних коректив у функції програми, вона цілком може стати діючої АРМ менеджера з продажу комплектуючих.

Висновок

Середовище програмування Visual FoxPro є складовою частиною інтегрованого пакету програм VISUAL STUDIO. Це надає користувачеві комфортний та уніфікований інтерфейс розробки додатків для різних мов програмування, включаючи Visual Basic і C + +. Також це дозволяє використовувати загальні сервісні програми, наприклад для тестування об'єктів ActiveX.

Набір команд і функцій пропонованих розробникам програмних продуктів у середовищі FoxPro, за потужністю та гнучкості відповідає будь-яким сучасним вимогам до представлення і обробки даних. Тут може бути реалізований максимально зручний, гнучкий і ефективний користувацький інтерфейс. Visual FoxPro є першим продуктом розробки, призначеним для створення загальнокорпоративних, об'єктно-орієнтованих додатків типу клієнт / сервер, що працюють як в локальному, так і в глобальному варіанті (тобто в Internet).

Список використаних джерел

  1. І.Ю. Баженова «Visual FoxPro 6.0» - Москва, «Діалог-МІФІ», 1999

  2. Л. Омельченко «Самовчитель Visual FoxPro 6.0» - «BHV-Санкт-Петербург», 1999

  3. М. Базіян та ін «Використання Visual FoxPro 6» - Москва, Санкт-Петербург, Київ, Видавничий дім «Вільямс», 1999

  4. А.А. Попов «Створення додатків для FoxPro 2.5/2.6 в DOS та WINDOWS» - Москва, «ДЕСС», 1999

  5. Microsoft Developer Network (MSDN) Documentation On Visual FoxPro.

  6. http://alpha.netis.ru/win/db/toc.html

  7. http://www.cit-forum.com/

  8. http://www.vlata.com/vfp

Приложение1. Лістинг програми

Як лістингу програми виступають процедури і методи-обробники візуальних компонент змінені вручну, а також текст меню згенерований програмою.

Form1.init

SET SAFETY OFF

SET DELETED ON

copy structure to temp.dbf

set order to pozic ASCENDING

DO menu1.mpr WITH THISFORM,. T.

THIS.pageframe1.page3.cboField1.clear

THIS.pageframe1.page3.cboField2.clear

THIS.pageframe1.page3.cboField3.clear

FOR nLoop = 1 TO THIS.nFields

IF! THIS.aStructure [nLoop, 2] $ "MGO"

THIS.pageframe1.page3.cboField1.AddItem (THIS.aStructure [nLoop, 1])

THIS.pageframe1.page3.cboField2.AddItem (THIS.aStructure [nLoop, 1])

THIS.pageframe1.page3.cboField3.AddItem (THIS.aStructure [nLoop, 1])

ENDIF

ENDFOR

Form1.load

THIS.Alias ​​= ALIAS ()

THIS.nFields = AFIELDS (THIS.aStructure)

Form1.unload

IF USED (THIS.Alias)

USE IN (THIS.Alias)

ENDIF

Form1.Destroy

PACK

reindex

close databases

Form1.bldsql

LOCAL lcOperand1, lcOperand2, lcWHERE;

lcField1, lcRelation1, lcValue1,;

lcField2, lcRelation2, lcValue2,;

lcField3, lcRelation3, lcValue3,;

lcAlias, lcSQL, lcType

Test to make sure all values ​​that are required have been entered

*------------------------------------------------- -----------------

IF EMPTY (THISFORM.pageframe1.page3.cboField1.Value)

HISFORM.pageframe1.page3.cmdExecute.Enabled =. F.

RETURN

ELSE

IF THISFORM.pageframe1.page3.opgOperand1.Value> 0 AND;

EMPTY (THISFORM.pageframe1.page3.cboField2.Value)

THISFORM.pageframe1.page3.cmdExecute.Enabled =. F.

RETURN

ELSE

IF THISFORM.pageframe1.page3.opgOperand2.Value> 0 AND; EMPTY (THISFORM.pageframe1.page3.cboField3.Value) THISFORM.pageframe1.page3.cmdExecute.Enabled =. F.

RETURN

ENDIF

ENDIF

ENDIF

*------------------------------------------------- ------------------

lcWHERE = ""

lcAlias ​​= ALIAS ()

** Retrieve the values ​​of the controls into variables

lcField1 = THISFORM.pageframe1.page3.cboField1.Value

lcRelation1 = THISFORM.pageframe1.page3.cboRelation1.Value

lcValue1 = ALLTRIM (THISFORM.pageframe1.page3.txtValue1.Value)

DO CASE

CASE THISFORM.pageframe1.page3.opgOperand1.Value = 0

lcOperand1 = ""

CASE THISFORM.pageframe1.page3.opgOperand1.Value = 1

lcOperand1 = "AND"

CASE THISFORM.pageframe1.page3.opgOperand1.Value = 2

lcOperand1 = "OR"

ENDCASE

DO CASE

CASE THISFORM.pageframe1.page3.opgOperand2.Value = 0

lcOperand2 = ""

CASE THISFORM.pageframe1.page3.opgOperand2.Value = 1

lcOperand2 = "AND"

CASE THISFORM.pageframe1.page3.opgOperand2.Value = 2

lcOperand2 = "OR"

ENDCASE

lcField2 = THISFORM.pageframe1.page3.cboField2.Value

lcRelation2 = THISFORM.pageframe1.page3.cboRelation2.Value

lcValue2 = ALLTRIM (THISFORM.pageframe1.page3.txtValue2.Value)

lcField3 = THISFORM.pageframe1.page3.cboField3.Value

lcRelation3 = THISFORM.pageframe1.page3.cboRelation3.Value

lcValue3 = ALLTRIM (THISFORM.pageframe1.page3.txtValue3.Value)

** Need to put the proper delimiters around comparison values ​​of certain types

lcValue1 = THISFORM.ValidateType (THIS.pageframe1.page3.cboField1.Value, lcValue1)

** Create the second part of the WHERE condition

IF! EMPTY (lcOperand1)

lcValue2 = THISFORM.ValidateType (THIS.pageframe1.page3.cboField2.Value, lcValue2)

lcWHERE = lcOperand1 + "" + lcField2 + "" +;

lcRelation2 + "" + lcValue2

ENDIF

IF! EMPTY (lcOperand2)

lcValue3 = THISFORM.ValidateType (THIS.pageframe1.page3.cboField3.Value, lcValue3)

lcWHERE = lcWhere + "" + lcOperand2 + "" + lcField3 + "" +;

lcRelation3 + "" + lcValue3

ENDIF

** Create the first part of the WHERE condition

lcWHERE = "WHERE" + lcField1 + "" + lcRelation1 + "";

+ LcValue1 + "" + lcWHERE

** Create the full SQL command using the base table for the form

lcSQL = "SELECT * FROM" + lcAlias ​​+ "" + lcWHERE

THISFORM.DataSql = lcSQL

THISFORM.pageframe1.page3.cmdClear.Enabled =. T.

THISFORM.pageframe1.page3.cmdExecute.Enabled =. T.

Form1.clearsql

THISFORM.pageframe1.page3.cboField1.Value = ""

THISFORM.pageframe1.page3.cboRelation1.Value = "="

THISFORM.pageframe1.page3.txtValue1.Value = ""

THISFORM.pageframe1.page3.opgOperand1.Value = 0

THISFORM.pageframe1.page3.cboField2.Value = ""

THISFORM.pageframe1.page3.cboRelation2.Value = "="

THISFORM.pageframe1.page3.cboField2.Enabled =. F.

THISFORM.pageframe1.page3.cboRelation2.Enabled =. F.

THISFORM.pageframe1.page3.txtValue2.Enabled =. F.

THISFORM.pageframe1.page3.txtValue2.Value = ""

THISFORM.pageframe1.page3.opgOperand2.Value = 0

THISFORM.pageframe1.page3.cboField3.Value = ""

THISFORM.pageframe1.page3.cboRelation3.Value = "="

THISFORM.pageframe1.page3.txtValue3.Value = ""

THISFORM.pageframe1.page3.cboField3.Enabled =. F.

THISFORM.pageframe1.page3.cboRelation3.Enabled =. F.

THISFORM.pageframe1.page3.txtValue3.Enabled =. F.

THISFORM.pageframe1.page3.cmdClear.Enabled =. F.

THISFORM.pageframe1.page3.cmdExecute.Enabled =. F.

Form1.Settexboxformat

LPARAMETERS oSource, oTxt

LOCAL lcType

oTxt.Value = ""

lcType = TYPE (oSource.Value)

DO CASE

CASE lcType = "D"

oTxt.Format = "D"

CASE lcType = "L"

oTxt.Inputmask = ". T.,. F."

oTxt.Format = "M"

CASE lcType = "T"

oTxt.Inputmask = "99/99/99 99:99:99"

ENDCASE

Form1.validatetype

LPARAMETERS lField, lcValue

LOCAL lcType

lcType = TYPE (lField)

DO CASE

CASE lcType $ "CM"

lcValue = CHR (34) + lcValue + CHR (34)

CASE lcType $ "DT"

lcValue = "{" + lcValue + "}"

CASE lcType $ "NY"

IF EMPTY (lcValue)

lcValue = "0"

ENDIF

CASE lcType $ "L"

IF! INLIST (UPPER (lcValue), ". T.", ". F.")

lcValue = ". T."

ENDIF

ENDCASE

RETURN lcValue

Form1.PageFrame1.Grid1.Column1.Header1.MouseUp

LPARAMETERS nButton, nShift, nXCoord, nYCoord

IF nShift = 2

SET ORDER TO razdel DESCENDING

ELSE

SET ORDER TO razdel ASCENDING

ENDIF

GO TOP

THISFORM.Refresh

Form1.PageFrame1.Grid1.Column2.Header1.MouseUp

LPARAMETERS nButton, nShift, nXCoord, nYCoord

IF nShift = 2

SET ORDER TO pozic DESCENDING

ELSE

SET ORDER TO pozic ASCENDING

ENDIF

GO TOP

THISFORM.Refresh

Form1.PageFrame1.Grid1.Column3.Header1.MouseUp

LPARAMETERS nButton, nShift, nXCoord, nYCoord

IF nShift = 2

SET ORDER TO garant DESCENDING

ELSE

SET ORDER TO garant ASCENDING

ENDIF

GO TOP

THISFORM.Refresh

Form1.PageFrame1.Grid1.Column4.Header1.MouseUp

LPARAMETERS nButton, nShift, nXCoord, nYCoord

IF nShift = 2

SET ORDER TO cena_1 DESCENDING

ELSE

SET ORDER TO cena_1 ASCENDING

ENDIF

GO TOP

THISFORM.Refresh

Form1.PageFrame1.Page2.Activate

this.refresh

Form1.PageFrame1.Page2.commandgroup1.Command1.Click

go top

if BOF ()

MESSAGEBOX ("Ви досягли першого запису", 0 +64 +0, "Повідомлення")

endif

_screen.activeForm.refresh ()

Form1.PageFrame1.Page2.commandgroup1.Command2.Click

if! bof ()

skip -1

else

MESSAGEBOX ("Ви досягли першого запису", 0 +64 +0, "Повідомлення")

endif

_screen.activeForm.refresh ()

Form1.PageFrame1.Page2.commandgroup1.Command3.Click

hisform.pageframe1.page2.command1.visible =. T.

thisform.pageframe1.page2.cmdCancel.visible =. T.

thisform.pageframe1.page2.text1.readonly =. F.

thisform.pageframe1.page2.text2.readonly =. F.

thisform.pageframe1.page2.text3.readonly =. F.

thisform.pageframe1.page2.text4.readonly =. F.

thisform.pageframe1.page2.text5.readonly =. F.

thisform.pageframe1.page2.text6.readonly =. F.

thisform.pageframe1.page2.text7.readonly =. F.

thisform.pageframe1.page2.commandgroup1.command1.enabled =. F.

thisform.pageframe1.page2.commandgroup1.command2.enabled =. F.

thisform.pageframe1.page2.commandgroup1.command3.enabled =. F.

thisform.pageframe1.page2.commandgroup1.command4.enabled =. F.

thisform.pageframe1.page2.commandgroup1.command5.enabled =. F.

thisform.pageframe1.page2.commandgroup1.command6.enabled =. F.

thisform.pageframe1.page2.commandgroup1.command7.enabled =. F.

Form1.PageFrame1.Page2.commandgroup1.Command4.Click

append blank

thisform.refresh

thisform.pageframe1.page2.commandgroup1.command3.Click

Form1.PageFrame1.Page2.commandgroup1.Command5.Click

if messagebox ("Ви дійсно хочете видалити цей запис?", 4 +48 +256, "Комплектуючі") = 6

delete

reindex

thisform.pageframe1.page1.grid1.Refresh

thisform.refresh

thisform.pageframe1.ActivePage = 1

endif

Form1.PageFrame1.Page2.commandgroup1.Command6.Click

skip

if! eof ()

skip

else

MESSAGEBOX ("Ви досягли останній запис", 0 +64 +0, "Повідомлення")

skip-1

thisform.Refresh ()

endif

thisform.Refresh ()

Form1.PageFrame1.Page2.commandgroup1.Command7.Click

go bottom

thisform.pageframe1.page2.Refresh

Form1.PageFrame1.Page2 .. Command1.Click

thisform.pageframe1.page2.command1.visible =. F.

pozic = thisform.pageframe1.page2.text2.value

razdel = thisform.pageframe1.page2.text1.value

charakt = thisform.pageframe1.page2.text3.value

garant = thisform.pageframe1.page2.text4.value

cena_1 = thisform.pageframe1.page2.text5.value

cena_2 = thisform.pageframe1.page2.text6.value

cena_3 = thisform.pageframe1.page2.text7.value

thisform.pageframe1.page1.grid1.refresh

thisform.pageframe1.page2.text1.readonly =. T.

thisform.pageframe1.page2.text2.readonly =. T.

thisform.pageframe1.page2.text3.readonly =. T.

thisform.pageframe1.page2.text4.readonly =. T.

thisform.pageframe1.page2.text5.readonly =. T.

thisform.pageframe1.page2.text6.readonly =. T.

thisform.pageframe1.page2.text7.readonly =. T.

thisform.pageframe1.page2.commandgroup1.command1.enabled =. T.

thisform.pageframe1.page2.commandgroup1.command2.enabled =. T.

thisform.pageframe1.page2.commandgroup1.command3.enabled =. T.

thisform.pageframe1.page2.commandgroup1.command4.enabled =. T.

thisform.pageframe1.page2.commandgroup1.command5.enabled =. T.

thisform.pageframe1.page2.commandgroup1.command6.enabled =. T.

thisform.pageframe1.page2.commandgroup1.command7.enabled =. T.

thisform.pageframe1.ActivePage = 1

Form1.PageFrame1.Page3.cboField1.InteractiveChange

THISFORM.SetTextboxFormat (THIS, THISFORM.pageframe1.page3.txtValue1)

THISFORM.BldSQL

Form1.PageFrame1.Page3.cboField2.InteractiveChange

THISFORM.SetTextboxFormat (THIS, THISFORM.pageframe1.page3.txtValue2)

THISFORM.BldSQL

Form1.PageFrame1.Page3.cboField3.InteractiveChange

THISFORM.SetTextboxFormat (THIS, THISFORM.pageframe1.page3.txtValue3)

THISFORM.BldSQL

Form1.PageFrame1.Page3.cboRelation1.InteractiveChange

THISFORM.BldSQL

Form1.PageFrame1.Page3.cboRelation2.InteractiveChange

THISFORM.BldSQL

Form1.PageFrame1.Page3.cboRelation3.InteractiveChange

THISFORM.BldSQL

Form1.PageFrame1.Page3.txtValue1

THISFORM.BldSQL

Form1.PageFrame1.Page3.txtValue2

THISFORM.BldSQL

Form1.PageFrame1.Page3.txtValue3

THISFORM.BldSQL

Form1.PageFrame1.Page3.opgOperand1. InteractiveChange

THISFORM.pageframe1.page3.cboField2.Enabled =. T.

THISFORM.pageframe1.page3.cboRelation2.Enabled =. T.

THISFORM.pageframe1.page3.txtValue2.Enabled =. T.

THISFORM.BldSQL

Form1.PageFrame1.Page3.opgOperand2. InteractiveChange

THISFORM.pageframe1.page3.cboField3.Enabled =. T.

THISFORM.pageframe1.page3.cboRelation3.Enabled =. T.

THISFORM.pageframe1.page3.txtValue3.Enabled =. T.

THISFORM.BldSQL

Form1.PageFrame1.Page3.cmdExecute.Click

LOCAL lcOldAlias

lcOldAlias ​​= ALIAS ()

cMacro = ALLTRIM (THISFORM.DataSql) + "INTO CURSOR TEMPQUERY"

& CMacro

IF _TALLY = 0

# DEFINE MSG_LOC "No records were found to match the criteria you specified."

# DEFINE TITLE_LOC "No Results"

= MESSAGEBOX (MSG_LOC, 64 +0 +0, TITLE_LOC)

ELSE

BROWSE NORMAL TITLE SUBSTR (THISFORM.DataSql, AT ("WHERE", THISFORM.DataSql) + 6)

ENDIF

IF USED ("TEMPQUERY")

USE IN TEMPQUERY

ENDIF

IF USED (lcOldAlias)

SELECT (lcOldAlias)

ENDIF

Form1.PageFrame1.Page3.cmdClear.Click

THISFORM.ClearSQL

Form1.FormExit.Click

thisform.release

Main Menu

LPARAMETERS oFormRef, getMenuName, lUniquePopups, parm4, parm5, parm6, parm7, parm8, parm9

LOCAL cMenuName, nTotPops, a_menupops, cTypeParm2, cSaveFormName

IF TYPE ("m.oFormRef") # "O" OR;

LOWER (m.oFormRef.BaseClass) # 'form' OR;

m.oFormRef.ShowWindow # 2

MESSAGEBOX ([This menu can only be called from a Top-Level form. Ensure that your form's ShowWindow property is set to 2. Read the header section of the menu's MPR file for more details.])

RETURN

ENDIF

m.cTypeParm2 = TYPE ("m.getMenuName")

m.cMenuName = SYS (2015)

m.cSaveFormName = m.oFormRef.Name

IF m.cTypeParm2 = "C" OR (m.cTypeParm2 = "L" AND m.getMenuName)

m.oFormRef.Name = m.cMenuName

ENDIF

IF m.cTypeParm2 = "C" AND! EMPTY (m.getMenuName)

m.cMenuName = m.getMenuName

ENDIF

DIMENSION a_menupops [3]

IF TYPE ("m.lUniquePopups") = "L" AND m.lUniquePopups

FOR nTotPops = 1 TO ALEN (a_menupops)

a_menupops [m.nTotPops] = SYS (2015)

ENDFOR

ELSE

a_menupops [1] = "file"

a_menupops [2] = "edit"

a_menupops [3] = "help"

ENDIF

LOCAL lHasNewMenu

lHasNewMenu = (TYPE ("CNTPAD (m.cMenuName)") # "N")

IF m.lHasNewMenu

DEFINE MENU (m.cMenuName) IN (m.oFormRef.Name) BAR

ENDIF

DEFINE PAD _03s1d879u OF (m.cMenuName) PROMPT "\ <File" COLOR SCHEME 3;

KEY ALT + F, ""

DEFINE PAD _03s1d879v OF (m.cMenuName) PROMPT "\ <Edit" COLOR SCHEME 3;

KEY ALT + E, ""

DEFINE PAD _03s1d879w OF (m.cMenuName) PROMPT "\ <Query" COLOR SCHEME 3;

KEY ALT + Q, ""

DEFINE PAD _03s1d879x OF (m.cMenuName) PROMPT "\ <Help" COLOR SCHEME 3;

KEY ALT + H, ""

ON PAD _03s1d879u OF (m.cMenuName) ACTIVATE POPUP (a_menupops [1])

ON PAD _03s1d879v OF (m.cMenuName) ACTIVATE POPUP (a_menupops [2])

ON SELECTION PAD _03s1d879w OF (m.cMenuName);

DO _03s1d879z;

IN LOCFILE ("MY \ MENU1", "MPX; MPR | FXP; PRG", "WHERE is MENU1?")

ON PAD _03s1d879x OF (m.cMenuName) ACTIVATE POPUP (a_menupops [3])

DEFINE POPUP (a_menupops [1]) MARGIN RELATIVE SHADOW COLOR SCHEME 4

DEFINE BAR 1 OF (a_menupops [1]) PROMPT "\ <Quit";

MESSAGE "Вихід з програми"

ON SELECTION BAR 1 OF (a_menupops [1]);

DO _03s1d87a4;

IN LOCFILE ("MY \ MENU1", "MPX; MPR | FXP; PRG", "WHERE is MENU1?")

DEFINE POPUP (a_menupops [2]) MARGIN RELATIVE SHADOW COLOR SCHEME 4

DEFINE BAR 1 OF (a_menupops [2]) PROMPT "\ <Add record"

DEFINE BAR 2 OF (a_menupops [2]) PROMPT "\ <Delete record"

DEFINE BAR 3 OF (a_menupops [2]) PROMPT "\ <Edit record"

ON SELECTION BAR 1 OF (a_menupops [2]);

DO _03s1d87a6;

IN LOCFILE ("MY \ MENU1", "MPX; MPR | FXP; PRG", "WHERE is MENU1?")

ON SELECTION BAR 2 OF (a_menupops [2]);

DO _03s1d87a8;

IN LOCFILE ("MY \ MENU1", "MPX; MPR | FXP; PRG", "WHERE is MENU1?")

ON SELECTION BAR 3 OF (a_menupops [2]);

DO _03s1d87aa;

IN LOCFILE ("MY \ MENU1", "MPX; MPR | FXP; PRG", "WHERE is MENU1?")

DEFINE POPUP (a_menupops [3]) MARGIN RELATIVE SHADOW COLOR SCHEME 4

DEFINE BAR 1 OF (a_menupops [3]) PROMPT "\ <About"

ON SELECTION BAR 1 OF (a_menupops [3]);

DO _03s1d87ac;

IN LOCFILE ("MY \ MENU1", "MPX; MPR | FXP; PRG", "WHERE is MENU1?")

ACTIVATE MENU (m.cMenuName) NOWAIT

IF m.cTypeParm2 = "C"

m.getMenuName = m.cMenuName

m.oFormRef.Name = m.cSaveFormName

ENDIF

PROCEDURE _03s1d879z

mainform.pageframe1.Activepage = 3

PROCEDURE _03s1d87a4

mainform.release

PROCEDURE _03s1d87a6

mainform.pageframe1.Activepage = 2

mainform.pageframe1.page2.commandgroup1.command4.Click ()

PROCEDURE _03s1d87a8

mainform.pageframe1.Activepage = 2

mainform.pageframe1.page2.commandgroup1.command5.Click (PROCEDURE _03s1d87aa

mainform.pageframe1.Activepage = 2

mainform.pageframe1.page2.commandgroup1.command3.Click

PROCEDURE _03s1d87ac

do form Fabout.scx

Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Курсова
224.6кб. | скачати


Схожі роботи:
АРМ менеджера відділу продажів ТЦПУ ВАТ Центральний телеграф
Удосконалення організації робочих місць персоналу на прикладі робочого місця менеджера з продажу
Розрахунок пристрої щодо комплектуючих
Асортимент і контроль якості персональних комп`ютерів та їх комплектуючих в магазині Північного
АРМ бухгалтера 2
АРМ Колекціонера марок
АРМ реєстратора лікарні
АРМ мененджер автосалону А моторс
АРМ мененджер автосалону А-моторс
© Усі права захищені
написати до нас