:: Visual Foxpro, Foxpro for DOS
Re: VFP и Firebird
DmitryKn
Автор

Сообщений: 300
Дата регистрации: 06.04.2022
AndyNigmatec
DmitryKn
в фоксе у меня была таблица сотрудники, форма "логин", и там логин-пароль, все время работы приложения пользователь запомнен в goApp.
А как это в подобных связках фокс-сервер строится? Сотрудники "живут" в таблице БД ФБ, чтобы запустить БД нужно проверить логин-пароль, которые в таблице в БД..

тут все просто: подключаетесь к БД под простым (созданным например только этого юзером с соотв. правами), считываете что нужно - и переподключаетесь уже с нужными параметрами.

У меня еще проще, тупо один юзер в рамках базы (кроме админа ессно), а права в проге разрулены на уровне логики самой проги. Правильнее наверное было делать это на уровне пользователей базы, но когда я переносил все на FB такой функционал уже был в логике проги и переделывать его тогда не стал, а потом и забил )))

Если вернуться к этому вопросу - правильно ли я понимаю, что в общем виде конструкция может быть такая, подключаемся к ФБ при загрузке с пользователем quest, права ему дадим только на чтение таблицы users, потом пользователь идентифицируется с форме "логин", если ок - выключаем quest и включаем соединение с пользователем. Пользователей может быть 2-3, например "админ", "продвинутый юзер", "юзер", что-то в этом роде. Т.е. В таблице будет 10 ФИО с паролями, после регистрации подключение к ФБ по одному из "пользователей" ФБ ("админ", "продвинутый юзер", "юзер") с ролями. Или "пользователя ФБ" надо заводить на каждое ФИО ?
В последующем планируется иметь логи, кто где чего понаделал.



Исправлено 1 раз(а). Последнее : DmitryKn, 27.03.23 15:00
Ratings: 0 negative/0 positive
Re: VFP и Firebird
AndyNigmatec

Сообщений: 1573
Откуда: Волгоград
Дата регистрации: 28.06.2015
Мне кажется, в вашем случае проще завести только одного пользователя ФБ (с ограниченными правами ессно) и под ним работать всем юзерам, а разруливать кому чего можно/нельзя уже программно. Заведёте специальную табличку с пользователями и еще одну с правами - и рулите как хотите, плюс свой интерфейс этим "рулением" нарисуете.

Вот представьте ежели кажного юзера вам заводить как отдельного пользователя FB ... это каждый раз при изменении/добавлении/увольнении править этих пользователей на серваке ... оно вам надо, да и не делают так.

Можно так - на ФБ завели пару-тройку общих пользователей (скажем так ролей с основным набором прав) - и уже конкретному юзеру того или пользователя ФБ выбираете. Но все равно, логины-пароли-набор прав(роль) каждого конкретного Иванова Иван Иваныча вам вести "самостоятельно", заодно и логирование прикрутите.

Все это ИМХО конечно.

Данный вопрос не касается непосредственно ФБ, так что может более опытные камрады подскажут оптимальный вариант.
Ratings: 0 negative/0 positive
Re: VFP и Firebird
AndyNigmatec

Сообщений: 1573
Откуда: Волгоград
Дата регистрации: 28.06.2015
У себя делал максимально просто - пара таблиц - одна с типами_прав, вторая - кому какие типы включены. Учитывая что пункты проги которые видит юзверь - это также табл в базе, разрулить кому чего показывать - проще простого. Ну еще несколько специальных прав заведено.

Интерфейс управления этим добром тож максимально по-спартански прост (пара форм, одна с привелегиями, вторая с пользователями):

[attachment 36522 p5.png]
Ratings: 0 negative/0 positive
Re: VFP и Firebird
DmitryKn
Автор

Сообщений: 300
Дата регистрации: 06.04.2022
Спасибо!
попробуем
Ratings: 0 negative/0 positive
Re: VFP и Firebird
of63

Сообщений: 25244
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Не связывался с ФБ, но идея хорошая и стандартная:

"" Можно так - на ФБ завели пару-тройку общих пользователей (скажем так ролей с основным набором прав) - и уже конкретному юзеру того или пользователя ФБ выбираете. Но все равно, логины-пароли-набор прав(роль) каждого конкретного Иванова Иван Иваныча вам вести "самостоятельно", заодно и логирование прикрутите.
Ratings: 0 negative/0 positive
Re: VFP и Firebird
AndyNigmatec

