Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.041 c
2-1129796780
Alex7
2005-10-20 12:26
2005.11.13
Переменная "Self"


1-1129990116
Tori
2005-10-22 18:08
2005.11.13
проблемы перехода от exe к dll


2-1129910821
Spinu Oleg
2005-10-21 20:07
2005.11.13
Указатели


1-1129788909
Zhekson
2005-10-20 10:15
2005.11.13
Как на определённое время повесить надпись поверх всех окон?


1-1130158984
НовичОк!!!
2005-10-24 17:03
2005.11.13
Как компонент Image перемещать вместе со скролом StringGrid?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский