powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / дата в csp и delphi
10 сообщений из 10, страница 1 из 1
дата в csp и delphi
    #35530200
Daha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вечер добрый! вот столкнулась с такой проблемкой: загружаю данные в базу из делфи и дату интерпретирую
TekDate:=IntToStr(Trunc(DateEdit1.Date));
а вот отчеты формирую в csp. И здесь текущая дата
s ds=$p($zdth($tr(dd,".","/"),4),",",1) .
И получается , что они друг другу не соответствуют. Есть ли какие -либо преобразовывающие функции или надо изначально использовать другие? подскажите, пож:)
...
Рейтинг: 0 / 0
дата в csp и delphi
    #35530421
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Использую CacheActiveX.dll через раннее связывание, Caché 2008.2.FT4
Пример кода
Код: plaintext
1.
2.
3.
4.
5.
6.
...
  a:=Person(Form1.Factory1.OpenId('test.a', '8967'));
  a.datein:=DateEdit1.Date;
...
  DateEdit1.Date:=a.datein;
...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
>w $zdh("31.01.2008")
 61026 
>w $zd( 61026 )
 31 . 01 . 2008 
>w $$GetDCFormat^%NLS("DateSeparator")
.
>w $$GetDCFormat^%NLS("DateFormat")
 4 

Чтобы не нужно было каждый раз преобразовывать строковое представление дат, необходимо настроить текущую локаль. Дальше зависит от версии СУБД:
в 2008.2 можно вызвать d ##class(%SYS.NLS.Format).%New("Current") (действует только для текущего процесса)
...
Рейтинг: 0 / 0
дата в csp и delphi
    #35530594
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
w $$GetDCFormat^%NLS("DateSeparator")
А перед этим где-то вызываете:
Код: plaintext
s oldsep=$$SetDCFormat^%NLS("DateSeparator",".")
? Ведь эти установки действуют только для текущего процесса. Не нашел вызовов, которые позволяют настроить это общесистемно и долговременно. Может, плохо искал... CNLS.EXE эти параметры настраивать тоже не умеет. 2008.2 еще не смотрел...
...
Рейтинг: 0 / 0
дата в csp и delphi
    #35530878
visius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TekDate:=IntToStr(Trunc(DateEdit1.Date))+21548;

и будет полное соответствие
...
Рейтинг: 0 / 0
дата в csp и delphi
    #35530879
visius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
очепятался:
TekDate:=IntToStr(Trunc(DateEdit1.Date)+21548);
...
Рейтинг: 0 / 0
дата в csp и delphi
    #35531112
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Maslov
Код: plaintext
w $$GetDCFormat^%NLS("DateSeparator")
А перед этим где-то вызываете:
Код: plaintext
s oldsep=$$SetDCFormat^%NLS("DateSeparator",".")
? Ведь эти установки действуют только для текущего процесса. Не нашел вызовов, которые позволяют настроить это общесистемно и долговременно. Может, плохо искал... CNLS.EXE эти параметры настраивать тоже не умеет. 2008.2 еще не смотрел...
Я вызываю d ##class(%SYS.NLS.Format).%New("Current") из %ZSTART.

В версии 2008.2.FT3 (возможно и в FT2) настроить это общесистемно и долговременно можно было просто установив в Портале нужную локаль текущей.
...
Рейтинг: 0 / 0
дата в csp и delphi
    #35531392
AlexKB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DahaВечер добрый! вот столкнулась с такой проблемкой: загружаю данные в базу из делфи и дату интерпретирую
TekDate:=IntToStr(Trunc(DateEdit1.Date));
а вот отчеты формирую в csp. И здесь текущая дата
s ds=$p($zdth($tr(dd,".","/"),4),",",1) .
И получается , что они друг другу не соответствуют. Есть ли какие -либо преобразовывающие функции или надо изначально использовать другие? подскажите, пож:)

Быть может Ваши проблемы связаны с тем что дата время в Borland представляется как дробное число, где целая часть это число дней от ... (сопоставлять с числом дне й от ... в Cache), а вот дробная часть не прошедшее число секунд от 00:00 (как в Cace) а прошедшее число секунд от 00:00 поделенное на число секунд в сутках (время 12:00 будет равно 0.5)
...
Рейтинг: 0 / 0
дата в csp и delphi
    #35531583
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servitЯ вызываю d ##class(%SYS.NLS.Format).%New("Current") из %ZSTARTДаже в 2008.1 такого класса нет... Т.е., чтобы прикрутить установку "нестандартных" значений параметров к старым версиям, можно вызывать $$SetDCFormat^%NLS() из JOB^%ZSTART и LOGIN^%ZSTART.
...
Рейтинг: 0 / 0
дата в csp и delphi
    #35531654
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey MaslovДаже в 2008.1 такого класса нет...
Класс %SYS.NLS.Format появился только в новой версии.
Alexey MaslovТ.е., чтобы прикрутить установку "нестандартных" значений параметров к старым версиям, можно вызывать $$SetDCFormat^%NLS() из JOB^%ZSTART и LOGIN^%ZSTART.
Именно так.
...
Рейтинг: 0 / 0
дата в csp и delphi
    #35826863
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Maslov.....
А перед этим где-то вызываете:
Код: plaintext
s oldsep=$$SetDCFormat^%NLS("DateSeparator",".")
? Ведь эти установки действуют только для текущего процесса. Не нашел вызовов, которые позволяют настроить это общесистемно и долговременно. Может, плохо искал... CNLS.EXE эти параметры настраивать тоже не умеет. 2008.2 еще не смотрел...
В будущем в Портале будет такая возможность. А в версии 2008.2.x это можно сделать проще, чем я советовал выше, просто установив в области %SYS системный глобал ^SYS("NLS","Config","LocaleFormat")=1.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / дата в csp и delphi
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]