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

Вниз

Передача данных запроса к БД из потока   Найти похожие ветки 

 
Reindeer Moss Eater ©   (2004-09-06 17:33) [40]

Усыпите его кто-нибудь уже.


 
Анонимщик ©   (2004-09-06 17:37) [41]

[39] galexis ©   (06.09.04 17:29)

> Анонимщик ©

А как передавать параметры БД, которые nil?

Я не знаю.


 
galexis ©   (2004-09-06 17:54) [42]

Хорошо, что мы в разных городах (я надеюсь). А то вот так с работы выйдешь и убьют :)
Всем спасибо. Где еще о потоках за один день столько узнаешь. Может это еще кому нибудь пригодится.


 
galexis ©   (2004-09-06 17:58) [43]

Анонимщик ©
Работает ведь все! Спасибо огромное!


 
Анонимщик ©   (2004-09-06 18:02) [44]

Это тебе так только кажется. Я там специально сделал две ошибки. Будь готов к AccessViolation.


 
galexis ©   (2004-09-07 09:54) [45]


> Анонимщик © (06.09.04 18:02) [44]

Я в принципе понял как работать с потоками и что это за штука. Сейчас буду адаптировать код к своей программе, многое переделать придется. Может и ошибки тогда найдутся. А затеяно это все для того, чтобы клиентское приложение не замирало и была возможность нажать кнопку отмена в процессе выполнения запроса.


 
galexis ©   (2004-09-07 10:04) [46]

Столкнулся с приятной загадкой. Запрос во вторичном потоке выполняется раз в 10 быстрее чем в основном. Т.е. раньше у меня запрос выполнялся в основном потоке около 2 минут, а сейчас по моему секунд за 20 справился. К чему бы это?


 
Digitman ©   (2004-09-07 10:32) [47]


> была возможность нажать кнопку отмена в процессе выполнения
> запроса


и что ты намерен делать в обработчике нажатия кнопки Отмена ?


 
Rule ©   (2004-09-07 10:42) [48]

Digitman ©   (07.09.04 10:32) [47]
Application.terminate :))))


 
Digitman ©   (2004-09-07 10:46) [49]


> Rule ©   (07.09.04 10:42) [48]


тебе-то смешно, а автору "жениться")


 
Rule ©   (2004-09-07 10:49) [50]

Digitman ©   (07.09.04 10:46) [49]
Ну шош сделаешь, настроение сегодня хорошее :)


 
galexis ©   (2004-09-07 11:03) [51]


> Digitman ©   (07.09.04 10:32) [47]

По кнопке Отмена запущу еще один запрос в еще одном потоке, который будет менять значения предварительно созданного генератора. В основном запросе будет проверка на значение этого генератора


 
Анонимщик ©   (2004-09-07 11:31) [52]

Ну вы посмотрите как он буквально за день на глазах прямо вырос.

galexis
Значение генератора проверяй, конечно, но только смотри, чтобы кто-нибудь другой в то же время тот же запрос не запустил. А вот почему выполняется быстрее - попробуй сам догадаться.


 
galexis ©   (2004-09-07 12:40) [53]


> Анонимщик ©   (07.09.04 11:31) [52]


> Значение генератора проверяй, конечно, но только смотри,
> чтобы кто-нибудь другой в то же время тот же запрос не запустил

Об этом я как то и не подумал. И как же быть?

Кстати, там в коде стоит FreeOnTerminate := false;
Почему не true? У меня конечно на компе памяти много, но вот у пользователей не много. Правда, что теперь моя программа не будет работать под 98?


 
galexis ©   (2004-09-07 12:42) [54]

И всетаки почему быстрее стал выполнятся запрос? FB стоит на сервере, ему то ведь все равно из какого потока ему послан запрос.


 
Анонимщик ©   (2004-09-07 14:54) [55]

> Значение генератора проверяй, конечно, но только смотри,
> чтобы кто-нибудь другой в то же время тот же запрос не запустил

Об этом я как то и не подумал. И как же быть?


Корректного решения нет. Можно попытаться прибить поток, но гаранти нет.

Кстати, там в коде стоит FreeOnTerminate := false;
Почему не true? У меня конечно на компе памяти много, но вот у пользователей не много.


Поставь true, тебе в этом никто помешать не может.

Правда, что теперь моя программа не будет работать под 98?

Неправда.

И всетаки почему быстрее стал выполнятся запрос? FB стоит на сервере, ему то ведь все равно из какого потока ему послан запрос.

ibase.ru - читай о IB вообще и транзакциях в частности


 
galexis ©   (2004-09-08 10:55) [56]

Часть программы переделал. Поток запускается, данные пересылаются в DbGrid. При желании кнопкой отмена можно отменить поиск. Но в старой версии программы после того как отобранные по запросу данные отображались в DBGrid, пользователь при желании мог посмотреть более подробную информацию щелкнув два раза на записи в DBGrid. После чего формировался новый запрос с условием по полю ID из IBQuery, которое (ID) в DBQuery не отображалось. А сейчас у меня нет IBQuery, из которого я бы мог взять это поле, есть только DataSource. Как поступить?


 
galexis ©   (2004-09-08 12:41) [57]

С предыдущим вопросом спарвился, может и не очень хорошо, да ладно. Добавил в DBGrid требуемые поля и сделал их свойство Visible:=False.

Теперь появился еще вопрос. При запуске программы компонент IBDatabase требует пароль. Пользователь вводит пароль, открывается соединение и программа работает. Для вторичного потока нужно свое соединение. Хотел взять параметры из основного, но не могу получить пароль. Как это сделать? Можно ли узнать в программе какой пароль ввел польователь?



Страницы: 1 2 вся ветка

Текущий архив: 2004.10.03;
Скачать: CL | DM;

Наверх




Память: 0.58 MB
Время: 0.03 c
14-1095079217
marsden
2004-09-13 16:40
2004.10.03
А как войти зарегистрированному пользователю?


9-1083683075
S.W.I.N.E.
2004-05-04 19:04
2004.10.03
Квест


3-1094043802
Zilog
2004-09-01 17:03
2004.10.03
В 14-значное поле записывается только 12....


1-1095455920
Чайник
2004-09-18 01:18
2004.10.03
Не понял! Цвета палитры виндовс (типа clBtnShadow и т.д)


9-1086382702
Vin_Ghost
2004-06-05 00:58
2004.10.03
перемещение по миникарте