Сообщений: 1573
Откуда: Волгоград
Дата регистрации: 28.06.2015
Так я же и говорю, не суть важно ФБ там или постгресс какой - сам подход тот же, а уж как оптимально сделать - здесь есть варианты, и я не претендую на лучший
Ratings: 0 negative/0 positive
Re: VFP и Firebird
DmitryKn
Автор

Сообщений: 300
Дата регистрации: 06.04.2022
Доброго дня!

не могу сделать выборку из БД, может подскажете, где ошибаюсь.

Подключаюсь к ФБ, если успешно, то делаю запрос:
IF SQLEXEC(m.lnConnect,'SELECT * FROM table1','cursor1') =1
SELECT cursor1
ACTIVATE SCREEN
BROWSE
ELSE
MESSAGEBOX('cursor1 not found',48)
ENDIF
все хорошо, открывает заполненный курсор
Если по условию
IF SQLEXEC(m.lnConnect,'SELECT * FROM table1 WHERE field2 = m.lcMyVar','cursor1') =1
SELECT cursor1
ACTIVATE SCREEN
BROWSE
ELSE
MESSAGEBOX('cursor1 not found',48)
ENDIF
то курсор не найден.
Поле VARCHAR, переменная символьное.
Что ни делал, не получается.
Если сделать такой же запрос по другому полю INT, и подставить в запрос явное число, то сработает. Если записать значение в переменную - то уже нет.

Тащить всю таблицу из ФБ и потом уже выбирать нужную строку - не выглядит правильным. Подскажите, как можно подстановку в запросе сделать?
Ratings: 0 negative/0 positive
Re: VFP и Firebird
ssa

Сообщений: 13007
Откуда: Москва
Дата регистрации: 23.03.2005
DmitryKn
не могу сделать выборку из БД, может подскажете, где ошибаюсь.
Подскажем.
Цитата:

Если по условию
IF SQLEXEC(m.lnConnect,'SELECT * FROM table1 WHERE field2 = m.lcMyVar','cursor1') =1
то курсор не найден.
Разумеется.
Запрос выполняется сервером, который про тебя и твои переменные вообще ничего знать не знает.
Для передачи локальных значений на сервер придуман специальный синтаксис. В фоксе это знак вопроса непосредственно перед выражениеем, значение которого надо передать на сервер.
В обсуждаемом случае твой запрос должен выглядеть так:
SELECT * FROM table1 WHERE field2 = ?m.lcMyVar
Именно по этому маркеру в текстовой строке, которую ты отправил серверу на исполнение, на твоем компе драйвер доступа к серверу найдет нужное выражение и подставит его значение в текст запроса. И на сервер придет уже исправленный запрос, с подставленным значением.


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: VFP и Firebird
DmitryKn
Автор

Сообщений: 300
Дата регистрации: 06.04.2022
ssa
Подскажем.

Спасибо!
все работает отлично!



Исправлено 2 раз(а). Последнее : DmitryKn, 01.04.23 13:07
Ratings: 0 negative/0 positive
Re: VFP и Firebird
DmitryKn
Автор

Сообщений: 300
Дата регистрации: 06.04.2022
Доброго дня!

Дайте еще пару советов из практики, как правильно проверять подключения.
Например, запрашивать количество записей в какой-либо таблице, или получить, например, SQLGETPROP(nHandle, "datasource") или SQLGETPROP(nHandle, "Transaction"), если вернуло что-то, то соединение ок, если нет - подключили еще раз ?
Если не ок, то нужно ли diconnect первого (отвалившегося) соединения в таком случае делать, не завешивает ли где чего?

Как часто нужно проверять соединение?
Например, грузим форму с данными - проверили, данные отредактировали, перед сохранением опять проверили, т.е. перед любым обращением к БД или как?



Исправлено 1 раз(а). Последнее : DmitryKn, 02.04.23 10:54
Ratings: 0 negative/0 positive
Re: VFP и Firebird
sphinx

Сообщений: 31179
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
Я не проверяю соединение (может и плохо).
Почитайте ответ Игоря Королева, напрямую на вопрос не отвечает, но связано.
forum.foxclub.ru


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: VFP и Firebird
sphinx

