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

Форум: MS ACCESS

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

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

 
 

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

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

тема: Чем плохо условие в запросе
 
 автор: час   (26.05.2009 в 10:15)   личное сообщение
 
 

Запрос на выборку из поля статус
там в поле цифры стоят
1,2,3,4,5

условие в запросе на поле
iif([Forms]![FRM_Свободные_права]![Статус]=5;5;<5)

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

WHERE (([Forms]![FRM_Свободные_права]![Статус]=5 And [Статус]=5) Or ([Forms]![FRM_Свободные_права]![Статус]<5 And [Статус]<5))

  Ответить  
 
 автор: час   (26.05.2009 в 10:47)   личное сообщение
 
 

Спасибо!!!
Помогло!!!

  Ответить  
 
 автор: час   (26.05.2009 в 10:47)   личное сообщение
 
 


SELECT dbo_vМЛ_ОбщаяТаблицаПрав.ПодвидПрав1, dbo_vМЛ_ОбщаяТаблицаПрав.ПодвидПрав2, dbo_vМЛ_ОбщаяТаблицаПрав.ПодвидПрав3, dbo_МЛ_Каналы.Наименование, dbo_ФИЛЬМ.Название, dbo_vМЛ_ОбщаяТаблицаПрав.Статус, dbo_vМЛ_ОбщаяТаблицаПрав.КодТерритории, [Forms]![FRM_Свободные_права]![Территория] AS КодТерр, dbo_vМЛ_ОбщаяТаблицаПрав.КодВидаПрав
FROM dbo_МЛ_Каналы INNER JOIN (dbo_vМЛ_ОбщаяТаблицаПрав INNER JOIN dbo_ФИЛЬМ ON dbo_vМЛ_ОбщаяТаблицаПрав.КодФильма = dbo_ФИЛЬМ.код_записи) ON dbo_МЛ_Каналы.Код = dbo_vМЛ_ОбщаяТаблицаПрав.КодКанала
WHERE (((dbo_vМЛ_ОбщаяТаблицаПрав.ПодвидПрав1) Like "*" & [Forms]![FRM_Свободные_права]![Эфир_Плат_Нет]) AND ((dbo_vМЛ_ОбщаяТаблицаПрав.Статус)=5) AND (([Forms]![FRM_Свободные_права]![Статус])=5) AND ((dbo_vМЛ_ОбщаяТаблицаПрав.КодВидаПрав)=[Forms]![FRM_Свободные_права]![Эфир] Or (dbo_vМЛ_ОбщаяТаблицаПрав.КодВидаПрав)=[Forms]![FRM_Свободные_права]![Кабель] Or (dbo_vМЛ_ОбщаяТаблицаПрав.КодВидаПрав)=[Forms]![FRM_Свободные_права]![Спутник]) AND ((dbo_ФИЛЬМ.Код_киностудии)=4 Or (dbo_ФИЛЬМ.Код_киностудии)=24) AND ((funOrderValidete([ПраваС],[ПраваПо]))=True)) OR (((dbo_vМЛ_ОбщаяТаблицаПрав.ПодвидПрав1) Like "*" & [Forms]![FRM_Свободные_права]![Эфир_Плат_Нет]) AND ((dbo_vМЛ_ОбщаяТаблицаПрав.Статус)<>5) AND (([Forms]![FRM_Свободные_права]![Статус])<>5) AND ((dbo_vМЛ_ОбщаяТаблицаПрав.КодВидаПрав)=[Forms]![FRM_Свободные_права]![Эфир] Or (dbo_vМЛ_ОбщаяТаблицаПрав.КодВидаПрав)=[Forms]![FRM_Свободные_права]![Кабель] Or (dbo_vМЛ_ОбщаяТаблицаПрав.КодВидаПрав)=[Forms]![FRM_Свободные_права]![Спутник]) AND ((dbo_ФИЛЬМ.Код_киностудии)=4 Or (dbo_ФИЛЬМ.Код_киностудии)=24) AND ((funOrderValidete([ПраваС],[ПраваПо]))=True)) OR (((dbo_vМЛ_ОбщаяТаблицаПрав.ПодвидПрав2) Like "*" & [Forms]![FRM_Свободные_права]![Кабель_Плат_Нет]) AND ((dbo_vМЛ_ОбщаяТаблицаПрав.Статус)=5) AND (([Forms]![FRM_Свободные_права]![Статус])=5) AND ((dbo_vМЛ_ОбщаяТаблицаПрав.КодВидаПрав)=[Forms]![FRM_Свободные_права]![Эфир] Or (dbo_vМЛ_ОбщаяТаблицаПрав.КодВидаПрав)=[Forms]![FRM_Свободные_права]![Кабель] Or (dbo_vМЛ_ОбщаяТаблицаПрав.КодВидаПрав)=[Forms]![FRM_Свободные_права]![Спутник]) AND ((dbo_ФИЛЬМ.Код_киностудии)=4 Or (dbo_ФИЛЬМ.Код_киностудии)=24) AND ((funOrderValidete([ПраваС],[ПраваПо]))=True)) OR (((dbo_vМЛ_ОбщаяТаблицаПрав.ПодвидПрав2) Like "*" & [Forms]![FRM_Свободные_права]![Кабель_Плат_Нет]) AND ((dbo_vМЛ_ОбщаяТаблицаПрав.Статус)<>5) AND (([Forms]![FRM_Свободные_права]![Статус])<>5) AND ((dbo_vМЛ_ОбщаяТаблицаПрав.КодВидаПрав)=[Forms]![FRM_Свободные_права]![Эфир] Or (dbo_vМЛ_ОбщаяТаблицаПрав.КодВидаПрав)=[Forms]![FRM_Свободные_права]![Кабель] Or (dbo_vМЛ_ОбщаяТаблицаПрав.КодВидаПрав)=[Forms]![FRM_Свободные_права]![Спутник]) AND ((dbo_ФИЛЬМ.Код_киностудии)=4 Or (dbo_ФИЛЬМ.Код_киностудии)=24) AND ((funOrderValidete([ПраваС],[ПраваПо]))=True)) OR (((dbo_vМЛ_ОбщаяТаблицаПрав.ПодвидПрав3) Like "*" & [Forms]![FRM_Свободные_права]![Спутник_Плат_Нет]) AND ((dbo_vМЛ_ОбщаяТаблицаПрав.Статус)=5) AND (([Forms]![FRM_Свободные_права]![Статус])=5) AND ((dbo_vМЛ_ОбщаяТаблицаПрав.КодВидаПрав)=[Forms]![FRM_Свободные_права]![Эфир] Or (dbo_vМЛ_ОбщаяТаблицаПрав.КодВидаПрав)=[Forms]![FRM_Свободные_права]![Кабель] Or (dbo_vМЛ_ОбщаяТаблицаПрав.КодВидаПрав)=[Forms]![FRM_Свободные_права]![Спутник]) AND ((dbo_ФИЛЬМ.Код_киностудии)=4 Or (dbo_ФИЛЬМ.Код_киностудии)=24) AND ((funOrderValidete([ПраваС],[ПраваПо]))=True)) OR (((dbo_vМЛ_ОбщаяТаблицаПрав.ПодвидПрав3) Like "*" & [Forms]![FRM_Свободные_права]![Спутник_Плат_Нет]) AND ((dbo_vМЛ_ОбщаяТаблицаПрав.Статус)<>5) AND (([Forms]![FRM_Свободные_права]![Статус])<>5) AND ((dbo_vМЛ_ОбщаяТаблицаПрав.КодВидаПрав)=[Forms]![FRM_Свободные_права]![Эфир] Or (dbo_vМЛ_ОбщаяТаблицаПрав.КодВидаПрав)=[Forms]![FRM_Свободные_права]![Кабель] Or (dbo_vМЛ_ОбщаяТаблицаПрав.КодВидаПрав)=[Forms]![FRM_Свободные_права]![Спутник]) AND ((dbo_ФИЛЬМ.Код_киностудии)=4 Or (dbo_ФИЛЬМ.Код_киностудии)=24) AND ((funOrderValidete([ПраваС],[ПраваПо]))=True))
WITH OWNERACCESS OPTION;

  Ответить  
 
 автор: Анатолий (Киев)   (26.05.2009 в 14:40)   личное сообщение
 
 

