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

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

Насколько я понял, поля с типом DATE в Firebird не могут быть пустыми и должны содержать значение в пределах 01.01.0001 н.э. до 31.12.9999 н.э.
А как быть , если в приложении допускается на каком-то этапе "незаполненность" такого поля?
Ratings: 0 negative/0 positive
Re: VFP и Firebird
AndyNigmatec

Сообщений: 1574
Откуда: Волгоград
Дата регистрации: 28.06.2015
Доброго!

я для даты использую тип - timestamp

и они могут быть NULL
Ratings: 0 negative/0 positive
Re: VFP и Firebird
PaulWist

Сообщений: 14621
Дата регистрации: 01.04.2004
Ну вот, начинаются пляски с бубном


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: VFP и Firebird
AndyNigmatec

Сообщений: 1574
Откуда: Волгоград
Дата регистрации: 28.06.2015
нет там никаких плясок, обычное дататайм в нашем понимании )))
Ratings: 0 negative/0 positive
Re: VFP и Firebird
AndyNigmatec

Сообщений: 1574
Откуда: Волгоград
Дата регистрации: 28.06.2015
счас проверил и тип date - все норм - также может быть null

я привык юзать timestamp, поэтому сразу про него написал )))

[attachment 36537 1.png]
[attachment 36538 2.png]



Исправлено 1 раз(а). Последнее : AndyNigmatec, 12.04.23 10:58
Ratings: 0 negative/0 positive
Re: VFP и Firebird
PaulWist

Сообщений: 14621
Дата регистрации: 01.04.2004
AndyNigmatec
нет там никаких плясок, обычное дататайм в нашем понимании )))

Неа, timestamp - это не datetime - это штамп времени, выраженный как дата время.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: VFP и Firebird
AndyNigmatec

Сообщений: 1574
Откуда: Волгоград
Дата регистрации: 28.06.2015
вообще мне удобно именно тип timestamp пользовать:

передавать параметром в запросе из фокса могу как DATE так и DATETIME - все отработает корректно, типа:

lcDate=date()
lcScript=[select * from mytable where pdate=?lcDate]
также и сработает
lcDate0=datetime()
lcDate=DTOT(lcDate0)
lcScript=[select * from mytable where pdate=?lcDate]

если добавляем/меняем запись - то передавая фоксовую DATE в FB в тип timestamp она запишется с 00:00 временем, а если передаем datetime - то соотв с мин-сек
[attachment 36539 3.png]
Ratings: 0 negative/0 positive
Re: VFP и Firebird
AndyNigmatec

Сообщений: 1574
Откуда: Волгоград
Дата регистрации: 28.06.2015
PaulWist
Неа, timestamp - это не datetime - это штамп времени, выраженный как дата время.

я и не говорю что это одно и то же - я говорю что на практике удобнее пользовать и в привычных с фоксового взгляда терминах
Ratings: 0 negative/0 positive
Re: VFP и Firebird
DmitryKn
Автор

Сообщений: 300
Дата регистрации: 06.04.2022
При редактировании или добавлении в таблицу ФБ данных поля DATE из курсора фокса , если в курсоре пустое значение, то SQL error code = -303 conversion error from string " "
А если дата присутствует, то ошибки нет.
Интернет говорит, что это как-то связано с кодировкой, в таблице напротив этого поля нет win1251, для данных типа date, видимо, не предусмотрено, но сама БД создавалась с win1251.
В texbox формы, откуда берется значение, стоит формат D.
на всякий случай пробовал замену, если поле пустое , то mycursor.fieldDate = CTOD('')
что никак не помогло.
Ratings: 0 negative/0 positive
Re: VFP и Firebird
AndyNigmatec

Сообщений: 1574
Откуда: Волгоград
Дата регистрации: 28.06.2015
сделайте null в курсоре где якобы "пустое" поле

З.Ы. кодировка тут не при чем



Исправлено 1 раз(а). Последнее : AndyNigmatec, 12.04.23 11:35
Ratings: 0 negative/0 positive
Re: VFP и Firebird
DmitryKn
Автор

Сообщений: 300
Дата регистрации: 06.04.2022
AndyNigmatec
сделайте null в курсоре где якобы "пустое" поле

а так работает.
В фоксе "пустые" поля по умолчанию для CHAR = '', для DATE = CTOD(''), а в ФБ все типы = null, надо привыкнуть ))

Может сходу напомните, какую настройку в textbox выставить, что бы null не отображался? Вроде была такая где-то..

p.s. SET NULLDISPLAY



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

Сообщений: 1574
Откуда: Волгоград
Дата регистрации: 28.06.2015
SET NULLDISPLAY TO ''

опередили ))))


