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

Вниз

Простой, но нерешаемый вопрос.. :(   Найти похожие ветки 

 
Маленький мук   (2006-02-21 15:08) [0]

У меня простой , но нерешаемый вопрос, не могу ничё пока придумать. Ситауция: в проекте одна форма, на компонент TQuery - бде-шный, Если при компиляции у него свойство Active=True, а выборку он запрашивает с запрещённого пользователю ресурса - то естессно пользователю - ошибка, и прога не запускается. И если я забыл сделать перед компиляцией это Active=False, то всё. :)

Как бы вот так сделать - чтобы перед запуском проги - это компонет НАВЕРНЯКА ставил Active=False, и прога бы открывалась....


 
Stakan ©   (2006-02-21 15:12) [1]

Маленький мук   (21.02.06 15:08)
Странный вопрос. Поставь в OnCreate формы Query.Close;


 
Sergey13 ©   (2006-02-21 15:13) [2]

Активнее использовать при написании кода try...except и перед передачей программы пользователю тестировать ее с правами и ресурсами этого пользователя.


 
msguns ©   (2006-02-21 15:15) [3]

>Маленький мук   (21.02.06 15:08)  
>то всё. :)

Что всё ? Камни сверху падать начинают ?

>Как бы вот так сделать - чтобы перед запуском проги - это компонет НАВЕРНЯКА ставил Active=False, и прога бы открывалась....

А поставить его в дизайне в false не пробовал ?

Вообще держать открытыми датасеты в дизайне - это все равно, что итти на первое свидание без штанов. Типа показывать намерение.

Неприлично, неэстетично, негигиенично.
И глючно.


 
Маленький мук   (2006-02-21 15:15) [4]

ёпрст.... мне нужно в режиме разработки кое что смотреть - что не наждо пользователю, и вот.. и вот уже несколько раз я забывал закрывать это query :)

Stakan
Ваше решение не помогает. Create формы делается ПОСЛЕ  создания компонентов на ней!


 
Маленький мук   (2006-02-21 15:19) [5]

msguns ©   (21.02.06 15:15) [3]

я оценил Ваше чувтсов юмора :)))))))))))) Но - мне надо :)


 
Savek   (2006-02-21 16:11) [6]

Если решать эту проблему в лоб, то можно так:

procedure TForm1.TADOQuery1BeforeOpen(DataSet: TDataSet);
begin
if not Form1.Visible then Abort;
end;


 
clickmaker ©   (2006-02-21 16:12) [7]


> Маленький мук   (21.02.06 15:19) [5]

я так понимаю, что в рантайме SQL ему другой назначается?...


 
Виталий Панасенко   (2006-02-21 16:28) [8]

Если будешь использовать Session, то достаточно ТОЛЬКО ЕМУ Active=False в дизайне задать. Все остальные компоненты "отключатся"(TDataBase.Connected=False, TTable.ACtvie=False, TQuery.Active=False)


 
msguns ©   (2006-02-21 17:05) [9]

>Виталий Панасенко   (21.02.06 16:28) [8]

Что ты, что ты, Афанасий !!!! (с)

Ни в коем случае ! TSession по умолчанию всегда присутствует, если работаешь с BDE-компонентами. Использование второй сессии приведет неискушенного программиста в такие дебри, что мало не покажется.

Есму бы для начала научиться грамотно коннектиться к (открывать) БД в той сессии, что дана ему от Бога (бде)


 
Виталий Панасенко   (2006-02-21 17:23) [10]


> msguns ©   (21.02.06 17:05) [9]
> >Виталий Панасенко   (21.02.06 16:28) [8]
>
> Что ты, что ты, Афанасий !!!! (с)
>
> Ни в коем случае ! TSession по умолчанию всегда присутствует,
>  если работаешь с BDE-компонентами. Использование второй
> сессии приведет неискушенного программиста в такие дебри,
>  что мало не покажется.
>
> Есму бы для начала научиться грамотно коннектиться к (открывать)
> БД в той сессии, что дана ему от Бога (бде)

Согласен. Это и не вопрос, вообщем-то. А так, геморрой себе  и людям придумал. Ведь компилятор не только исходный текст на ПАС использует, но и данные из ДФМ(установка св-во  как в данном случае). И если .. Правда, я так и не понял, в чем проблема. Ну, нету и юзера доступа к ресурсу. Так что, если бы кверик не открывался автоматом, а по нажатию кнопки "Открыть", то доступ бы появился ?!. :-)


 
Маленький мук   (2006-02-22 06:42) [11]

Люди! :) Доброе утро :)

Ну почему меня никто не понимает.....:)

Savek   (21.02.06 16:11) [6]
Если решать эту проблему в лоб, то можно так:

procedure TForm1.TADOQuery1BeforeOpen(DataSet: TDataSet);
begin
if not Form1.Visible then Abort;
end;

это ваиант закрывает приложение совсем - целиком. А мне надо всего лишь закрыть это Query.

Неужели нельзя никак закрыть Query  - в событии BeforeOpen, или сделать так чтобы он перестал хотеть открываться в это  раз ? :)


 
ALIES   (2006-02-22 08:00) [12]

А что, если в BeforeOpen изменять Query.Sql на рабочий, безошибочный, а потом присваевать  BeforeOpen:=nil, и закрывать его в OnCreate формы. Вот хрень...

Лучше напиши отдельную утилитку, где будешь
"в режиме разработки кое что смотреть - что не наждо пользователю"


 
ЮЮ ©   (2006-02-22 09:04) [13]


> это ваиант закрывает приложение совсем - целиком


т.к. выполняется, скорей всего, в контексте конструктора TForm1.

Попробуй

procedure TDM.DataModuleCreate(Sender: TObject);
begin
 Database.Connected := false;
end;


 
Виталий Панасенко   (2006-02-22 09:28) [14]


> ALIES   (22.02.06 08:00) [12]
> А что, если в BeforeOpen изменять Query.Sql на рабочий,
> безошибочный, а потом присваевать  BeforeOpen:=nil, и закрывать
> его в OnCreate формы. Вот хрень...
>
> Лучше напиши отдельную утилитку, где будешь
> "в режиме разработки кое что смотреть - что не наждо пользовател

Создай TQuery в run-time и не парь . Я так понял, кверик всего один ?


 
McSimm ©   (2006-02-22 09:32) [15]


> Ну почему меня никто не понимает.....:)

Я понимаю :)

Например ADO иногда "сам" переходит в Connection=True когда тронешь какой-нибудь из Design-time редакторов какого-нибудь dataset
И, к примеру, разработчики FIBPlus понимают - ввели даже специальное свойство для этого, позволяющее держать соединение в Design-time открытым но в run-time создавать неактивным.
Все же самый простой выход -- не забывать его закрывать перед компиляцией.
Или

> clickmaker ©   (21.02.06 16:12) [7]
> ALIES   (22.02.06 08:00) [12]



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

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

Наверх




Память: 0.51 MB
Время: 0.047 c
3-1135230595
vista
2005-12-22 08:49
2006.03.12
Удаленный доступ к серверу Oracle


2-1140691792
VitV
2006-02-23 13:49
2006.03.12
Смена цвета кнопки


2-1140708558
Vitalik__
2006-02-23 18:29
2006.03.12
Кодировки и системы счисления


15-1139950881
LordOfRock
2006-02-15 00:01
2006.03.12
Фильм DooM


15-1139897064
parovoZZ
2006-02-14 09:04
2006.03.12
GPRS и PPP - протокол