![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание компонента ADOQuery в Run-Time [D7]
Vano85 © (2005-10-24 10:51:00)Господа может подскажете, как создать компонент ADOQuery во
время выполнения программы. Пробывал следующую конструкцию:
uses
Classes, Windows, SysUtils, DB, ADODB
var
q1:Tadoquery
begin
q1:=Tadoquery.Create(self)
end
Проблема еще в том, что данный код у меня даже не компилетца. Я использую консольное приложение. Постоянна ругается на SELF.
Может существуют другие альтернативные варианты создания этого компонента?
Vano85 (2005-10-25 09:30:00) [1]Огромное спасибо.
isasa (2005-10-25 00:00:00) [2]$DELPHI$\source\rtl\common\ComObj.pas
unit ComObj
isasa (2005-10-24 23:59:00) [3]unit ComObj;
Vano85 (2005-10-24 23:45:00) [4]Наверное существует интерфейс для получения доступа к этой функции, потому что как не крути компилятор не хочет вообщее воспринимать ее никак? Подскажи пожалуйста.
isasa (2005-10-24 23:42:00) [5]См. 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:34:00) [6]
> CoInitialize(nil); // CoInitializeEx
> ...
> CoUninitialize;
Может подскажешь что за зверь и как с ним бороться :)?
Где можно узнать об этом и что это такое ?
Спасибо за помощь.
isasa (2005-10-24 21:23:00) [7]Не был произведен вызов ColInitialize.
Может чем нибудь поможете?
Вызвать за тебя
CoInitialize(nil); // CoInitializeEx
...
CoUninitialize;
Vano85 (2005-10-24 21:09:00) [8]Хорошо ребята в принципе спасибо. Все это дело работает,но только когода
работа происходит не в консольном приложении, а в консольном приложение видает ошибку EOLeSYsErorr и Не был произведен вызов ColInitialize.
Может чем нибудь поможете?
msguns (2005-10-24 11:13:00) [9]
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;
stone (2005-10-24 10:57:00) [10]
> Постоянна ругается на SELF.
Потому что там нет Self
Делай тогда
q1:=Tadoquery.Create(nil)
только не забудь его потом уничтожить
Плохиш (2005-10-24 10:56:00) [11]
> q1:=Tadoquery.Create( nil)