Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Создание компонента 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)


Наверх

Титульная страница Поиск, карта сайта Написать письмо