Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2010, 17:43   #1
alco84
Пользователь
 
Регистрация: 23.01.2010
Сообщений: 69
Плохо Не хочет работать iif

Добрый вечер уважаемые не могу понять ругается на выделенное красным а ошибки я не вижу.

CurrentDb.CreateQueryDef "qryOutWord", "SELECT D1501H.UniCode, D1501H.DocCode, D1501H.DocType, D1501H.DocNum, Format([D1501H.DocDate],""«dd» mmmm yyyy"") AS DocDate," & _
" D1601H.Contact, D1501T6.Subject, D1601H.PreObjectAddress, D1501H.DocSum, iif(D1501H.DocSum is epty,"""",Sum2text([DocSum],True) AS SummText), Contacts.ItemName, Contacts.ItemName as Name," & _
" Contacts.BirthDate, Contacts.Passport as Passport, Contacts.PassportDate as PassportDate, Contacts.PassportPlace as PassportPlace, Contacts.EMail as EMail," & _
" Contacts.Phone as Phone, Contacts.PhoneMobile as PhoneMobile, Contacts.PostAddress as PostAddress" & _
" FROM Contacts INNER JOIN ((D1501H INNER JOIN D1601H ON D1501H.ProjectCode = D1601H.DocCode) INNER JOIN D1501T6 ON D1501H.UniCode = D1501T6.UniCode)" & _
" ON Contacts.ItemCode = D1601H.Contact WHERE (((D1501H.UniCode)=" & Forms!Docs!DocsPg1.Form.Controls!Un iCode & ") AND ((D1501H.DocType)=1));"
alco84 вне форума Ответить с цитированием
Старый 17.03.2010, 18:20   #2
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте alco84.
Что отозначает текст ...DocSum is epty... используемый в конструкции? как минимум опечатка.
Без анализа, возможно подобная "корректировка" исправит ситуацию:
.., iif(Len(Nz(D1501H.DocSum)) = 0 ,"""",Sum2text([DocSum],True) AS SummText), ..
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 18.03.2010, 09:08   #3
alco84
Пользователь
 
Регистрация: 23.01.2010
Сообщений: 69
По умолчанию

Совершенно верно это опечатка, но и ваша конструкция не хочет работать. Выдает одну и ту же ошибку синтаксиса якобы пропущен оператор только я никак не пойму что я упустил.
alco84 вне форума Ответить с цитированием
Старый 18.03.2010, 09:13   #4
alco84
Пользователь
 
Регистрация: 23.01.2010
Сообщений: 69
По умолчанию

К сожалению не могу предоставить код программы тк данные хранятся на sql сервере а без них нет смысла от приложения.
alco84 вне форума Ответить с цитированием
Старый 18.03.2010, 09:23   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а если перенести скобку? вот так, например,
Код:
iif(Len(Nz(D1501H.DocSum)) = 0 ,"""",Sum2text([DocSum],True)) AS SummText,
p.s. и ещё, удобнее отлаживать подобные вещи, временно выкинув всё "лишнее" из select ... — оставьте только одно выражение и добивайтесь, чтобы оно заработало.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.03.2010, 09:35   #6
alco84
Пользователь
 
Регистрация: 23.01.2010
Сообщений: 69
По умолчанию

Спасибо за совет и поправку все теперь работает.
alco84 вне форума Ответить с цитированием
Старый 18.03.2010, 09:48   #7
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

alco84, я писал "Без анализа..", стоит его всё же выполнить.
для возможности проверить текст SQL конструкции передаваемой на выполнение (и не только для этого) измените структуру построения кода:
постоянные значения поместите в константы
Const sQ = "SELECT D1501H.UniCode,...", sQ2 = "") AND ((D1501H.DocType)=1.."
явно объявляйте переменные
Dim s As String ' для построения SQL конструкции лучше если они будут текстовые
задавайте значение переменным
s = Forms!Docs!DocsPg1.Form.Controls!Un iCode & "" ' амперсанд все объединяемые значения "превращает" в текст
далее можно формировать SQL конструкцию
s = sQ + s + sQ2..
отображать текст для возможности копирования и проверки в SQL конструкторе
Debug.Print s
и передавать её команде для выполнения
CurrentDb.CreateQueryDef "qryOutWord", s
как видите на всех этапах можно контролировать выполнение и "поймать" ошибку.
Мнение: конечно SQL конструкции запросов MS Access допускают применения в тексте запроса функций VBA, функция Sum2text, возможно она у Вас не верно объявлена и в этом проблема или я ошибаюсь
Евгений.

Последний раз редактировалось Teslenko_EA; 18.03.2010 в 09:50.
Teslenko_EA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не хочет работать _alpha во Flash 666ALUKARD666 Помощь студентам 0 24.02.2010 12:02
Почему Программа не хочет работать strateg0793 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 8 21.01.2010 14:10
ну не хочет работать!!! MySQL artush1984 Общие вопросы C/C++ 1 06.09.2009 13:41
Не хочет работать образ диска Манжосов Денис :) Операционные системы общие вопросы 8 12.08.2009 03:45
Не хочет работать OpenPictureDialog guffer Общие вопросы Delphi 4 08.07.2009 20:14