2015-05-25 4 views
-1

Я использую TAdoconnection для доступа к базе данных. Во время разработки я устанавливаю строку подключения в свою локальную базу данных и устанавливаю связь с истиной, чтобы получить информацию для других db-компонентов.Забудьте об обновлении параметра для производственной версии

Когда я завершаю программу для клиента, я иногда забываю сбросить параметр, что приводит к исключению на компьютере-клиенте, потому что строка соединения неверна.

Я попытался включить событие oncreate в датамодуле (первая строка), связанное: = false, но, похоже, поздно. Как я могу убедиться, что программа имеет настройки для клиента? я попытался установить некоторые параметры в в условной компиляции фразы, как:

{$IFDEF PRODUCT} 
param1:=.. 
.... 
{$ENDIF} 

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

+0

Нет условного кода в файлах dfm. Просто не делайте никаких настроек в системе контроля версий. Предположительно, вы всегда просматриваете изменения перед совершением? –

+0

@DavidHeffernan Я действительно не использую систему контроля версий; моя система называется папками Windows со специальной функцией резервного копирования. В предыдущих проектах у меня был некоторый контакт с некоторыми системами, но я никогда не видел возможности «разбить» мои настройки разработки из исходного кода. –

+3

Это не разработка программного обеспечения без контроля версий. –

ответ

3

Вы можете установить истинную ConnectionString во время выполнения на TADOConnection.OnBeforeConnect события:

procedure TDM1.ADO1BeforeConnect(Sender: TObject); 
begin 
    ADO1.ConnectionString := 'Provider=SQLOLEDB;......'; 
end; 

Или вы можете отложить подключение

var CanConnect: Boolean; 
procedure TDM1.ADO1BeforeConnect(Sender: TObject); 
begin 
    if not CanConnect then Abort; 
end; 
+0

Мне кажется, что искатель хочет иметь возможность устанавливать свойства во время разработки. –

+0

Мне кажется, что наиболее перспективное решение для использования beforeconnect или setconnected –

+0

@Christine Хотите, чтобы строка подключения была установлена ​​во время разработки или нет? –

0

Вы не можете использовать условные если таковые DFM файлы. Это означает, что если вы установите свойства во время разработки, то они будут применяться во время выполнения, безусловно.

Если вам необходимо избегать доставки программного обеспечения с определенными наборами свойств, вы должны просто прекратить это делать. Программное решение во время выполнения не является вариантом.

Лично я хотел бы использовать мой контроль версий, чтобы помочь. Всякий раз, когда я совершаю изменения, я просматриваю все изменения. Я бы хотел, чтобы это было частью моей программы для проверки изменений dfm.

Кроме того, я тестировал программное обеспечение перед его выпуском. Это тестирование необходимо выполнить в чистом помещении. Вам понадобится моментальный снимок виртуальной машины, который будет представлять целевую среду развертывания. Тестирование на вашей машине разработки явно не является жизнеспособным вариантом.

0

Как уже говорилось, система управления версиями может помочь обнаружить изменения в ваших файлах .DFM, однако в вашем распоряжении также некоторые другие инструменты/идеи.

Вот несколько идей, которые не влияют на текущие процедуры развертывания слишком много:

1) Connected свойство: GExperts GExperts включает в себя IDE надстройка, которая может обнаружить открытые соединения во время компиляции, и автоматически установите для связанного свойства значение false для вас. Как минимум, вы можете использовать инструмент для обнаружения и изменения вручную, или пусть инструмент сделает это за вас. Эту функцию можно найти в меню GExperts: Configuration, Set Component Properties, затем добавить TAdoConnection, свойство: Connected, Value: false.

2) ConnectionString: Переместите строку подключения в файл .ini или реестр и укажите два значения: один для разработки и один для производства. В вашем коде, установить каждый из которых основан на флаге или использования:

if debughook <> 0 then 
    // fetch design-time connection string 
else 
    // fetch production connection string 

Я также хотел бы предложить вам взглянуть на автоматизацию процесса сборки с помощью программного обеспечения, таких как FinalBuilder.