24.03.2009, 16:11 | #1 |
NavAx
|
Добрый день.
Ситуация: Navision 4.0 SP3 В 7-ю табличку - стандартные тексты - добавил поле с типом DateFormula. Соответственно, в этом поле сидят записи типа "+1М+20Д" Есть необходимость работать с этими записями напрямую на SQL SQL 2005, SQL Server Management Studio Открываем табличку там и видим вместо букв "М" и "Д" квадратики... т.е. "+1<квадратик>+20<квадратик>" Насколько я помню, в 3-х версиях Navision была возможность вбивать дейтформулы латинскими буквами, используя угловые скобочки. Но здесь, когда я вбиваю формулы с угловыми скобками латиницей, она автоматом преобразуется в формулу без угловых скобок с русскими буквами. Может, кто подскажет решение?
__________________
"Моей лошадке ядрышком полмордочки снесло..." А.В.Суворов, письма к дочери |
|
24.03.2009, 16:50 | #2 |
Участник
|
Что делать с квадратами сразу скажу - пока не знаю. Просто добавь в таблицу еще одно поле - технологическое, не выводимое в интерфейс, которое на валидейте ДатыФормулы будет заполняться колвом дней для введенной формулы. Тупо к тудею прибавлять введенный период и находить разницу между получившимся и тудеем. А вот эту цифру удобно будет использовать где угодно.
|
|
24.03.2009, 16:53 | #3 |
NavAx
|
Ром, там могут быть месяцы и кварталы, тупо число дней не катит.
Кроме того, нужна возможность редактировать в SQL формулу, а не только читать.
__________________
"Моей лошадке ядрышком полмордочки снесло..." А.В.Суворов, письма к дочери |
|
24.03.2009, 16:54 | #4 |
Участник
|
Цитата:
А. Не дочитал про "редактировать" ) Мутишь чета ) |
|
24.03.2009, 17:01 | #5 |
Участник
|
collation у базы данных какой?
скорее всего не Cyrilic |
|
24.03.2009, 17:01 | #6 |
NavAx
|
Ну так сложилось исторически, что часть сотрудников пользуется самописной софтиной, которая типа интегрирована с Navision.
Эту тему я обсуждать не хочу, грустная она.
__________________
"Моей лошадке ядрышком полмордочки снесло..." А.В.Суворов, письма к дочери |
|
24.03.2009, 17:13 | #7 |
Administrator
|
русские буквы в принципе не отображаются через софтину?
или это только на полях датаформулы? |
|
24.03.2009, 17:17 | #8 |
NavAx
|
Cyrilic
только в дейтформулах, в текстах и прочих кодах все ОК
__________________
"Моей лошадке ядрышком полмордочки снесло..." А.В.Суворов, письма к дочери |
|
24.03.2009, 17:30 | #9 |
Administrator
|
зырь.
делаешь поле ДатаФормулаТипаКод никуда не выводишь. на валидейт даты формулы пишешь: ДатаФормулаТипаКод := ФОРМАТ(Даты Формулы) выводишь второе поле, пусть редактируют. после редактирования загоняешь обратно без валидейта |
|
24.03.2009, 17:30 | #10 |
Участник
|
Можно не удалять мое технологическое поле, переконветить его в текст. И тупо на валидейте датыформулы конвертить все возможные символы, используемые в формулах (их не так много) в англобуквенные аналоги.
Во, Санча дело написал. Только обратно нужно не без валидейта, а эвалюейтом. |
|
24.03.2009, 17:30 | #11 |
Administrator
|
кривым проблемам - кривые решения!
|
|
24.03.2009, 17:40 | #12 |
Administrator
|
сложность в том, что ты вспотеешь объяснять самописной программе что есть такой тип данных как датаформула и как с ней работать.
поэтому если они что-то изменили, помечай строку как измененную, и пусть демон в Наве каждые 5 секунд евалюэйтит все измененные строки. будет типа онлайн |
|
24.03.2009, 17:46 | #13 |
NavAx
|
Не, ну это понятно, что уже пришло в голову.
Просто все еще питаю надежду на нормальное решение
__________________
"Моей лошадке ядрышком полмордочки снесло..." А.В.Суворов, письма к дочери |
|
24.03.2009, 17:47 | #14 |
Administrator
|
перейди на англ.
впиши датаформулу. что будет в SQL? |
|
24.03.2009, 17:51 | #15 |
NavAx
|
__________________
"Моей лошадке ядрышком полмордочки снесло..." А.В.Суворов, письма к дочери |
|
24.03.2009, 18:15 | #16 |
Участник
|
ASCII коды спецсимволов DateFormula:
--Д (D) = 2 --ДН (WD) = 3 --Н (W)= 4 --М (M)= 5 --К (Q)= 6 --Г (Y)= 7 --Т ( С )= 1 --Соответственно текущий год ТГ (CY) = 1 7 В программке надо просто преобразовывать при выводе на экран эти кода на визуально красивые. Аналогично, при апдейте, визуально красивые символы преобразовывать в эти коды. Соответственно, данные символы при любом Collation будут в виде квадратиков. Сделано для независимости от языка клиента. |
|
24.03.2009, 18:43 | #17 |
NavAx
|
Круто.
Спасибо большое.
__________________
"Моей лошадке ядрышком полмордочки снесло..." А.В.Суворов, письма к дочери |
|
25.03.2009, 13:48 | #18 |
Участник
|
А нельязя поле сделать текстовым?
На Validate поля написать EVALUATE(DateFormula, "Date Formula Text"); где DateFormula локальная переменная типа DateFormula. Таким образом будет проверяться, что введенное значение в поле является формулой даты. Конесно, потом в коде придется все время значение из текстовое в DateFormula конвертить. |
|