Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.03.12;
Скачать: [xml.tar.bz2];

Вниз

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

 
Маленький мук   (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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.014 c
2-1140886777
Wel
2006-02-25 19:59
2006.03.12
image


15-1139849830
basnik
2006-02-13 19:57
2006.03.12
Требуется написать программу за $$$


1-1139233552
KyRo
2006-02-06 16:45
2006.03.12
Как зарегистрировать сервис


2-1140641003
TimScorp
2006-02-22 23:43
2006.03.12
ListBox


2-1140412396
Bratskiy
2006-02-20 08:13
2006.03.12
Выравнивание по ширине строки





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