Как все это собрать воедино и использовать в программе
Здесь кода не будет, здесь будет описание. Итак, у нас есть программа, которой нужно "присоединиться" к базе Microsoft Access, лежащей совсем рядом, в текущем каталоге. На машине пользователя нам не нужно ничего, кроме стандартного набора bpl и BDE. Но - теперь не нужны SQL Links, можно использовать, например, Install Shield, можно взять отдельный дистрибутив BDE. Поехали:
1. На основную форму проекта кидаем компоненту TDatabase. Устанавливаем ее свойства: LoginPrompt - false, DatabaseName - dbMain, AliasName - c2a (имя источника данных ODBC). Во всех компонентах TQuery или TTable свойство Database Name будет равно dbMain. Конечно, можно не использовать компоненту TDatabase, а в TQuery или TTable прямо указывать имя источника данных ODBC, но представьте, если вы написаи проект формочек на двадцать-тридцать, а потом решили, что имя источника 'MySuperDSN' не в полной мере отражает всю вашу крутость :-) Изменять свойство у полусотни компонент - очень муторное занятие, поверьте.
2. В конструкторе основной формы прописываем код примера №1, вставляя на место комментария следующий код:
if (t == "c2a")
{
Exists = true;
break;
}
а после цикла - такой фрагмент:
if (!Exists)
{
NewDSN();
}
3. Функция NewDSN() полностью повторяет код примера №2.
Теперь при первом запуске программы будет создан источник данных ODBC Microsoft Access с именем c2a, ссылающийся на файл db1.mdb, лежащий в том же каталоге, что и программа.
4. На всякий непредвиденный случай (если вы переместили программу в другой каталог, поменялась буква диска или сетевое имя, где лежит база данных) можно в программе предусмотреть немедленное перезаписывание DSN по горячей клавише, что-то типа такого:
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if (Shift.Contains(ssAlt) && Shift.Contains(ssCtrl))
if (Key==VK_F1)
{
if (Application -> MessageBox("Перезаписать DSN?",
"Вопрос",MB_YESNO)==IDYES)
{
NewDSN();
}
}
}
Здесь для перезаписи DSN используется комбинация Alt-Ctrl-F1
Знаете ли Вы, что спецификация - это документ, описывающий соглашение между разработчиками и пользователями. Разработчик берется написать модуль, а пользователь соглашается не полагаться на знания о том, как именно этот модуль реализован, т.е. не предполагать ничего такого, что не было бы указано в спецификации. Такое соглашение позволяет разделить анализ реализации от собственно использования программы. Спецификации дают возможность создавать логические основы, позволяющие успешно "разделять и властвовать".