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

Форум: MS ACCESS

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

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

 
 

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

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

тема: предложение having в sql запросе для поля boolean
 
 автор: rokin   (06.02.2007 в 12:30)   личное сообщение
 
 

запрос:
SELECT a,b
FROM ab
GROUP BY a,b
HAVING a=0 and b= & forms!ABCD!b
поле "а" в табл. "ab" имеет тип "boolean" и возвращает количество записей так, что поле "а" как буд-то отсутствует ... я как-то сталкивался с такой проблемой и менял тип поля и все заработало, но все таки неясность осталась, может кто знает и подскажет,
заранее спасибо

  Ответить  
 
 автор: osmor   (06.02.2007 в 13:15)   личное сообщение
 
 

Это все в cохраненном запросе написано?
тогда зачем "&"
по идее должно быть
HAVING a=0 and b= forms!ABCD!b

  Ответить  
 
 автор: rokin   (06.02.2007 в 14:30)   личное сообщение
 
 

собственно написано в таком плане

dim db as datebase
dim rs as recordset

set db=currentdb
set rs = db.openrecordset("SELECT a,b " & _
"FROM ab " & _
"GROUP BY a,b " & _
"HAVING a=0 and b=" & forms!ABCD!b)

  Ответить  
 
 автор: osmor   (06.02.2007 в 17:10)   личное сообщение
 
 

Не совсем понимаю суть задачи, но может есть смысл использовать Where вместо HAVING (это и работать должно быстрее)

set rs = db.openrecordset("SELECT a,b " & _
"FROM ab " & _
"Where (a=0 and b=" & forms!ABCD!b) & _
"GROUP BY a,b " )

  Ответить  
 
 автор: rokin   (07.02.2007 в 06:53)   личное сообщение
 
 

Тут ситуация какая-то непонятная, с where я тоже пробовал- без толку. Смешнее другое ... Ну не возвращает sql запрос - значит в нем ошибка (в реальности он состоит из трех табл. и с вычисляемыми полями, затем и есть группировки). Подставляю его в конструктор запроса - возвращает три записи, а это же из модуля формы - 0. Сделал новый запрос в конструкторе, вернул три записи, скопировал sql в модуль формы -0 записей на отладчике. Изменил тип boolean на дл.целое - все тоже самое. Причем, из одной табл. извлекает правильно, а из трех - нет. Ради интереса привожу настоящее выражение:

sql = "SELECT OrderItems.order_id, OrderItems.it_id, OrderItems.store_id, " & _
"OrderItems.prod_id, OrderItems.mark_id, OrderItems.psize_id, " & _
"Sum([WeightNameDetal]*[NumnberDetal]) AS TotalWeight, OrderItems.it_quantity, NameInOrder.Finish " & _
"FROM (OrderItems INNER JOIN RoutList ON (OrderItems.order_id = RoutList.order_id) AND " & _
"(OrderItems.prod_id = RoutList.proid_id) AND (OrderItems.mark_id = RoutList.mark_id) AND " & _
"(OrderItems.psize_id = RoutList.psize_id)) INNER JOIN NameInOrder ON RoutList.order_id = NameInOrder.order_id " & _
" where NameInOrder.Finish=0 and OrderItems.order_id= " & Me.order_id & _
" GROUP BY OrderItems.order_id, OrderItems.it_id, OrderItems.store_id, OrderItems.prod_id, " & _
"OrderItems.mark_id, OrderItems.psize_id, OrderItems.it_quantity, NameInOrder.Finish "

  Ответить  
 
 автор: osmor   (07.02.2007 в 08:37)   личное сообщение
 
 

а как проверяете количество записей? RecordCount? MoveLast делаете? если Finish булево попробуйте использовать False

... where NameInOrder.Finish = False ....

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

спасибо

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