Форум: "Начинающим";
Текущий архив: 2005.11.13;
Скачать: [xml.tar.bz2];
ВнизСоздание компонента ADOQuery в Run-Time Найти похожие ветки
← →
Vano85 © (2005-10-24 10:51) [0]Господа может подскажете, как создать компонент ADOQuery во
время выполнения программы. Пробывал следующую конструкцию:
uses
Classes, Windows, SysUtils, DB, ADODB
var
q1:Tadoquery
begin
q1:=Tadoquery.Create(self)
end
Проблема еще в том, что данный код у меня даже не компилетца. Я использую консольное приложение. Постоянна ругается на SELF.
Может существуют другие альтернативные варианты создания этого компонента?
← →
Плохиш © (2005-10-24 10:56) [1]
> q1:=Tadoquery.Create(nil)
← →
stone © (2005-10-24 10:57) [2]
> Постоянна ругается на SELF.
Потому что там нет Self
Делай тогда
q1:=Tadoquery.Create(nil)
только не забудь его потом уничтожить
← →
msguns © (2005-10-24 11:13) [3]
function TdmLibr.DBT_PutCTLG(Rec: PDBRec_CTLG): boolean;
// Добавление / Изменение записи в каталоге
var
NewID: Integer;
begin
result := false;
if Rec.ID=-1 then
with TADOQuery.Create(nil) do
try
Connection := cnLibr;
SQL.Text := "SELECT MAX(ID)+1 AS NEWID FROM CTLG";
Open;
if RecordCount>0 then
NewID := Fields[0].AsInteger
else
NewID := 1;
Close;
finally
Free;
end
else
NewID := Rec.ID;
if NewID=0 then exit;
with TADOCommand.Create(nil) do
try
Connection := cnLibr;
if Rec.ID=-1 then
CommandText := "INSERT INTO CTLG (ID,BNAME,TID,BCLTNAME,BCLTVOL,THID,PYEAR,PID,PHID"+
",BINVNUM,BPRICE,BDATEIN,BDATEOUT,BAVAIL,CID,UID,ONUM,SNUM,BADDR"+
",BSTORR,BSTORB,BSTORS,BSTORN,BAUTORS,BANNOT,BMOVINFO) "+
" VALUES (:ID,:BNAME,:TID,:BCLTNAME,:BCLTVOL,:THID,:PYEAR,:PID,:PHID"+
",:BINVNUM,:BPRICE,:BDATEIN,:BDATEOUT,:BAVAIL,:CID,:UID,:ONUM,:SNUM,:BADDR"+
",:BSTORR,:BSTORB,:BSTORS,:BSTORN,:BAUTORS,:BANNOT,:BMOVINFO) "
else
CommandText := "UPDATE CTLG SET BNAME=:BNAME,TID=:TID, BCLTNAME=:BCLTNAME, BCLTVOL=:BCLTVOL "+
",THID=:THID, PYEAR=:PYEAR, PID=:PID, PHID=:PHID, BINVNUM=:BINVNUM "+
",BPRICE=:BPRICE, BDATEIN=:BDATEIN, BDATEOUT=:BDATEOUT, BAVAIL=:BAVAIL "+
",CID=:CID, UID=:UID, ONUM=:ONUM, SNUM=:SNUM, BADDR=:BADDR, BSTORR=:BSTORR "+
",BSTORB=:BSTORB, BSTORS=:BSTORS, BSTORN=:BSTORN, BAUTORS=:BAUTORS "+
",BANNOT=:BANNOT, BMOVINFO=:BMOVINFO "+
" WHERE ID=:ID ";
Parameters.ParamByName("ID").Value := NewID;
Parameters.ParamByName("BNAME").Value := Rec.BNAME;
Parameters.ParamByName("TID").Value := Rec.TID;
Parameters.ParamByName("BCLTNAME").Value := Rec.BCLTNAME;
Parameters.ParamByName("BCLTVOL").Value := Rec.BCLTVOL;
Parameters.ParamByName("THID").Value := NULL;
if Rec.THID>-1 then Parameters.ParamByName("THID").Value := Rec.THID;
Parameters.ParamByName("PYEAR").Value := NULL;
if Rec.PYEAR>0 then Parameters.ParamByName("PYEAR").Value := Rec.PYEAR;
Parameters.ParamByName("PID").Value := NULL;
if Rec.PID>-1 then Parameters.ParamByName("PID").Value := Rec.PID;
Parameters.ParamByName("PHID").Value := NULL;
if Rec.PHID>-1 then Parameters.ParamByName("PHID").Value := Rec.PHID;
Parameters.ParamByName("BINVNUM").Value := Rec.BINVNUM;
Parameters.ParamByName("BPRICE").Value := NULL;
if Rec.BPRICE>0 then Parameters.ParamByName("BPRICE").Value := Rec.BPRICE;
Parameters.ParamByName("BDATEIN").Value := NULL;
Parameters.ParamByName("BDATEOUT").Value := NULL;
if Rec.BDATEIN>0 then Parameters.ParamByName("BDATEIN").Value := DateToStr(Rec.BDATEIN);
if Rec.BDATEOUT>0 then Parameters.ParamByName("BDATEOUT").Value := DateToStr(Rec.BDATEOUT);
Parameters.ParamByName("BAVAIL").Value := Rec.BAVAIL;
Parameters.ParamByName("CID").Value := NULL;
if Rec.CID>-1 then Parameters.ParamByName("CID").Value := Rec.CID;
Parameters.ParamByName("UID").Value := NULL;
if Rec.UID>-1 then Parameters.ParamByName("UID").Value := Rec.UID;
Parameters.ParamByName("ONUM").Value := Rec.ONUM;
Parameters.ParamByName("SNUM").Value := Rec.SNUM;
Parameters.ParamByName("BADDR").Value := Rec.BADDR;
Parameters.ParamByName("BSTORR").Value := Rec.BSTORR;
Parameters.ParamByName("BSTORB").Value := Rec.BSTORB;
Parameters.ParamByName("BSTORS").Value := Rec.BSTORS;
Parameters.ParamByName("BSTORN").Value := NULL;
if Rec.BSTORN>0 then Parameters.ParamByName("BSTORN").Value := Rec.BSTORN;
Parameters.ParamByName("BAUTORS").Value := Rec.BAUTORS;
Parameters.ParamByName("BANNOT").Value := Rec.BANNOT;
Parameters.ParamByName("BMOVINFO").Value := Rec.BMOVINFO;
Execute;
result := true;
Rec.ID := NewID;
finally
Free;
end;
end;
← →
Vano85 © (2005-10-24 21:09) [4]Хорошо ребята в принципе спасибо. Все это дело работает,но только когода
работа происходит не в консольном приложении, а в консольном приложение видает ошибку EOLeSYsErorr и Не был произведен вызов ColInitialize.
Может чем нибудь поможете?
← →
isasa © (2005-10-24 21:23) [5]Не был произведен вызов ColInitialize.
Может чем нибудь поможете?
Вызвать за тебя
CoInitialize(nil); // CoInitializeEx
...
CoUninitialize;
← →
Vano85 © (2005-10-24 23:34) [6]
> CoInitialize(nil); // CoInitializeEx
> ...
> CoUninitialize;
Может подскажешь что за зверь и как с ним бороться :)?
Где можно узнать об этом и что это такое ?
Спасибо за помощь.
← →
isasa © (2005-10-24 23:42) [7]См. MSDN
CoInitialize
Initializes the COM library on the current thread and identifies the concurrency model as single-thread apartment (STA).
← →
Vano85 © (2005-10-24 23:45) [8]Наверное существует интерфейс для получения доступа к этой функции, потому что как не крути компилятор не хочет вообщее воспринимать ее никак? Подскажи пожалуйста.
← →
isasa © (2005-10-24 23:59) [9]unit ComObj;
← →
isasa © (2005-10-25 00:00) [10]$DELPHI$\source\rtl\common\ComObj.pas
unit ComObj
← →
Vano85 © (2005-10-25 09:30) [11]Огромное спасибо.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2005.11.13;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.04 c