SELECT 0
CREATE CURSOR cData (pdate d null, nsum n(15,2))
INSERT INTO cData (pdate, nsum) VALUES (null, 1525)
INSERT INTO cData (pdate, nsum) VALUES ({^2023-04-12}, 5545.55)

SET NULLDISPLAY TO
[attachment 36540 4.png]


SET NULLDISPLAY TO ''
[attachment 36541 5.png]



Исправлено 1 раз(а). Последнее : AndyNigmatec, 12.04.23 11:59
Ratings: 0 negative/0 positive
Re: VFP и Firebird
PaulWist

Сообщений: 14621
Дата регистрации: 01.04.2004
Это глобальная настройка, лучше использовать св-во контролов, например в каком-то случае надо вместо пробела "написать" 'Нет даты'


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/1 positive
Re: VFP и Firebird
DmitryKn
Автор

Сообщений: 300
Дата регистрации: 06.04.2022
Спасибо, добрые люди!

Это я только справочники тестирую, а ведь впереди "сложно-подчиненные" таблицы и процедуры
Ratings: 0 negative/0 positive
Re: VFP и Firebird
DmitryKn
Автор

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

а нельзя команду CREATE USER в процедуру запихнуть?
в фоксе мои пользователи имели много атрибутов, ФИО, ФИО в родительном, должность, должность в родительном, и т.п., включая картинки у некоторых.
Идея была такая - создаю аналогичную таблицу в ФБ, добавляем или редактируем пользователя, commit, и после него вызвать процедуру, которая бы внесла часть инфы, например, логин, пароль и фамилию в базу безопасности ФБ.
И вот не могу создать такую процедуру, ошибка, вроде как синтаксическая, на CREATE
или эта команда в принципе невпихуема в процедуру, или я неправильно ее создаю.

SET TERM ^;
CREATE PROCEDURE USERS (
tcnalogin d_char10,
tcpassw d_char5,
tcnalast d_char40
)
as
begin
CREATE USER :TCNALOGIN PASSWORD :TCPASSW LASTNAME :TCNALAST ^
end^
SET TERM ;^

Ошибка
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 7, column 5.
CREATE.

SQLCODE: -104
SQLSTATE: 42000
GDSCODE: 335544569
Ratings: 0 negative/0 positive
Re: VFP и Firebird
AndyNigmatec

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

Сообщений: 300
Дата регистрации: 06.04.2022
AndyNigmatec
Честно говоря никогда такой мысли не возникало - создавать пользователя сервера из процедуру БД этого сервера ....
Вы таки пошли сверхокольным путем и создаете для каждого юзверя соответствующего пользователя сервера FB?
Не думаю что это верный подход.

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

Сообщений: 300
Дата регистрации: 06.04.2022
AndyNigmatec
Честно говоря никогда такой мысли не возникало - создавать пользователя сервера из процедуру БД этого сервера ....

Можно из IBExpert, но тогда всегда самому. А если дать привилегии буху, то при приеме-увольнении она сможет через форму добавить-деактивировать пользователя с рядовыми правами самостоятельно.
Да и по жизни, текучка у нас небольшая, события такого плана редкие, через год-два придется вспоминать, где и как кого добавлять-деактивировать, а так форма есть, раз и сделали.
Ratings: 0 negative/0 positive
Re: VFP и Firebird
PaulWist

Сообщений: 14621
Дата регистрации: 01.04.2004
Танцы с бубном, переходящие в пробежку по граблям продолжаются (ничего личного, просто взгляд со стороны)

PS желание создавать/соотносить юзеров в соотвествии с их ролями/группами и рулить этим через свой интерфейс вполне нормальное.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: VFP и Firebird
AndyNigmatec

Сообщений: 1574
Откуда: Волгоград
Дата регистрации: 28.06.2015
про танцы - не понял в каком месте тут танцы ... ну да ладно

По поводу добавления юзера сервака в процедуре БД - то если очень хочется, то можно )))) просто мне как-то такое не надо было


create or alter procedure ADD_USER_TEST (
TCNALOGIN varchar(10),
TCPASSW varchar(5),
TCNALAST varchar(40))
as
declare variable LCQUERYTEXT varchar(300);
begin
lcquerytext = 'CREATE USER ' || trim(:tcnalogin) || ' PASSWORD ''' || trim(:tcpassw) || ''' LASTNAME ''' || trim(:tcnalast) || '''';
execute statement :lcquerytext;
-- suspend;
end

но я такие конструкции не люблю ... они не проверяются компилятором при компилировании процедуры ...
Ratings: 0 negative/0 positive


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

On-line: 24 Артём AndyNigmatec akvvohinc Baga  (Гостей: 20)

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