Главная страница
    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.04 c
8-1117391048
Grief
2005-05-29 22:24
2005.11.13
воспроизведение звука


2-1129986794
SergP
2005-10-22 17:13
2005.11.13
Application.Terminate


8-1119930398
zvb
2005-06-28 07:46
2005.11.13
opengl и динамические массивы


3-1127990038
1g0r
2005-09-29 14:33
2005.11.13
подключение через dbExpress SYS AS SYSDBA


4-1125846248
Sormy
2005-09-04 19:04
2005.11.13
RSA decrypting





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский