powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Авторизация
9 сообщений из 9, страница 1 из 1
Авторизация
    #32202181
KP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
KP
Гость
Подскажите, плиз !!!
Пользователь вводит имя и пароль, идет запрос к таблице и считывается ID пользователя. Как сохранить это ID в глобальной переменной, чтобы переодически обращаться к ней (суть в том, что пользователь должен видеть только свои данные) ???
...
Рейтинг: 0 / 0
Авторизация
    #32202209
Артем1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сохранить где? Если в Delphi, то я бы сделал глобальную переменную в MainForm или в TApplication.Tag записал бы. Если на уровне БД, то это зависит от того, что за СУБД.
...
Рейтинг: 0 / 0
Авторизация
    #32202217
KP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
KP
Гость
В Delphi...
А как эту ID, вытащенную SQL-запросом, записать в переменную ???
Сорри, просто я начинающий дельфист :)
...
Рейтинг: 0 / 0
Авторизация
    #32202220
Артем1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
Application.Tag := <ваш компонент для запроса ID из базы данных>.<поле или парметер с ID пользователя>.Value;

//Ну, нупример
Application.Tag := AdoDataSet1.Fields( 0 ).AsInteger;
...
Рейтинг: 0 / 0
Авторизация
    #32202246
KP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
KP
Гость
А глобальную переменную как можно потом использовать в компонентах для других запросов ???

Application.Tag := AdoDataSet1.Fields(0).AsInteger;
AdoDataSet1.CommandText := 'select * from client where employee_id = ' + Application.Tag
...
Рейтинг: 0 / 0
Авторизация
    #32202262
Артем1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Совершенно верно. Успехов :)
...
Рейтинг: 0 / 0
Авторизация
    #32202279
KP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
KP
Гость
Благодарю за помощь :)
...
Рейтинг: 0 / 0
Авторизация
    #32202311
Дмитрий Мыльников
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я обычно завожу в проекте отдельный DataModule, где лежат все данные, а также объявлены общие переменные. Далее всем модулям, которые с данными работают, в строке uses прописывается название этого общего модуля данных.

Общие переменные объявляются после interface в разделе var до слова implementation точно также, как и все остальные переменные. После этого к ним можно обращаться отовсюду, где в uses прописана ссылка на модуль данных.

Что-то типа:
===========
unit ABC;

interface

uses a,b,c...;

type

....

var
a:integer;
b:string;
c:double;
...

implementation

...

===============

Далее, после выполнения запроса просто присваиваете соответсвующей переменной значение поля из запроса. Я обычно обращаюсь к полям через FieldByName('name'), либо создаю соответсвующие поля в датамодуле для DataSet'ов (двойной клик на DataSet'е, правой клавишей мыши вызываем PopupMenu и там выбираем Add fields... либо Add all fields).

получится что-то вроде

a:=DataSet1.FieldByName('NameID').AsInteger;

в случае с созданием полей компонент получает имя, составленное из имени DataSet'а и названия поля, в результате получаем:
a:=DataSet1NameID.AsInteger;

Кстати, в вашем примере более правильно написать
AdoDataSet1.CommandText := 'select * from client where employee_id = ' + IntToStr(Application.Tag)

А если брать мой пример, то пролучится:
AdoDataSet1.CommandText := 'select * from client where employee_id = ' + IntToStr(a)

Вообще, предпочтительнее завести переменную и дать ей более-менее осмысленное имя, чем пользоваться Application.Tag. Опять же, через какое-то время захочется ещё что-нибудь сохарнить, а Application.Tag только один... :)
...
Рейтинг: 0 / 0
Авторизация
    #32202332
Артем1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Дмитрий Мыльников
Уважаю такой обстоятельный стиль повествования. :))

Я для хранения настроек и прочих глобальных переменных предпочитаю использовать singleton-класс Config. Мне кажется, что его преймущество в том, что не надо делать uses модуля, который в принципе не нужен, только ради общих переменных.

> Опять же, через какое-то время захочется ещё что-нибудь сохранить, а Application.Tag только один... :)

Это точно :)).
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Авторизация
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]