Это вы хвастаетесь или жалуетесь?

  Ответить  
 
 автор: Lukas   (26.05.2009 в 15:01)   личное сообщение
 
 


SELECT P.ПодвидПрав1, P.ПодвидПрав2, P.ПодвидПрав3, C.Наименование, F.Название, P.Статус, P.КодТерритории, 'Центр' AS КодТерр, P.КодВидаПрав
FROM dbo_МЛ_Каналы As C INNER JOIN (dbo_vМЛ_ОбщаяТаблицаПрав As P INNER JOIN dbo_ФИЛЬМ As F ON P.КодФильма = F.код_записи) ON C.Код = P.КодКанала
WHERE (((P.ПодвидПрав1) Like "*" & 'Нет') AND ((P.Статус)=5) AND ((3)=5) AND ((P.КодВидаПрав)=2 Or (P.КодВидаПрав)=10 Or (P.КодВидаПрав)=11) AND ((F.Код_киностудии)=4 Or (F.Код_киностудии)=24) AND ((funOrderValidete([ПраваС],[ПраваПо]))=True)) OR (((P.ПодвидПрав1) Like "*" & 'Нет') AND ((P.Статус)<>5) AND ((3)<>5) AND ((P.КодВидаПрав)=2 Or (P.КодВидаПрав)=10 Or (P.КодВидаПрав)=11) AND ((F.Код_кин
остудии)=4 Or (F.Код_киностудии)=24) AND ((funOrderValidete([ПраваС],[ПраваПо]))=True)) OR (((P.ПодвидПрав2) Like "*" & 'Нет') AND ((P.Статус)=5) AND ((3)=5) AND ((P.КодВидаПрав)=2 Or (P.КодВидаПрав)=10 Or (P.КодВидаПрав)=11) AND ((F.Код_киностудии)=4 Or (F.Код_киностудии)=24) AND ((funOrderValidete([ПраваС],[ПраваПо]))=True)) OR (((P.ПодвидПрав2) Like "*" & 'Нет') AND ((P.Статус)<>5) AND ((3)<>5) AND ((P.КодВидаПрав)=2 Or (P.КодВидаПрав)=10 Or (P.КодВидаПрав)=11) AND ((F.Код_киностудии)=4 Or (F.Код_киностудии)=24) AND ((funOrderValidete([ПраваС],[ПраваПо]))=True)) OR (((P.ПодвидПрав3) Like "*" & 'Да') AND ((P.Статус)=5) AND ((3)=5) AND ((P.КодВидаПрав)=2 Or (P.КодВидаПрав)=10 Or (P.КодВидаПрав)=11) AND ((F.Код_киностудии)=4 Or (F.Код_киностудии)=24) AND ((funOrderValidete([ПраваС],[ПраваПо]))=True)) OR (((P.ПодвидПрав3) Like "*" & 'Да') AND ((P.Статус)<>5) AND ((3)<>5) AND ((P.КодВидаПрав)=4 Or (P.КодВидаПрав)=10 Or (P.КодВидаПрав)=11) AND ((F.Код_киностудии)=4 Or (F.Код_киностудии)=24) AND ((funOrderValidete([ПраваС],[ПраваПо]))=True))
WITH OWNERACCESS OPTION;


