powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / VFP+Oracle Тип Date
14 сообщений из 14, страница 1 из 1
VFP+Oracle Тип Date
    #33377966
Maltsev Max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня в Oracle тип поля Date. На клиента приходит DateTime, это в принципе не страшно, но юзвери ругаются, что в гриде отображается лишняя информация (время).
Нельзя-ли как-нибудь указать, что бы при формировании SqlResult он преобразовывал DateTime в Date.
Или Указать в гриду, что б он отображал DateTime как Date.
...
Рейтинг: 0 / 0
VFP+Oracle Тип Date
    #33377980
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Варианты:
1. .Column2.ControlSource = "NVL(TTOD(YourCursor.DTDok), {})"
2. Получить результат во временный курсор (например temp) и затем скопировать данный в постоянный:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
..
..SQLEXEC(prConn, YourCOmmand, "temp") ...
ZAP IN PCursor 
INSERT INTO PCursor (......, DDok, ..)
SELECT ..., NVL(TTOD(temp.DTDok), {}) FROM temp
USE IN SELECT("temp")
SELECT PCursor
GOTO TOP
..
Я использую второй вариант.
С уважением, Алексей.
...
Рейтинг: 0 / 0
VFP+Oracle Тип Date
    #33378786
Maltsev Max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aleksey-K, спасибо.
Мне больше понравился первый вариант.
...
Рейтинг: 0 / 0
VFP+Oracle Тип Date
    #33380326
WORKSNS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему в команде отправляемой серверу сразу не использовать функцию CAST()?

например так

=sqlexec(HndlConn,'SELECT CAST(DATETIME_FIELD AS DATE) AS DATE_FIELD FROM REMOTETABLE')
...
Рейтинг: 0 / 0
VFP+Oracle Тип Date
    #33380426
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что, в ORACLE есть тип данных DATE (я не знаток ORACLE)? Если есть, то и применяйте его а таблицах, а не DATETIME.
Через SQLEXEC вы посылаете команду в синтаксисе сервера (ORACLE), а не клиента (VFP) - pass-through однако :)
С уважением, Алексей.
...
Рейтинг: 0 / 0
VFP+Oracle Тип Date
    #33381513
Maltsev Max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aleksey-KА что, в ORACLE есть тип данных DATE (я не знаток ORACLE)? Если есть, то и применяйте его а таблицах, а не DATETIME.
Через SQLEXEC вы посылаете команду в синтаксисе сервера (ORACLE), а не клиента (VFP) - pass-through однако :)
С уважением, Алексей.

1) в Oracle есть тип поля DATE. (см рисунок. вверху)
2) именно этот тип у меня и установлен.
3) Но на клиента возвращается DateTime (см рисунок. внизу)

Но так как время мне совершенно не важно, я воспользовался твоим советом и Юзвери остались довольны.
...
Рейтинг: 0 / 0
VFP+Oracle Тип Date
    #33382831
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Maltsev Max!

1) Тип данных DATE в Oracle соответствует типу DateTime некоторых других
СУБД - т.е. он включает в себя и дату и время.
2) Если забирать данные через SQLEXEC - то только вышеописанным шаманством и
можно бороться - IMHO это неконструктивно в общем случае - заметно больше
телодвижений.
3) Если забирать данные через RV, или (если позволяет версия фокса) через
CAD - то можно ЯВНО указать что тип данного поля D - и фокс сам произведёт
"усечение времени". Это уже поинтереснее - НО если реально данные в таблице
ИМЕЛИ часть со временем, то мы получим проблемы с обновлением таких
записей - придётся отключать проверку на конфликт совместного обновления
(ставить WhereType = 1), или явно исключать данное поле из WHERE части
формируемых команд UPDATE и DELETE - конечно в случае если есть доступ к
такой продвиутой возможности - а он есть только в CAD - в RV никак...
4) К сожалению в фоксе нету простого и понятного способа ОТОБРАЖАТЬ и
РЕДАКТИРОВАТЬ DateTime без time части - если писать функцию в качестве
ControlSource - поле будет ReadOnly... Придётся либо рисовать свой весьма
непростой контрол, либо делать всё БЕЗ прямой привязки через ControlSource -
т.е. программно присваивать Value контролу, и потом обратно по REPLACE в
поле курсора забрасывать... Для показа в гриде это ещё сложнее...

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
VFP+Oracle Тип Date
    #33382876
