Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / FoxPro 6 > 9 / 12 сообщений из 12, страница 1 из 1
19.12.2007, 13:42
    #35020234
yta
yta
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FoxPro 6 > 9
При переходе с FoxPro 6 на 9 возникла следующая проблема:

Код: plaintext
1.
2.
3.
4.
5.
6.
	lcSTR = "exec sp_GetOrderForDoc ?lcID, ?doctype_id"

	IF SQLEXEC(gnSqlHandle, lcStr, .cTmpTable) <=  0 
		MESSAGEB(ODBCMessage(),  16 , "")
		lRet = .F.
	ELSE

в 6 версии, поля в cTmpTable были NULLABLE, а в 9 NOT NULL. это можно поправить не меняя логику, каким-нибудь SET"ом?
...
Рейтинг: 0 / 0
19.12.2007, 13:45
    #35020250
yta
yta
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FoxPro 6 > 9
SET NULL ON соответственно не решает вопрос...
...
Рейтинг: 0 / 0
19.12.2007, 14:02
    #35020321
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FoxPro 6 > 9
Как поля были сформированы на сервере, так они и попали в FoxPro. Версия тут вообще не при чем. Ищите проблему в Вашей процедуре sp_GetOrderForDoc.

При указанных значениях параметров поля будут Nullable? На самом сервере, а не в среде FoxPro.
...
Рейтинг: 0 / 0
19.12.2007, 14:43
    #35020525
yta
yta
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FoxPro 6 > 9
ВладимирМКак поля были сформированы на сервере, так они и попали в FoxPro. Версия тут вообще не при чем. Ищите проблему в Вашей процедуре sp_GetOrderForDoc.


на компьютере стоит две версии среды, в 6 работает в 9 ошибка при вставке в полученный курсор null. на одной и той же базе (процедуре), на одном и том же исходнике. логичен ли вывод что дело в среде?


При указанных значениях параметров поля будут Nullable?

да.
...
Рейтинг: 0 / 0
19.12.2007, 15:02
    #35020635
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FoxPro 6 > 9
yta ВладимирМКак поля были сформированы на сервере, так они и попали в FoxPro. Версия тут вообще не при чем. Ищите проблему в Вашей процедуре sp_GetOrderForDoc.


на компьютере стоит две версии среды, в 6 работает в 9 ошибка при вставке в полученный курсор null. на одной и той же базе (процедуре), на одном и том же исходнике. логичен ли вывод что дело в среде?


Нет. Не логичен. Поскольку формирование результирующего курсора происходит вне среды FoxPro.

Т.е. никакие настройки среды FoxPro просто физически не могут на него повлиять. Возможно, влияют какие-либо настройки драйвера ODBC.

Вот цитата из HELP по VFP9

VFP9Null-значения в полях источников данных ODBC становятся null-значениями в курсоре Visual FoxPro, вне зависимости от установки SET NULL в Visual FoxPro во время, когда приложение извлекает удаленные данные.

Дайте команду AFIELDS() на результирующие запросы в среде VFP6 и в VFP9 и посмотрите значение 5 столбца для полей, колторые должны быть Nullable.
...
Рейтинг: 0 / 0
19.12.2007, 15:32
    #35020794
yta
yta
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FoxPro 6 > 9
ВладимирМ
Нет. Не логичен. Поскольку формирование результирующего курсора происходит вне среды FoxPro. Т.е. никакие настройки среды FoxPro просто физически не могут на него повлиять. Возможно, влияют какие-либо настройки драйвера ODBC.

ODBC драйвер используется один и тот же... один и тот же sql сервер... условия вообще идентичны за исключением среды разработки.

VFP9Null-значения в полях источников данных ODBC становятся null-значениями в курсоре Visual FoxPro, вне зависимости от установки SET NULL в Visual FoxPro во время, когда приложение извлекает удаленные данные.

ок. уточняю мою проблему... если процедура возвращает не пустой рекордсет так всё и происходит, что в 6, что в 9... если же он пустой то, полученные структуры курсора у 6 и 9 отличаются ограничением на null.


Дайте команду AFIELDS() на результирующие запросы в среде VFP6 и в VFP9 и посмотрите значение 5 столбца для полей, колторые должны быть Nullable.
буду пробовать, спасибо.
...
Рейтинг: 0 / 0
19.12.2007, 15:41
    #35020836
FoxPro 6 > 9
если же он пустой то, полученные структуры курсора у 6 и 9 отличаются ограничением на null.
Если дело именно в этом, то отличаются они не только этим. В 9-ке SQL-движок более приближен к стандарту SQL и изменен возвращаемый результат именно в таком случае. Подробности в хелпе.
...
Рейтинг: 0 / 0
19.12.2007, 17:54
    #35021402
yta
yta
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FoxPro 6 > 9
проходящий.Если дело именно в этом, то отличаются они не только этим. В 9-ке SQL-движок более приближен к стандарту SQL и изменен возвращаемый результат именно в таком случае. Подробности в хелпе.

What's New in Visual FoxPro 9 смотреть бесполезно, так как он описывает изменения с 8 версии, что логично ) Я на форум написал именно потому, что сам найти ответ в справке не могу, и в расчете на то, что если кто-нибудь сталкивался с такими "проблемами" даст ответ... Можно ссылку в хелп, где описаны эти подробности?
...
Рейтинг: 0 / 0
19.12.2007, 18:02
    #35021438
yta
yta
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FoxPro 6 > 9
проходящий.. В 9-ке SQL-движок более приближен к стандарту SQL
...
что это за стандарт такой? ) MS SQL 2005 ему соответсвует?

при любых вариантах работать будет:

Код: plaintext
1.
2.
3.
4.
5.
6.
--create table #a (id int null)
create table #a (id int)
--insert into #a (id) values (1)
select * into #b from #a
insert into #b (id) values(null)
select * from #b
)
...
Рейтинг: 0 / 0
19.12.2007, 18:36
    #35021561
FoxPro 6 > 9
Прошу прощения за введение в некоторое заблуждение. Мое высказывание об изменении поведения select относилось только к родным select'ам, при том с агрегирующими функциями, а не к SQLExec.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
set ENGINEBEHAVIOR  90 
?SQLExec( 1 ,'select @@version where 1=0','aaa')
BROWSE LAST
Insert into aaa values (null)
BROWSE LAST
set ENGINEBEHAVIOR  70 
?SQLExec( 1 ,'select @@version where 1=0','aaa')
Insert into aaa values (null)
BROWSE LAST
Вот такая моя попытка воспроизвести ситуацию показала нормальную работу фокса при получении пустого курсора.
Может автор топика попробует таки сделать репро код, демонстрирующий описанное им поведение?
...
Рейтинг: 0 / 0
20.12.2007, 15:27
    #35023680
yta
yta
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FoxPro 6 > 9
проходящий.
Может автор топика попробует таки сделать репро код, демонстрирующий описанное им поведение?

обязательно, в принципе в первом посте постарался это сделать, но напишу подробней... сейчас занят поиском решения без изменения кода... хотя это кочечно возможно, но очень неприятно...
...
Рейтинг: 0 / 0
24.12.2007, 11:35
    #35029518
yta
yta
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FoxPro 6 > 9
Вообщем помог SET ENGINEBEHAVIOR 70 всё вернулось на свои места. Всем спасбо!
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / FoxPro 6 > 9 / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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