Страница 1 из 1

Поддержка новых типов данных

Добавлено: 07 Февраль 2008, 10:09
Andrew™
применительно к MSSQL серверу 2005 реализована поддержка VARCHAR(MAX) и VARBINARY(MAX)

Re: Поддержка новых типов данных

Добавлено: 07 Февраль 2008, 10:19
Andrew™
юникодовские типы данных сейчас автоматически преобразуются на клиенте в обычные строки, но бывают случаи когда кодовая страница клиента и сервера не совпадает и необходимо самому делать преобразования юникода в строку и обратно, для этих целей были придуманы типа программных триггеров для полей, в словаре в Field user option две новых опции:

FGET ИмяПроцедурыВПрограмме (после чтения)

прототип процедуры:

MAVGETFUNCTION(LONG pField,LONG pValue,MAVString rezult),TYPE

pField - адрес поля образца (из DCT)
pValue - полученное значение поля при чтении
rezult - если не хотим менять полученное значение - ничего не делаем, иначе инициализируем нужным значением

FPUT ИмяПроцедурыВПрограмме (перед записью)

прототип процедуры:

MAVPUTFUNCTION(LONG pField,LONG pValue,MAVString rezult),TYPE

pField - адрес поля образца (из DCT)
pValue - значение поля перед записью
rezult - если не хотим менять значение - ничего не делаем, иначе инициализируем нужным значением

если в БД есть NCHAR и NVARCHAR поля и требуется ручная перекрутка, или хотца юзать чистый юникод, то необходимо для таких полей регистрить в DCT соответсвующие процедуры

так же эти процедуры можно использовать как программные триггера на поля которые будут автоматом вызываться после чтения и перед записью в БД

одну и туже функцию можно регестрить для нескольких полей, потому и имеет место первый параметр

делаем
CASE pField
OF MAVADDRESS(File:DateTimeField)
...
END