Домашен център Икар

Глава 2 написване на първата програма (продължение)

икар
Фиг. 1 Ако възникне грешка при изпълнение на програмата DBU.EXE, изберете Игнориране.

домашен
Фиг. 2

Сега трябва да се свържем с базата данни (DB) в момента на зареждане на нашето приложение. За да направим това, трябва да създадем ODBC източник на данни, чрез драйвера на който PowerBuilder и програмата ще взаимодействат с базата данни. За да направите това, щракнете върху иконата в лентата с инструменти на PowerBuilder. В прозореца "Database Profiler", който се отваря, отворете клона "ODBC", а в него клона "Utilities". Щракнете два пъти върху „ODBC Administrator“ (Фигура 3).

икар
Фиг. 3

Сега трябва да създадем профил, за да свържем PowerBuilder с базата данни, докато разработваме приложението. За да направите това, в прозореца "Database Profiler" изберете "ODBC" и щракнете върху бутона "New". В прозореца "Настройка на профил на база данни - ODBC", който се показва, в раздела "Връзка", в полето "Име на профила" въведете името на профила - "Бъркотия". В падащия списък "Източник на данни" изберете създадения ODBC източник - "Бъркотия" и махнете отметките в полетата "Потребителско име" и "Парола" (фиг. 4). Щракнете върху бутона Ok и в прозореца Database Profiler маркирайте елемента Mess и щракнете върху бутона Connect. Всичко, източникът и профилът са готови, връзката с базата данни е установена, можете да продължите да работите.

център
Фиг. 4

Запазете промените си. Сега нека напишем функция, която динамично ще създаде ODBC източник, ако програмата не го намери. Изберете „Функции“ от левия падащ списък и „Нова функция“ от десния падащ списък. Нека дефинираме параметрите на функцията:

ReturnType = Boolean
Име на функция = Create_DSN
Напишете функционален код:

Нека запазим промените и да видим как ще работи тази функция. В блок (1) декларираме променлива syskey от тип низ и променлива err тип integer, дълго цяло число, равно на нула. В блок (2) използваме оператора Space(), за да запълним глобалната променлива sysdir с 255 интервала. След това извикваме глобалната Windows API функция GetSystemDirectory , която връща пътя до системната директория на Windows към променливата sysdir и "добавяме" към тази променлива името на файла на драйвера, чрез който се осъществява взаимодействието между програмата и базата данни. В блок (3) записваме в променливата syskey името на раздела на системния регистър на Windows, който ще съхранява информация за всички параметри на нашия ODBC източник - Mess. В блок (4) добавяме към променливата err стойностите, върнати от оператора RegistrySet. Този оператор записва данни в системния регистър на Windows. Нека разгледаме неговите параметри: Тъй като използвахме оператора RegistrySet 11 пъти, в блок (5) проверяваме дали операторът е върнал 111 пъти.Ако е така, функцията връща true. Ако възникне грешка в едно от извикванията и операторът върна стойността -1 поне веднъж, тогава стойността на променливата err няма да бъде равна на 11 и функцията връща стойността false (false).

Да преминем към първата задача – да напишем кода, който ще се свърже с базата данни в момента на стартиране на приложението. Нека добавим кода по-долу към събитието Open на обекта на приложението (клас на приложение) Mess преди реда Open (w_main). Нека запазим промените и да видим как работи този код. В блок (1), използвайки външната функция на Windows API GetCurrentDirectory, получаваме пътя до директорията, от която е стартирана нашата програма в променливата curdir. блокиран (2)попълваме свойствата на глобалния базов обект на структурата SQLCA, който се използва за съхраняване на информация за връзката с базата данни, и използваме оператора за свързване на връзка с база данни, за да се свържем с базата данни. Обърнете внимание, че точката и запетая непосредствено след оператора за свързване е синтаксисът за извикване на езика SQL 2 в PowerBuilder. След като операторът за свързване се изпълни, кодът на операцията се връща към свойството sqlcode на SQLCA обекта. При успешна връзка кодът е нула. В блок (3) проверяваме каква стойност е върната и ако е различна от нула, приемаме, че ODBC източникът липсва или е неправилно конфигуриран. В този случай извикваме функцията create_dsn(), която създава източника и се опитваме да се свържем отново с базата данни. В блок (4) отново проверяваме каква стойност е върната след операцията за свързване и ако тя отново е различна от нула, информираме потребителя, че не можем да се свържем с базата данни и някои от функциите на програмата ще бъдат недостъпни.

домашен
Фиг. 5

