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

Форум: MS ACCESS

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

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

 
 

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

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

тема: Параметры в запросе на добавление
 
 автор: ReStart   (29.08.2007 в 17:05)   личное сообщение
 
 

Добрый День!
Есть запрос на добавление записей из старой таблицы в новую. Среди условий отбора хотела добавить параметр для даты, чтобы из старой таблицы в новую переносились записи, начиная с даты, введенной пользователем.
И что-то белиберда какая-то получается. Хочу, например, получить записи, начиная с 13.04.2002, а копируется все равно и 2000 и 2001. В чем тут дело?
Можно ли использовать параметры в запросе на добавление или только на выборку?
Или тут с датой что-то не то... Я пробовала разные стандарты - не идет.

  Ответить  
 
 автор: ГлазастыйМышь   (29.08.2007 в 17:26)   личное сообщение
 
 

телепаты в отпуске
т.е. текст запроса в студию

  Ответить  
 
 автор: ReStart   (29.08.2007 в 17:43)   личное сообщение
 
 

INSERT INTO ККАрхив_обр ( ION, Статус, ДЗанесения, ДСтатус, ЦПродавца, ЦПокупателя, НасПункт, Район, Улица, Дом, Зона, Этажность, Этаж, КолКомнат, ОбщКолКом, КомН, Стиль, ТипДома, ГодПостройки, Съемщики, Жильцы, ПСмежн, ПОбщ, ПЖил, ПКух, [Цена$квм], Санузел, Ванна, Примечания )
SELECT ККАрхив_проб.ION, ККАрхив_проб.Статус, ККАрхив_проб.ДЗанесения, ККАрхив_проб.ДСтатус, ККАрхив_проб.ЦПродавца, ККАрхив_проб.ЦПокупателя, ККАрхив_проб.НасПункт, ККАрхив_проб.Район, ККАрхив_проб.Улица, ККАрхив_проб.Дом, [Справочник_УлицБезДома].[Зоны] & [Справочник_УлицСДомом].[Зоны] AS Зона, ККАрхив_проб.Этажность, ККАрхив_проб.Этаж, ККАрхив_проб.КолКомнат, ККАрхив_проб.ОбщКолКом, IIf([ОбщКолКом]>1 And [КолКомнат]=1,"99",[КолКомнат]) AS КомН, ККАрхив_проб.Стиль, IIf([Стиль]="Кирпичный" And [Этаж]>7 And [ПКух]>8 And (([КомН]=1 And [ПОбщ]>32) Or ([КомН]=2 And [ПОбщ]>49) Or ([КомН]=3 And [ПОбщ]>66) Or ([КомН]=4 And [ПОбщ]>75)),"НК",IIf([Стиль]="Кирпичный" And ([Этаж]>=7 And [Этаж]<>11) And [ПКух]<=8 And (([КомН]=1 And [ПОбщ]<=32) Or ([КомН]=2 And [ПОбщ]<=49) Or ([КомН]=3 And [ПОбщ]<=66) Or ([КомН]=4 And [ПОбщ]<=75)),"СК",IIf([Стиль]="Панельный" And [Этаж]>=5 And [Этаж]<=7 And [ПКух]<=8 And (([КомН]=1 And [ПОбщ]<=32) Or ([КомН]=2 And [ПОбщ]<=49) Or ([КомН]=3 And [ПОбщ]<=66) Or ([КомН]=4 And [ПОбщ]<=75)),"ХРУЩ/БРЕЖ",IIf([Стиль]="Панельный" And [Этаж]>=8 And [Этаж]<=9 And [ПКух]<=8 And (([КомН]=1 And [ПОбщ]<=32) Or ([КомН]=2 And [ПОбщ]<=49) Or ([КомН]=3 And [ПОбщ]<=66) Or ([КомН]=4 And [ПОбщ]<=75)),"СП",IIf([Стиль]="Панельный" And [Этаж]>9 And [Этаж]<17 And [ПКух]>8 And (([КомН]=1 And [ПОбщ]>32) Or ([КомН]=2 And [ПОбщ]>49) Or ([КомН]=3 And [ПОбщ]>66) Or ([КомН]=4 And [ПОбщ]>75)),"НП"))))) & [Справочник_СтильТипДома].[ТипДома1] AS ТипДома, ККАрхив_проб.ГодПостройки, ККАрхив_проб.Съемщики, ККАрхив_проб.Жильцы, ККАрхив_проб.ПСмежн, ККАрхив_проб.ПОбщ, ККАрхив_проб.ПЖил, ККАрхив_проб.ПКух, ККАрхив_проб.[Цена$квм], ККАрхив_проб.Санузел, ККАрхив_проб.Ванна, ККАрхив_проб.Примечания
FROM ((ККАрхив_проб LEFT JOIN Справочник_СтильТипДома ON ККАрхив_проб.Стиль = Справочник_СтильТипДома.Стили) LEFT JOIN Справочник_УлицБезДома ON (ККАрхив_проб.Улица = Справочник_УлицБезДома.Улицы) AND (ККАрхив_проб.Район = Справочник_УлицБезДома.Районы)) LEFT JOIN Справочник_УлицСДомом ON (ККАрхив_проб.Дом = Справочник_УлицСДомом.Дома) AND (ККАрхив_проб.Улица = Справочник_УлицСДомом.Улицы) AND (ККАрхив_проб.Район = Справочник_УлицСДомом.Районы)
WHERE (((ККАрхив_проб.ДСтатус)>=[Введите начальную дату]) AND ((ККАрхив_проб.Район) In ("Адмиралтейский","Василеостровский","Выборгский","Калининский","Кировский","Красногвардейский","Красносельский","Московский","Невский","Петроградский","Приморский","Фрунзенский","Центральный")) AND ((ККАрхив_проб.Этажность)<>1) AND ((ККАрхив_проб.Этаж)<>1) AND ((ККАрхив_проб.ОбщКолКом)=0) AND ((ККАрхив_проб.Стиль)<>"деревянный") AND ((ККАрхив_проб.Добавлено)=No)) OR (((ККАрхив_проб.КолКомнат)=1) AND ((ККАрхив_проб.ОбщКолКом)>1))
ORDER BY ККАрхив_проб.ДСтатус;

