Форум: "Базы";
Текущий архив: 2003.10.30;
Скачать: [xml.tar.bz2];
ВнизПомогите разобраться с TADOQuery Найти похожие ветки
← →
Goga (2003-10-09 17:08) [0]Есть такой код:
//===================================
program Jurnal;
uses
Forms,
ADODB,
DB,
Dialogs, Variants,
...;
{$R *.res}
var
adoConnection: TADOConnection;
dsQuery: TADOQuery;
srcSQL: String;
srcTemp: Variant;
begin
Application.Initialize;
...
Application.CreateForm(...);
adoConnection:=TADOConnection.Create(Application);
dsQuery:=TADOQuery.Create(Application);
adoConnection.Provider:="ADsDSOObject";
adoConnection.LoginPrompt:=False;
dsQuery.Close;
dsQuery.ConnectionadoConnection;
srcSQL:="select deliveryAccess, cn from "LDAP://dc=xxxxx,dc=ru" where objectClass="deliveryUser"";
dsQuery.SQL.Add(srcSQL);
dsQuery.ExecSQL;
while not dsQuery.Eof do
begin
srcTemp:=dsQuery.FieldValues["deliveryAccess"];
ShowMessage(VarToStr(srcTemp));
dsQuery.Next;
end;
dsQuery.Free;
adoConnection.Free;
Application.CreateForm(...);
...
Application.Run;
end.
//===================================================
Попытка совершить - dsQuery.SQL.Add(srcSQL)
приводит к ошибке. Которая вызывает полный обвал программы.
От чего это может происходить?
← →
sniknik (2003-10-09 17:34) [1]Application в Create(Application); на nil замени. и в начале программы поставь CoInitialize(nil) в конце CoUnInitialize.
должно изменится к лутшему.
← →
sniknik (2003-10-09 17:37) [2]упс. CoInitialize(nil)/CoUnInitialize похоже не надо. (не заметил что это нормальная прога просто код в проекте, показалось консольная)
← →
sniknik (2003-10-09 17:55) [3]и еще раз, упс. не вижу где adoConnection.ConnectionString инициализируется?
а вот adoConnection.Provider подставится автоматом при присвоенини строки ConnectionString (не нужно).
← →
sniknik (2003-10-09 18:01) [4]слушай может тебе код по новой переписать? все, несмотря в этот. тут сплошные ошибки
dsQuery.ConnectionadoConnection; ???
в принципе даже скомпилится не должна.
← →
KSergey (2003-10-10 12:29) [5]А вообще не очень удачный подход, на мой взгляд.
Это как со сплеш-экранами: часто имеются рекомендации делать его прямо в DPR (даже авторитеты на это указывают), однако, по-моему, код, который может вызвать исключения (а уж работа с БД - обязательно может и вызовет) - лучше делать внутри какого-либо метода объекта Application. При этом, вообще-то говоря, весь пользовательский, так скажем, код программы (который пишется без изменения dpr, а лишь в других модулях программы) и так выполняется из метода Application: это либо CreateForm, либо Run. Так что есть мысл весь указанный в вопросе код перенести в OnCreate какой-либо формы - результат будет тот же, зато исключения обработаются более корректно (я бы даже сказал иначе: они вообще обработаются;).
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.10.30;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.011 c