Сообщений: 31179
Откуда: Каменск-Уральски
Дата регистрации: 22.11.2006
Здравый смысл подсказывает, что перед любой DML-командой неплохо бы проверить соединение.


------------------
"Veni, vidi, vici!"(с)
Ratings: 0 negative/0 positive
Re: VFP и Firebird
_vit

Сообщений: 5175
Дата регистрации: 29.07.2002
DmitryKn
Как часто нужно проверять соединение?
Например, грузим форму с данными - проверили, данные отредактировали, перед сохранением опять проверили, т.е. перед любым обращением к БД или как?

Нет гарантии, что соединение не отвалится сразу после проверки, до того как успеешь обратится к данным.
Правильно было бы обращение к данным заключить в блок try и обрабатывать исключения.
Ratings: 0 negative/2 positive
Re: VFP и Firebird
of63

Сообщений: 25244
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
А как устроен обрамитель "try" в фоксе?
- Он проверяет, чтобы все операции внутри него выполнились в True? (скорее да)
- Он делает откаты взад ? (нет)
- Он сообщает о наличии ошибки в операторах внутри себя (да)

...вот и все, не более того. Т.. try не делает никаких откатов среди группы операторов (которые рн обслуживает), чисто сообщательная система об ошибках... ну, и позволяет их игнорировать, незаметно для оператора программы, и даже для разраба. Страшная вещь! )
Ratings: 0 negative/0 positive
Re: VFP и Firebird
akvvohinc

Сообщений: 4219
Откуда: Москва
Дата регистрации: 11.11.2008
of63
Он делает откаты взад ? (нет)
Автоматически восстановить все твои переменные, объекты, таблицы, файлы на флешке, вернуть купленные товары в магазин и деньги в кассу взаимопомощи, помириться с женой... - в общем, всё, что ты успел натворить внутри TRY, к состоянию на 8 апреля прошлого года?
Сможет, но не в этой версии.

of63
чисто сообщательная система об ошибках... ну, и позволяет их игнорировать
Не совсем понимаю, что ты хотел этим сказать.
Обрабатывать ошибки - забота автора.
Кто, кроме тебя, может знать, что делать в том или ином случае?
Ratings: 0 negative/0 positive
Re: VFP и Firebird
DmitryKn
Автор

Сообщений: 300
Дата регистрации: 06.04.2022
of63

..
...вот и все, не более того. Т.. try не делает никаких откатов среди группы операторов

так вроде и не должен, он не для этого, с чего бы ему откаты делать?
Ratings: 0 negative/0 positive
Re: VFP и Firebird
ssa

Сообщений: 13007
Откуда: Москва
Дата регистрации: 23.03.2005
of63
А как устроен обрамитель "try" в фоксе?
- Он проверяет, чтобы все операции внутри него выполнились в True? (скорее да)
- Он делает откаты взад ? (нет)
- Он сообщает о наличии ошибки в операторах внутри себя (да)

...вот и все, не более того. Т.. try не делает никаких откатов среди группы операторов (которые рн обслуживает), чисто сообщательная система об ошибках... ну, и позволяет их игнорировать, незаметно для оператора программы, и даже для разраба. Страшная вещь! )
1. А с чего взял, что он должен делать откаты, да еще и во внешней базе?
2. Открой таки для себя секцию Catch и научись писать все нужные тебе откаты.


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: VFP и Firebird
of63

Сообщений: 25244
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
- последовательность выполнения операторов я знаю
- транзакциями не пользовался, только фоксовыми блокировкам
Это плохо?
Ratings: 0 negative/0 positive
Re: VFP и Firebird
akvvohinc

Сообщений: 4219
Откуда: Москва
Дата регистрации: 11.11.2008
Цитата:
транзакциями не пользовался, только фоксовыми блокировкам
Конструкция TRY не имеет отношения ни к транзакциям, ни к блокировкам.
Можно считать это расширением возможностей досовской ON ERROR.
Ratings: 0 negative/0 positive
Re: VFP и Firebird
DmitryKn
Автор

Сообщений: 300
Дата регистрации: 06.04.2022
of63
- последовательность выполнения операторов я знаю
- транзакциями не пользовался, только фоксовыми блокировкам
Это плохо?
Нет, это другое (если мы про TRY )
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 27 (Гостей: 27)

© 2000-2024 Fox Club 
Яндекс.Метрика