А алиасы при работе с MS SQL-server допустимы?

Понятно, что синтаксис не рабочий. Я просто применил алиасы имен таблиц и заменил ссылки на значения полей формы условными значениями, дабы наглядней было.

  Ответить  
 
 автор: час   (26.05.2009 в 15:40)   личное сообщение
 
 

Спасибо!!!!

  Ответить  
 
 автор: Мюллер   (26.05.2009 в 16:07)   личное сообщение
 
 


А алиасы при работе с MS SQL-server допустимы?



Да без проблем


ALTER PROCEDURE spSmeta1
@IdObj int
AS

WITH Tab1 AS(
SELECT DISTINCT dbo.TblDol.IdDol, dbo.TblDol.IdZnach, dbo.TblZnachPokazat.Znach,
dbo.TblZnachPokazat.IDPok, dbo.TblDol.IdKlassDol, dbo.TblZnachPokazat.IdObj
FROM dbo.TblDol INNER JOIN
dbo.TblZnachPokazat ON dbo.TblDol.IdZnach = dbo.TblZnachPokazat.IdZnach INNER JOIN
dbo.TblDolObj ON dbo.TblZnachPokazat.IdObj = dbo.TblDolObj.IdObj
WHERE (dbo.TblZnachPokazat.IDPok = 1)AND dbo.TblZnachPokazat.IdObj = @IdObj)
SELECT IdDol,IdZnach,Znach, IDPok,IdKlassDol,IdObj,
ROW_NUMBER()OVER (order by IdObj) AS ROWNUMBER FROM
Tab1

RETURN



или вот


ALTER PROCEDURE spProssmOrganiz

@IdOrg int
AS
DECLARE @KodRay int
DECLARE @KodObl int

SELECT @KodRay = TblSOATO.KodRn
FROM TblSOATO INNER JOIN TblKlassOrgan
ON TblSOATO.IdSOATO = TblKlassOrgan.IdSOATO
WHERE TblKlassOrgan.IdKlassOrg = @IdOrg

SELECT @KodObl = TblSOATO.KodObl
FROM TblSOATO INNER JOIN TblKlassOrgan
ON TblSOATO.IdSOATO = TblKlassOrgan.IdSOATO
WHERE TblKlassOrgan.IdKlassOrg = @IdOrg