WORKSNS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я тоже не знаток Oracle :(. Вроде в Oracle есть функция Extract, может ей собрать возвращаемую дату в нужном формате?
...
Рейтинг: 0 / 0
VFP+Oracle Тип Date
    #33385586
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi WORKSNS!

Если "собрать", или, что более правильно, просто отформатировать дату как
текст - то конечно всё замечательно будет выглядеть... За исключением того,
что править такие данные будет никак нельзя - это же уже строка, а не
дата...

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
VFP+Oracle Тип Date
    #33385626
WORKSNS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Igor Korolyov
Hi WORKSNS!

За исключением того,
что править такие данные будет никак нельзя - это же уже строка, а не
дата...

Posted via ActualForum NNTP Server 1.3

Правят в гриде редко :), а в форме редактирование сделать CTOD, а при сохранении DTOC не так сложно :). Да и вопрос "или" был. для отображения вполне достаточно :)
...
Рейтинг: 0 / 0
VFP+Oracle Тип Date
    #33386763
NSFuimus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не понимаю я вас ... если преобразование даты в строку допустимо то используйте в запросе TO_CHAR() с нужным вам форматированием; если не допустимо - используйте пару TO_DATE(TO_CHAR()) с нужным вам форматированием ... делов-то ...
...
Рейтинг: 0 / 0
VFP+Oracle Тип Date
    #33387905
WORKSNS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NSFuimusНе понимаю я вас ... если преобразование даты в строку допустимо то используйте в запросе TO_CHAR() с нужным вам форматированием; если не допустимо - используйте пару TO_DATE(TO_CHAR()) с нужным вам форматированием ... делов-то ...
А я и не спорю. Просто по словам моего знакомого, "ORACLE - монстр и в некоторых моментах многие языки 'курят' по сравнению с PL". Т.е. можно сделать вывод что получение в курсор данных не в "том" виде, как хотелось бы, скорее от незнания Oracle, нежели от его недостатков . И я еще раз подчеркиваю - я знаю, что есть Oracle, но я никогда не работал с ним .
...
Рейтинг: 0 / 0
VFP+Oracle Тип Date
    #33388466
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi NSFuimus!

Проблема не в Oracle как таковом, а в ODBC драйвере - он конвертирует этот
тип в фоксовый DateTime (по сути это конечно правильно). Так что все пляски
на стороне Oracle не приведут к нужному результату - ODBC всё испортит. Так
что проблему надо решать на стороне фокса - используя RV или (что конечно
лучше) CAD. Ну или рисовать свой контрол, который будет редактировать
DateTime поле так как будто оно имеет тип Date.

2 WORKSNS
Правят в гриде редко :)
Это кто как :) Я вот напротив считаю что править в гриде очень много чего
можно и нужно - начиная от справочников (если там полей немного) и
заканчивая сложными многотабличными формами. И вообще в форме типа
"заголовок+строки" если сделать правку "строк" не в гриде а в отдельной
форме - то это как правило будет явный перебор.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
VFP+Oracle Тип Date
    #37390299
Яковлев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В textbox свойство Value показываем значение поля из курсорадаптера ttod(cursoradapter1.field1)
В методе Refresh формы это будет выглядеть примерно так: ThisForm.Grid1.column1.textbox1.value=ttod(cursoradapter1.field1)

В textbox метод Valid записываем значение поля в курсорадаптер replace next1 alias.field1 with This.Value
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / VFP+Oracle Тип Date
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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