Поддержка новых типов данных
Модератор: Andrew™
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion и MAV который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion и MAV который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Поддержка новых типов данных
применительно к MSSQL серверу 2005 реализована поддержка VARCHAR(MAX) и VARBINARY(MAX)
Re: Поддержка новых типов данных
юникодовские типы данных сейчас автоматически преобразуются на клиенте в обычные строки, но бывают случаи когда кодовая страница клиента и сервера не совпадает и необходимо самому делать преобразования юникода в строку и обратно, для этих целей были придуманы типа программных триггеров для полей, в словаре в 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
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