Прозорец с данни dw_1, команден бутон cb_add ("Добавяне"), команден бутон cb_delete ("Изтриване") и команден бутон cb_cancel ("Отказ") (Фигура 5). В събитието Clicked() на бутона cb_cancel добавете кода за затваряне на прозореца.

Сега трябва да създадем обекта Data Window, който ще използваме. За да направите това, от менюто "Нов файл" отворете диалоговия прозорец за създаване на обект и в раздела "DataWindow" изберете иконата "Мрежа". Отваря се прозорецът на съветника за създаване на DataWindow. Изберете иконата "SQL Select" и щракнете върху "Next". Ще се отворят прозорецът Data Window Painter и прозорецът Select Tables. В него избираме нашата таблица с база данни - ПОТРЕБИТЕЛИ и натискаме "Отвори". Таблицата се отваря в областта Списък за избор на оформление на таблица на Painter на прозореца с данни в графичен изглед. С кликване на мишката маркирайте и двете полета на таблицата - ПОТРЕБИТЕЛ и КОМЕНТАР.Щракнете върху иконата в лентата с инструменти. В новоотворения съветник DataWindow щракнете върху Напред и Край. Върнахме се в Data Window Painter, в областта Design (фиг. 6). И така, основата за обекта Data Window е създадена, сега трябва да му дадем правилния външен вид и да дефинираме свойствата и параметрите, от които се нуждаем. Първо, нека запазим обекта като dw_1. След това трябва да "русифицираме" полетата на прозореца с данни. За да направите това, изберете ги един по един с щракване на мишката и задайте шрифта MS Scan Serif в лентата с инструменти. След това преименувайте заглавията на колоните „Потребител“ и „Коментар“ на „Дестинация“ и „Описание“. Сега отидете в менюто „Свойства за актуализиране на редове“ и задайте свойствата в прозореца, който се отваря:

DataObject = dw_1
hscrollbar
VscrollBar
превъртане на живо

Нека запазим промените. Сега нека да преминем към кода на събитието Open() на прозореца w_addr и да добавим следния код там:

В първия ред центрираме прозореца на екрана. Във втория ред, използвайки метода SetTransObject(), казваме на DataWindow, че връзката към базата данни е чрез SQLCA. В третия ред използваме метода Retrieve(), за да инструктираме DataWindow да показва редовете, съдържащи се в базата данни.

Сега нека кодираме събитието Clicked() на обекта cb_delete.

WindowType = изскачащ прозорец!
Цвят на прозореца=сребрист
видими
Активирано
заглавна лента
w >
височина = 375
Фиг. 7След това поставете следните контроли в този прозорец: 2 Статичен текст ( st_1 и st_2 ), 2 Единичен редКонтрола за редактиране (sle_name и sle_comm), 2 команден бутон (cb_ok и cb_cancel). Поставете ги на прозореца (фиг. 7) и им задайте следните свойства:

st_1

Текст = име на компютър
st_2
Текст = Описание
sle_name
Лимит = 18 - в полето за въвеждане могат да се въвеждат не повече от 18 символа.
sle_comm
Лимит = 64 - в полето за въвеждане могат да се въвеждат не повече от 64 символа.
cb_ok
По подразбиране
cb_cancel
Отказ

Сега нека напишем обработка на събития за този прозорец. Събитие Open() на прозорец:

Събитието Clicked() на бутона cb_cancel:

Събитието Clicked() на бутона cb_ok:

Сега нека вмъкнем извикването на прозорец w_insert в събитието Clicked() на обекта cb_add на прозореца w_addr:

Остана много малко. Вмъкнете обработка в събитието DoubleClicked() на обекта dw_1 на прозореца w_addr:

Вмъкнете извикването на прозореца w_addr в събитието Clicked() на бутона cb_user на прозореца w_main.

данни
Фиг. 8 В полето " Име на изпълним файл " въведете пътя до програмната директория и името на файла на приложението. В падащия списък " Rebuild " изберете " Full ". Запазете проекта като "pr_message" (Фигура 8). За да компилирате изпълним EXE файл, изберете елемента от менюто "Design Build Project". След като изпълните тези стъпки, ще се появи файл mess.exe в папката " c:\project\message\ ".

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

IKAR, Програмист-разработчик PowerBuilder. Хоум център ИкарGSS, Програмист-разработчик PowerBuilder. [email protected]

1 Windows API - Windows Application Programming Interface - специаленфункционалност на Windows, която може да бъде извикана от приложение, различно от Windows, което позволява използването на стандартни формуляри, диалогови прозорци, функции и други елементи на операционната система. Назад към текста^

2 SQL - Structured Query Language - структуриран език за заявки. Назад към текста^