Форум: "Базы";
Текущий архив: 2003.03.10;
Скачать: [xml.tar.bz2];
ВнизМожно ли делать SQL запросы из потока? Найти похожие ветки
← →
Behemoth (2003-02-18 09:36) [0]Если да, то как?
← →
Reindeer Moss Eater (2003-02-18 09:51) [1]Можно.
Точно так же как и в основном потоке.
← →
Behemoth (2003-02-18 10:10) [2]Не совсем понимаю. У вторичного потока нет формы, следовательно использовать TQuery в нем врятли удасться. Он подключается к основному как модуль, следовательно использовать TQuery из основного тоже проблематично....Тогда КАК? или я чего-то не понимаю.
← →
SergSuper (2003-02-18 10:21) [3]А что значит "запросы из потока"? Причем здесь формы? А что - у первичного потока есть форма?
← →
Reindeer Moss Eater (2003-02-18 10:23) [4]Мы говорим про запросы, или визуализацию результатов выполнения запросов?
← →
Behemoth (2003-02-18 10:34) [5]Может быть я неправильно выразился, хотя....
Есть программа. Хотелось бы, чтобы в ней был отдельный поток в котором, не мешая основному процессу, делались SQL запросы к базе.
на счет форм... запросы я умею делать только используя Query/ADOQuery, а они просят чтобы их положили на форму. Если кто подскажет другой способ буду рад.
← →
Behemoth (2003-02-18 10:37) [6]Простите, если я правильно понял ваши вопросы, то использовать обьект Query можно создать динамически в потоке?????
← →
Reindeer Moss Eater (2003-02-18 10:39) [7]Ни Query ни ADOQuery никогда и никого не просят что бы их куда либо положили.
Их можно создать как и все остальное во время выполнения программы.
← →
sniknik (2003-02-18 10:43) [8]можно также использовать свойство ExecuteOptions для задания асинхронности запросу, тогда команда будет выполнятся в своем собственном потоке,
-> не мешая основному процессу.
← →
Behemoth (2003-02-18 10:43) [9]Не знал. Спасибо.
← →
SergSuper (2003-02-18 10:45) [10]запросы я умею делать только используя Query/ADOQuery, а они просят чтобы их положили на форму
и в каких это варажениях они просят?
Ничего не мешает объявить свою переменную TADOQuery и вызывать запросы с её помощью.
Для особо ленивых есть Data Module - нечто вроде формы, но без формы. На худой конец можно сделать форму, но не показывать её.
← →
Andrey (2003-02-18 10:46) [11]>Behemoth
>Query/ADOQuery, а они просят чтобы их положили на форму
А еще их можно создавать динамически.
Query1:=TQuery.Create(nil);
Query1:="Query1";
Вот и все, дальше
Database1:=TDatabase.Create(nil);
Database1.Name:="Database1";
Database1.DatabaseName:="MyBase";
и финальная связка
Query1.DatabaseName:="MyBase";
Вроде все. Главное при закрытии потока незабыть убить Query1 и Database1.
Query1.Close;
Query1.Free;
Database1.Connected:=False;
Database1.Free;
А вообще очень хорошее описание многопоточной работы с БД есть на компакте к книге "Руководство разарботчика" (Chap11.pdf) при желании могу выслать.
← →
Behemoth (2003-02-18 11:46) [12]Всё бы хорошо, только в потоке Дельфа ругается на
ADOQuery:=TADOQuery.Create(nil);
Пишет: ...raised exection class EOleSysError with message "Не был произведен вызов CoInitialize"
(В программе без использования потоков всё работает... я про динамическое создание Query)
← →
Anatoly Podgoretsky (2003-02-18 11:54) [13]Ну раз говорит, что не был произведен, то наверно говорит правду, может тебе прислушаться и провести вызов?
← →
Behemoth (2003-02-18 12:02) [14]глупый вопрос конечно...но как его произвести???
← →
sniknik (2003-02-18 12:08) [15]глупый ответ
begin
CoInitialize(nil);
....
....
CoUnInitialize();
end;
← →
Behemoth (2003-02-18 12:13) [16]Если не лень, обьясните пожайлуста что это такое и зачем, а главное в каком модуле описанно?
← →
Andrey (2003-02-18 12:16) [17]Если не лень, вставь в проэкт строку CoInitialize, поставь на нее курсор и нажми F1, и будет тебе счастье :)
← →
Behemoth (2003-02-18 12:21) [18]Уже пробовал....не находит :(, пробовал поиском - тоже не находит :(((. Больше не знаю как....
← →
sniknik (2003-02-18 12:22) [19]ActiveX
← →
jocko (2003-02-18 14:07) [20]и не найдет...
зачем советовать искать в хелпе то чего там нет?
бегемоту нужно описалово на адо, есть хорошая книжка Н.Елманова... "АДО в Delphi" каж. так.
можно поискать она содержит те же материальчики, что и серия статей в "Компьютер пресс" год не помню.
можно их поискать на olap.ru, я во всяком случае читал там.
ЗЫ: по поводу изначального вопроса, может воспользоваться свойством ExecuteOptions, и не городить огород
← →
Andrey (2003-02-18 14:25) [21]>и не найдет
Ну незнаю, я по F1 получаю
"The CoInitialize function initializes the Component Object Model(COM) library. You must initialize the library before you can call its functions. Applications must call CoInitialize before they make any other COM library calls with two exceptions: the CoGetMalloc function, and memory allocation calls...."
Если вы не получаете, это незначит, что так оно везде.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.03.10;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.007 c