Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.13;
Скачать: CL | DM;

Вниз

Создание компонента 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.032 c
3-1128229447
Alexx2004
2005-10-02 09:04
2005.11.13
Сортировка в Dbgrid


14-1130042170
SergP.
2005-10-23 08:36
2005.11.13
MSWORD


1-1129806966
kivadim
2005-10-20 15:16
2005.11.13
как получить доступ из одного объекта к элементам др. объекта


14-1129995110
Pavel__
2005-10-22 19:31
2005.11.13
Помогите правильно перевести с английского


14-1129992001
Express
2005-10-22 18:40
2005.11.13
Invalid file name