Проблемы с параметром dbExpress TSQLConnection - PullRequest
2 голосов
/ 18 декабря 2011

Я новичок в dbexpress и не могу понять, как установить параметр TSQLConnection для имени хоста SQL во время выполнения.Когда я устанавливаю свою программу в клиентскую систему, TSQLConnectionHost все еще читает Host из моей системы разработки, которую я ввел во время разработки.

Ответы [ 3 ]

2 голосов
/ 18 декабря 2011

TSQLConnection.Params имеет тип TStrings, что означает, что он содержит набор String элементов.В случае TSQLConnection Params содержит набор пар Name=Value, где Name - это имя параметра, а Value - это значение параметра.Чтобы прочитать значение определенного параметра, используйте:

var
  s: String;
...
s := SQLConnection1.Params.Values['ParamName'];

Чтобы присвоить значение конкретному параметру, используйте:

SQLConnection1.Params.Values['ParamName'] := 'NewValue';

(замените «ParamName» на фактическое имя параметра и «NewValue»'с фактическим новым значением.)

0 голосов
/ 07 марта 2012

Причиной вашей проблемы является то, что вы не отключили SQLConnection И все наборы данных перед распространением вашего приложения. Список задач а) убедитесь, что все компоненты НЕ подключены. б) установите параметры SQLConnection на пустые. c) при запуске приложения прочитайте необходимые параметры подключения из INI-файла и заполните их SQLConnection. г) ТОГДА подключайся и у тебя все будет хорошо! С уважением Chris

0 голосов
/ 18 декабря 2011

Я столкнулся с этой проблемой несколько лет назад, когда начал разрабатывать dbExpress.На моей машине для разработки базы данных находились в расположении X, тогда как на производственных машинах базы данных находились в расположении Y. Мне удалось обойти это, сохранив физическое расположение базы данных в реестре (с помощью небольшой служебной программы, которую я написал)и затем используйте следующий код для загрузки правильного значения.Местоположение может быть сохранено в INI-файле, что потребует небольшого изменения моего кода, но эта часть менее важна.

procedure TDm.SQLConnection1BeforeConnect(Sender: TObject);
var
 dir: string;

begin
 with TRegIniFile.create (regpath) do   // this is where I get the physical value
  begin
   dir:= ReadString ('firebird', progname, '');
   free
  end;

 with sqlconnection1 do
  begin
   close;
   params.values['database']:= dir;
  end;
end;
...