Собственно вот.... Из таблицы ККАрхив в ККАрхив_обр добавляются записи по этим условиям.
Хотела задать параметр для даты - поле, которое содержит дату называется ДСтатус

  Ответить  
 
 автор: ГлазастыйМышь   (30.08.2007 в 08:19)   личное сообщение
 
 

Внимательней со скобками
по представленному коду получается, что выбирается по двум условиям или

((ККАрхив_проб.ДСтатус)>=[Введите начальную дату]) AND ((ККАрхив_проб.Район) In 
("Адмиралтейский","Василеостровский","Выборгский","Калининский","Кировский",
"Красногвардейский","Красносельский","Московский","Невский","Петроградский",
"Приморский","Фрунзенский","Центральный")) AND ((ККАрхив_проб.Этажность)<>1) 
AND ((ККАрхив_проб.Этаж)<>1) AND ((ККАрхив_проб.ОбщКолКом)=0) 
AND ((ККАрхив_проб.Стиль)<>"деревянный") AND ((ККАрхив_проб.Добавлено)=No))

или по

(((ККАрхив_проб.КолКомнат)=1) AND ((ККАрхив_проб.ОбщКолКом)>1)

а там нет никакого выбора даты

  Ответить  
 
 автор: ReStart   (30.08.2007 в 15:19)   личное сообщение
 
 

ГлазастыйМышь, я начинала все писать руками сначала, чтобы поизучать SQL, но почуствовала, что путаюсь и дальше делала уже в конструкторе, отслеживая что и как получается. Так что скобки расставляла не я.
И судя по данным в результирующей таблице ККАрхив_обр, все вроде правильно отбирается...

Хотя если посмотреть на код, то действительно получается 2 условия.
Эти два условия получаются из-за того, что мне надо чтобы для двух полей ОбщКолКом и КолКомнат условие отбора было следующее:

ККАрхив_проб.ОбщКолКом=0 OR (ККАрхив_проб.КолКомнат=1 AND ККАрхив_проб.ОбщКолКом>1)
Как тогда правильно их записать?

  Ответить  
 
 автор: ГлазастыйМышь   (30.08.2007 в 17:23)   личное сообщение
 
 

я думаю так

WHERE (((ККАрхив_проб.ДСтатус)>=[Введите начальную дату]) AND ((ККАрхив_проб.Район) 
In "Адмиралтейский","Василеостровский","Выборгский","Калининский","Кировский",
"Красногвардейский","Красносельский","Московский","Невский","Петроградский",
"Приморский","Фрунзенский","Центральный")) AND ((ККАрхив_проб.Этажность)<>1) 
AND ((ККАрхив_проб.Этаж)<>1)  AND ((ККАрхив_проб.Стиль)<>"деревянный") 
AND ((ККАрхив_проб.Добавлено)=No)) 
AND  (   ((ККАрхив_проб.ОбщКолКом)=0) OR (((ККАрхив_проб.КолКомнат)=1) AND ((ККАрхив_проб.ОбщКолКом)>1)   )  )

  Ответить  
 
 автор: Анатолий (Киев)   (30.08.2007 в 09:46)   личное сообщение
 
 

А еще добавьте в начале инстукции объявление параметра и его типа. Так надежнее.
PARAMETERS [Введите начальную дату] DateTime;
INSERT INTO ...

  Ответить  
 
 автор: ReStart   (30.08.2007 в 14:54)   личное сообщение
 
 

Анатолий, попробовала добавить в начале инструкции объявление параметра, но программа ругается...Говорит, хочет либо "INSERT INTO, либо UPDATE" видеть в начале...
Я хочу использовать параметры в запросе на добавление. Может он только в запросе на выборку может использоваться? Или не в этом дело? А в чем тогда?

  Ответить  
 
 автор: ReStart   (30.08.2007 в 16:27)   личное сообщение
 
 

Все получилось!!! Дошло что называется! Параметр объявлен, скобки расставлены как надо!!! СПАСИБО, Анатолий и Глазастый Мышь!

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