powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Беда с запросом через OLE DB
7 сообщений из 7, страница 1 из 1
Беда с запросом через OLE DB
    #32188442
I911
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
следующий запрос выполнялся нормально 4 месяца
на 5-й
IIF(ISNULL(psf_link.idpsfmtr),"",STR(psf_link.idpsfmtr)) AS ПоступТовДокИд

выдает пустое значение, хотя в таблице данные есть и связка по этому полю работает.
т.е. IIF(ISNULL(psf.vsf),"",STR(psf.vsf)) AS ВидПоступДок содержит искомые значения.

SELECT IIF(ISNULL(header.SK),"", STR(header.SK)) AS Ид
,IIF(ISNULL(header.NSF),"",header.NSF) AS Номер
,IIF(empty(header.DOTGR),header.Date_vv,header.DOTGR) AS Дата
,IIF(empty(header.DPRIH),DATE(1980,1,1),header.DPRIH) AS ДатаПриходаСчета
,IIF(EMPTY(header.DSF),DATE(1980,1,1),header.DSF) AS ДатаСчета
,IIF(ISNULL(header.VSF),"",STR(header.VSF)) AS Вид
,IIF(ISNULL(header.SSF),STR(0,17,2),STR(header.SSF,17,2)) AS Сумма
,IIF(ISNULL(header.ID_DOG),"",STR(header.ID_DOG)) AS ДоговорИд
,IIF(ISNULL(header.FDIR),"",STR(header.FDIR)) AS ФилиалКод
,IIF(ISNULL(psf_link.idpsfmtr),"",STR(psf_link.idpsfmtr)) AS ПоступТовДокИд
,IIF(ISNULL(psf.vsf),"",STR(psf.vsf)) AS ВидПоступДок
FROM Bd\psf header
LEFT JOIN Bd\psf_link psf_link on header.sk = psf_link.idpsfusl
LEFT JOIN Bd\psf psf on psf_link.idpsfmtr = psf.sk where header.del = .F. and header.otgr = '200305' and header.vsf in (4,8)
...
Рейтинг: 0 / 0
Беда с запросом через OLE DB
    #32188859
I911
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужна помощь.
Ну хоть одно предположение.
...
Рейтинг: 0 / 0
Беда с запросом через OLE DB
    #32188875
Crip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1)вместо iif(isnull() проще использовать nvl.
2) поле фоксовый курсор создается по длине первого результата .
вместо "" надо space(50) или что быстрее просто " ",
вместо str() str(,50) , вместо 0 - 00000000000000 и т.д.
...
Рейтинг: 0 / 0
Беда с запросом через OLE DB
    #32188880
zvn_2003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Без данных трудно понять как работает

Скорее всего проблема в left join
попробуй заменить на время на Full join чтобы понять что не так

ключ OUTER
напрмер left outer join - брать все строки из левой таблицы,
даже если в правой нет сопоставления

значения попадает в интервал?
where header.del = .F. and header.otgr = '200305' and header.vsf in (4,8)

попробуй например так
IIF(ISNULL(psf.vsf), "999 999.99" ,STR(psf.vsf))

если ничего тогда разбей на два запроса
... будет видно где пропадает

зачет str()? если не секрет?
...
Рейтинг: 0 / 0
Беда с запросом через OLE DB
    #32188889
Crip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поправка
" " следует читать как "<много пробелов>" . Местный парсер урезал...
...
Рейтинг: 0 / 0
Беда с запросом через OLE DB
    #32189280
I911
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
str() нужен для 1С - она не умеет работать с целочисленными значениями и значениями с плавающей точкой OLEDB :(
вариант с nvl прошел, но вот вопрос: что могло поменяться в таблице (причем выборочно ??) по сравнению с другими периодами???
Спасибо всем за участие
...
Рейтинг: 0 / 0
Беда с запросом через OLE DB
    #32189287
Crip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для старшего офицерского состава. См. п.2 из моего поста.
В этом периоде у вас первая запись в запросе была NULL . Соответственно создалось поле с длинной с(1) и значением "", а последующие записи в это поле просто не умещались...
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Беда с запросом через OLE DB
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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