Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
3-29735
lightix
2003-02-19 11:05
2003.03.10
Не получается удалить VIEW из БД


3-29745
iusup
2003-02-19 15:30
2003.03.10
Как руссифицировать INSTALL SHIELD...?


6-30000
Nick_N_A
2003-01-19 06:09
2003.03.10
iExplorer Автономный режим


7-30164
Zelius
2003-01-14 13:33
2003.03.10
Как отлавливать события для IWebBrowser2?


6-29988
2Ksion
2003-01-22 06:00
2003.03.10
Определение загрузки в tWebBrowser определённого фрейма.





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