powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / VFP поле DATE => MS SQL=> VFP поле DATETIME
8 сообщений из 8, страница 1 из 1
VFP поле DATE => MS SQL=> VFP поле DATETIME
    #32181753
Kozerog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблицы формата DBF c помощью DTS перенесли на MS SQL 2000.

Поля типа DATE преобразовались в поля типа SMALLDATETIME.

Из VFP6.0 SP5 вытаскиваем с сервера те же таблицы.

Теперь те же поля стали DATETIME.

Можно ли получить в VFP курсор с Сервера с полями типа DATE?

Или это принципиально невозможно?
...
Рейтинг: 0 / 0
VFP поле DATE => MS SQL=> VFP поле DATETIME
    #32181758
vklepko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если Вы вытаскиваете данные с помощью Remote View, то можно переопределить свойство поля

Код: plaintext
=DBSetProp( "myRemoteView.myViewField" , "FIELD" , "DataType" , "D" )
...
Рейтинг: 0 / 0
VFP поле DATE => MS SQL=> VFP поле DATETIME
    #32182446
Kozerog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
=>vklepko

Вытаскиваем данные с помощью сквозного запроса в курсор.
...
Рейтинг: 0 / 0
VFP поле DATE => MS SQL=> VFP поле DATETIME
    #32183550
vklepko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как управлять типами полей в результирующем курсоре, который возвращает SQLExec, я не знаю.
И хороших идей по этому поводу не имею. Нехорошие идеи есть и все они проигрывают по сравнению с использованием remote view.

А можно поподробней о Вашей проблеме:
отображется на экране не так как хотелось бы?,
обработка в коде рассчитана на тип date?,
используется ли полученный курсор для модификации данных через TableUpdate()?,
существует ли в проекте сама база, куда можно добавить remote view?
...
Рейтинг: 0 / 0
VFP поле DATE => MS SQL=> VFP поле DATETIME
    #32183555
Crip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут vklepko прав...
Вроде CursorAdapter в VFP8 должен был решить эту проблему, но что-то такое ощущение разработчики просто позабыли . Установка типа d в CursorSchema ничего не меняет :(((.
Остается тогда один вопрос. А оно вам надо? Проблема я так понимаю одна - удобное редактирование данного поля в гриде... Ну и тут в принципе можно извращнуться
...
Рейтинг: 0 / 0
VFP поле DATE => MS SQL=> VFP поле DATETIME
    #32183694
Kozerog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
=>vklepko

1.Отображется на экране не так как хотелось бы.
2.Обработка в коде рассчитана на тип date. Много оперпаций сравнения дат и определения MIN и MAX даты по столбцу. И даты считаются одинаковыми если совпадают день, месяц, год. Как эти же функции поведут себя с полем DATETIME пока не проверял.

3.Полученный курсор используется для модификации данных(сразу создается как модифицируемый).
TableUpdate не используется.
4.В проекте базы нет.
...
Рейтинг: 0 / 0
VFP поле DATE => MS SQL=> VFP поле DATETIME
    #32183704
vklepko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
=>Kozerog
3.Полученный курсор используется для модификации данных(сразу создается как модифицируемый).
TableUpdate не используется.


Хочу уточнить:
1)Данные модифицируются через выполнение отдельных SQLExec
или
2)Данные модифицируются в результате навигации по курсору - у курсора выставляются ключи, поля, CursorSetProp("SendUpdates",.t.) и используется optimistic row buffering?
...
Рейтинг: 0 / 0
VFP поле DATE => MS SQL=> VFP поле DATETIME
    #32183717
vklepko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
=>Kozerog

Одна из нехороших идей
создать local cursor(ЧЕРЕЗ НЕГО UPDATE НА BACKEND НЕ ПОЙДЁТ!!!) на основании полученного из SQLExec, предварительно подменив тип поля

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
local lnF,lcSQL
local array fArray( 1 )
lcSQL =  "select Item, ModifiedDateTime from Items" 
=SQLExec(h,lcSQL, "remoteCursor" )
if used( "remoteCursor" )
    =AFields(fArray, "remoteCursor" )
    lnF =AScan(fArray, "ModifiedDateTime" )
    fArray(lnF+ 1 )=  "D" 
    create cursor  "localCursor"  from array fArray
    append from dbf( "remoteCursor" )
endif


В localCursor поле ModifiedDateTime имеет тип date.
Проблемы с отображением не будет. Проблем с обработкой в коде не будет

Зато будут проблемы с модификацией данных. localCursor нельзя заставить слать команды модификации данных на удалённую базу.

Если у Вас для модификации используется SQLExec - проблем нет!

Если модификации проходят через курсор, то нужно будет самостоятельно синхронизировать localCursor и remoteCursor.


Microsoft предлагает
В результате получим тип Character
Не проверял, как будет работать. Думаю, что
1)Отображаться будет хорошо
2)Модификации будут проходить(при попытке insert/update SQL Server законвертирует char(10) в datetime неявно, главное, наверное , чтобы форматы совпадали - опять же не проверял)

3)с обработкой в существующем коде будут проблемы - MIN(), MAX() будут врать
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / VFP поле DATE => MS SQL=> VFP поле DATETIME
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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