SELECT dbo.TblKlassOrgan.UNPOrg, dbo.TblKlassOrgan.NaimOrg, dbo.TblKlassOrgan.Ind, dbo.TblKlassOrgan.IdBank, dbo.TblKlassOrgan.RShet, dbo.TblKlassOrgan.Terr,
dbo.TblKlassOrgan.Ulica, dbo.TblKlassOrgan.DOMKV, dbo.TblKlassOrgan.TEFON, dbo.TblKlassOrgan.PRZAKAZ, dbo.TblKlassOrgan.PRPROEKT, dbo.TblKlassOrgan.PRPODRAD,
dbo.TblKlassOrganUprav.NaimOrganUprav, dbo.TblSOATO.Name,
(SELECT Name
FROM TblSOATO
WHERE (KodRn = @KodRay) AND (KodNasp = 0) AND KodObl = @KodObl ) AS NAIMRAY ,
(SELECT Name
FROM TblSOATO AS TblSOATO_2
WHERE (KodObl = @KodObl) AND (KodNasp = 0) AND (KodRn = 0)) AS NAIMOBL

FROM dbo.TblKlassOrgan INNER JOIN
dbo.TblSOATO ON dbo.TblKlassOrgan.IdSOATO = dbo.TblSOATO.IdSOATO INNER JOIN
dbo.TblKlassOrganUprav ON dbo.TblKlassOrgan.IdOrganUprav = dbo.TblKlassOrganUprav.IdOrganUprav
WHERE TblKlassOrgan.IdKlassOrg = @IdOrg

RETURN


  Ответить  
 
 автор: час   (26.05.2009 в 15:40)   личное сообщение
 
 

Видимо......
Видимо хвастаюсь,
хотя.....
просто и не знаю, -
зачем выложил......

  Ответить  
 
 автор: Мюллер   (26.05.2009 в 16:12)   личное сообщение
 
 

Lukas, а хто тебя учил кириллицей таблицы обзывать?
Чай не студент уже вроде

  Ответить  
 
 автор: АлексейAlex   (26.05.2009 в 16:35)   личное сообщение
 
 

работает же с кириллицей, вроде.

  Ответить  
 
 автор: Lukas   (26.05.2009 в 16:39)   личное сообщение
 
 

А хде ты там нашел место, где я обзывал таблицы кириллицей?
Ткни пальчиком, плиз.

  Ответить  
 
 автор: Мюллер   (26.05.2009 в 16:43)   личное сообщение
 
 


P.ПодвидПрав1


Сорри, не таблицы, а поля таблиц ( что в прочем не сильно отличается )

  Ответить  
 
 автор: Lukas   (26.05.2009 в 16:47)   личное сообщение
 
 

Это не ко мне, плиз. Я лишь применил алиасы к таблицам в запросе СА.

  Ответить  
 
 автор: Мюллер   (26.05.2009 в 16:57)   личное сообщение
 
 

Ну, что касается СА, то так вааще писать низяяя. Это ж скл сервер. Так и положить базу ничего не стоит


OR (((dbo_vМЛ_ОбщаяТаблицаПрав.ПодвидПрав1) Like "*" & [Forms]![FRM_Свободные_права]![Эфир_Плат_Нет])


Как думаете, что будет если в Forms]![FRM_Свободные_права]![Эфир_Плат_Нет] ввести что то вроде
да ( ну или что там должно быть в поле) DROP TABLE dbo_vМЛ_ОбщаяТаблицаПрав RETURN /*

Можно поиграться с кавычками, чтобы подобрать соответствие запросу.
Это называется SQL инъекция с экранированием хвоста запроса

  Ответить  
 
 автор: Lukas   (26.05.2009 в 17:02)   личное сообщение
 
 

А кто догадается (не видя запроса), что таблица называется "vМЛ_ОбщаяТаблицаПрав" ?
Предлагаешь параметры?

  Ответить  
 
 автор: Мюллер   (26.05.2009 в 17:20)   личное сообщение
 
 


А кто догадается (не видя запроса), что таблица называется "vМЛ_ОбщаяТаблицаПрав" ?



сначала вводится команда

exec sp_help /* и получаем список таблиц
а затем уже уничтожаем таблицу или все таблицы

передавать данные нужно только через параметры

  Ответить  
 
 автор: Lukas   (26.05.2009 в 17:29)   личное сообщение
 
 


а затем уже уничтожаем таблицу или все таблицы


Гестапо!

  Ответить  
 
 автор: Goblin   (26.05.2009 в 22:00)   личное сообщение
 
 

Во блин, вы даете. И все же, подскажите, чем худо обзывать таблицы кириллицей? На сеть давить будет или просто признак дурного тона???

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