Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Запрос, черт его дери MSA2003
 
 автор: ial52   (04.01.2011 в 19:57)   личное сообщение
 
 

Есть таблица, в которой присутствует поле DTM_FH, типа "Date/Time" . В зависимости от значения элемента RHM1 в форме условие Like должно меняться с Is Not Nul на Is Null. Вот весь текст запроса
SELECT t010_KDST.DTM_FH
FROM t010_KDST
WHERE (((t010_KDST.DTM_FH)=IIf([Forms]![FRM_KDSTM_00]![RHM1]=5,(t010_KDST.DTM_FH) Is Not Null,(t010_KDST.DTM_FH) Is Null)));
То есть, в одном случае выходят все строки в которых поле пустое, а в другом поля с занесенной датой.
Не работает, собак кудой. Напортачил с синтаксисом, чувствую.
Кто поможет?

  Ответить  
 
 автор: П.Полиграфович   (04.01.2011 в 20:07)   личное сообщение
 
 

Моё мнение: что IIF (тернарная операция в VB) будет тяжко работать при росте строк.
По вопросу: что если написать отдельно условие для составлении 2-х вариантов строки запроса,
одно с "Not" другое без, а потом просто пользовать где необходимо.
Т.е. реализовывать условие не в самом запросе, а просто динамически составлять запрос.

  Ответить  
 
 автор: ial52   (04.01.2011 в 20:14)   личное сообщение
 
 

Можно и так, но хочется просто подсунуть запрос под форму, не расписывая в модуле.
в этом запросе уже одно поле фильтруется таким образом, но там LONG. А с датами вечная проблема.

  Ответить  
 
 автор: snipe   (04.01.2011 в 20:16)   личное сообщение
 
 

WHERE IIf([Forms]![FRM_KDSTM_00]![RHM1]=5,(t010_KDST.DTM_FH) Is Not Null,(t010_KDST.DTM_FH) Is Null);

  Ответить  
 
 автор: Гоблин   (04.01.2011 в 20:12)   личное сообщение
 
 

Это условие из запроса в конструкторе? В VBA IIF пишется IF

  Ответить  
 
 автор: ial52   (04.01.2011 в 20:16)   личное сообщение
 
 

Конечно IIF

  Ответить  
 
 автор: snipe   (04.01.2011 в 20:30)   личное сообщение
 
 

WHERE IIf([Forms]![FRM_KDSTM_00]![RHM1]=5,(t010_KDST.DTM_FH) Is Not Null,(t010_KDST.DTM_FH) Is Null);

только фокус с поля [RHM1] нужно убирать

  Ответить  
 
 автор: ial52   (04.01.2011 в 20:33)   личное сообщение
 
 

А почему?
Сейчас попробую

  Ответить  
 
 автор: ial52   (04.01.2011 в 20:35)   личное сообщение
 
 

не работает

  Ответить  
 
 автор: snipe   (04.01.2011 в 20:42)   личное сообщение
9 Кб.
 
 

вот =>

  Ответить  
 
 автор: ial52   (04.01.2011 в 20:38)   личное сообщение
 
 

Точнее будет так
WHERE (((t010_KDST.DTM_FH) Like IIf([Forms]![FRM_KDSTM_00]![RHM1]=5,(t010_KDST.DTM_FH) Is Not Null,(t010_KDST.DTM_FH) Is Null

То есть добавлен оператор LIKE. Но все равно не работает. Ничего не понимаю

  Ответить  
 
 автор: snipe   (04.01.2011 в 20:44)   личное сообщение
 
 

а причем тут like?

  Ответить  
 
 автор: ial52   (04.01.2011 в 20:51)   личное сообщение
 
 

Не не равно же Is Not Null.
Хотя все равно не желает. Придется, видимо переносить в модуль и выписывать RowSource. А так не хочется

  Ответить  
 
 автор: kot_k_k   (04.01.2011 в 21:51)   личное сообщение
 
 

непойму скачал пример все работает - проверь еще раз условия

  Ответить  
 
 автор: Гоблин   (04.01.2011 в 22:27)   личное сообщение
 
 

Попробуй так. Если 5, то запускай запрос, в котором условие is null
Во всех остальных случаях запускай запрос с условием is not null
У меня почему-то не открывается VBA с данного снипом примера.

  Ответить  
 
 автор: snipe   (04.01.2011 в 22:40)   личное сообщение
 
 

это чего-то с моим компом (я про не открывается)
на VBA только
Private Sub Кнопка4_Click()
DoCmd.OpenQuery "Запрос1"
End Sub

  Ответить  
 
 автор: ial52   (06.01.2011 в 16:55)   личное сообщение
 
 

Спасибо, но это для школы юного программиста, думаю, что на 10 или 12 занятие.

  Ответить  
 
 автор: snipe   (06.01.2011 в 16:58)   личное сообщение
 
 


ого

  Ответить  
 
 автор: kot_k_k   (06.01.2011 в 17:01)   личное сообщение
 
 


ого


бабушка а что такое - несусветный крик?
- ну это внученька тип того: "Эге-ге-ге-гей-й-й-й, еб твою мать!!!!!"

  Ответить  
 
 автор: shanemac51   (05.01.2011 в 08:50)   личное сообщение
 
 

попробуй, только верни имя таблицы

SELECT t010.*, [Forms]![FRM_KDSTM_00]![RHM1] AS dd
FROM t010
WHERE (((IsNull([t010].[DTM_FH]))=IIf([Forms]![FRM_KDSTM_00]![RHM1]=5,False,True)));

  Ответить  
 
 автор: Анатолий (Киев)   (05.01.2011 в 10:49)   личное сообщение
 
 

WHERE ([Forms]![FRM_KDSTM_00]![RHM1]=5 AND t010_KDST.DTM_FH Is Not Null) OR ([Forms]![FRM_KDSTM_00]![RHM1]<>5 AND t010_KDST.DTM_FH Is Null)

  Ответить  
 
 автор: ial52   (06.01.2011 в 17:04)   личное сообщение
 
 

Спасибо!!! Все получилось!

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList