Форум: "Базы";
Текущий архив: 2004.10.03;
Скачать: [xml.tar.bz2];
ВнизПередача данных запроса к БД из потока Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.56 MB
Время: 0.044 c