Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Подзапросы в ASP net, нужна помощь.  [new]
sergey_sitnikov
Member

Откуда:
Сообщений: 27
ASP net. SQL server 2008, Visual Studio 2010 VB.
Есть необходимость вставить в запрос подзапрос, отфильтрованный по полям вебформы.
Представление не дает возможность вставить в WHERE переменные, которые использовались в основном запросе.
Подскажите, как можно решить эту проблему.
24 июл 12, 10:44    [12906770]     Ответить | Цитировать Сообщить модератору
 Re: Подзапросы в ASP net, нужна помощь.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
Ошибка в 17й строке, видимо.
24 июл 12, 11:02    [12906932]     Ответить | Цитировать Сообщить модератору
 Re: Подзапросы в ASP net, нужна помощь.  [new]
sergey_sitnikov
Member

Откуда:
Сообщений: 27
Сергей Алексеевич,
У меня в основном запросе используется переменная @C_o которая образована из значения поля вебформы.
В представлении после вставки @C_o фильтр при попытке сохранить представление выдается сообщение "Необходимо объявить скалярную переменную "@C_o"".
Вывод, представление не видит переменных, объявленных в основном запросе.
Вопрос, каким образом в представлении можно объявить переменные со значениями полей вебформы?
И второй вопрос, в ASP NET можно ли использовать глобальные переменные, что бы они были видны во всем проекте?
Если да, то как этим глобальным переменным присвоить значения полей вебформы?
Спасибо.
24 июл 12, 12:13    [12907563]     Ответить | Цитировать Сообщить модератору
 Re: Подзапросы в ASP net, нужна помощь.  [new]
sergey_sitnikov
Member

Откуда:
Сообщений: 27
А насчет 17й строки, пусть дети друг другу отвечают. Мы этим пользовались, когда еще был Fidonet.
24 июл 12, 12:18    [12907596]     Ответить | Цитировать Сообщить модератору
 Re: Подзапросы в ASP net, нужна помощь.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
sergey_sitnikov
У меня в основном запросе используется переменная @C_o которая образована из значения поля вебформы.
В представлении после вставки @C_o фильтр при попытке сохранить представление выдается сообщение "Необходимо объявить скалярную переменную "@C_o"".
Вывод, представление не видит переменных, объявленных в основном запросе.
Я ничего не понял, но попробую угадать. Что мешает написать
select * from [представление] where ... -- ваш фильтр с переменной @C_o

sergey_sitnikov
И второй вопрос, в ASP NET можно ли использовать глобальные переменные, что бы они были видны во всем проекте?
Если да, то как этим глобальным переменным присвоить значения полей вебформы?

По ASP.NET есть отдельный форум.
24 июл 12, 12:31    [12907694]     Ответить | Цитировать Сообщить модератору
 Re: Подзапросы в ASP net, нужна помощь.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
sergey_sitnikov
А насчет 17й строки, пусть дети друг другу отвечают. Мы этим пользовались, когда еще был Fidonet.
Ну да, ну да. И что, так же не помогало вытянуть код из спрашивающего?
24 июл 12, 12:32    [12907700]     Ответить | Цитировать Сообщить модератору
 Re: Подзапросы в ASP net, нужна помощь.  [new]
sergey_sitnikov
Member

Откуда:
Сообщений: 27
Спасибо за участие.
Вот код основного запроса.

SELECT { fn UCASE(Objects.Company) } + ', ' + 'Корпус ' + { fn UCASE(Korpusa.Korpus) } AS Korpus, { fn UCASE(Categiii_nomerov.Categoria)
} + ', ' + { fn UCASE(Razmeschenie.Prim) } AS Razm, Quote.Cod_objecta, Quote.Cod_korpusa, Quote.Cod_nomera, MIN(Quote.Date_b) AS Expr1, MAX(Quote.Date_e)
AS Expr2, CASE WHEN MIN(quote.Date_b) <= @aq01 AND MAX(Quote.Date_e) >= @aq01 THEN COUNT(Quote.Код) * Round(Cod_nomera, 0) END AS n01,
CASE WHEN MIN(quote.Date_b) <= @aq02 AND MAX(Quote.Date_e) >= @aq02 THEN COUNT(Quote.Код) * Round(Cod_nomera, 0) END AS n02,
CASE WHEN MIN(quote.Date_b) <= @aq03 AND MAX(Quote.Date_e) >= @aq03 THEN COUNT(Quote.Код) * Round(Cod_nomera, 0) END AS n03,
CASE WHEN MIN(quote.Date_b) <= @aq04 AND MAX(Quote.Date_e) >= @aq04 THEN COUNT(Quote.Код) * Round(Cod_nomera, 0) END AS n04,
CASE WHEN MIN(quote.Date_b) <= @aq05 AND MAX(Quote.Date_e) >= @aq05 THEN COUNT(Quote.Код) * Round(Cod_nomera, 0) END AS n05,
CASE WHEN MIN(quote.Date_b) <= @aq06 AND MAX(Quote.Date_e) >= @aq06 THEN COUNT(Quote.Код) * Round(Cod_nomera, 0) END AS n06,
CASE WHEN MIN(quote.Date_b) <= @aq07 AND MAX(Quote.Date_e) >= @aq07 THEN COUNT(Quote.Код) * Round(Cod_nomera, 0) END AS n07,
CASE WHEN MIN(quote.Date_b) <= @aq08 AND MAX(Quote.Date_e) >= @aq08 THEN COUNT(Quote.Код) * Round(Cod_nomera, 0) END AS n08,
CASE WHEN MIN(quote.Date_b) <= @aq09 AND MAX(Quote.Date_e) >= @aq09 THEN COUNT(Quote.Код) * Round(Cod_nomera, 0) END AS n09,
CASE WHEN MIN(quote.Date_b) <= @aq10 AND MAX(Quote.Date_e) >= @aq10 THEN COUNT(Quote.Код) * Round(Cod_nomera, 0) END AS n10,
CASE WHEN MIN(quote.Date_b) <= @aq11 AND MAX(Quote.Date_e) >= @aq11 THEN COUNT(Quote.Код) * Round(Cod_nomera, 0) END AS n11,
CASE WHEN MIN(quote.Date_b) <= @aq12 AND MAX(Quote.Date_e) >= @aq12 THEN COUNT(Quote.Код) * Round(Cod_nomera, 0) END AS n12,
CASE WHEN MIN(quote.Date_b) <= @aq13 AND MAX(Quote.Date_e) >= @aq13 THEN COUNT(Quote.Код) * Round(Cod_nomera, 0) END AS n13,
CASE WHEN MIN(quote.Date_b) <= @aq14 AND MAX(Quote.Date_e) >= @aq14 THEN COUNT(Quote.Код) * Round(Cod_nomera, 0) END AS n14,
CASE WHEN MIN(quote.Date_b) <= @aq15 AND MAX(Quote.Date_e) >= @aq15 THEN COUNT(Quote.Код) * Round(Cod_nomera, 0) END AS n15,
CASE WHEN MIN(quote.Date_b) <= @aq16 AND MAX(Quote.Date_e) >= @aq16 THEN COUNT(Quote.Код) * Round(Cod_nomera, 0) END AS n16,
CASE WHEN MIN(quote.Date_b) <= @aq17 AND MAX(Quote.Date_e) >= @aq17 THEN COUNT(Quote.Код) * Round(Cod_nomera, 0) END AS n17,
CASE WHEN MIN(quote.Date_b) <= @aq18 AND MAX(Quote.Date_e) >= @aq18 THEN COUNT(Quote.Код) * Round(Cod_nomera, 0) END AS n18,
CASE WHEN MIN(quote.Date_b) <= @aq19 AND MAX(Quote.Date_e) >= @aq19 THEN COUNT(Quote.Код) * Round(Cod_nomera, 0) END AS n19,
CASE WHEN MIN(quote.Date_b) <= @aq20 AND MAX(Quote.Date_e) >= @aq20 THEN COUNT(Quote.Код) * Round(Cod_nomera, 0) END AS n20,
CASE WHEN MIN(quote.Date_b) <= @aq21 AND MAX(Quote.Date_e) >= @aq21 THEN COUNT(Quote.Код) * Round(Cod_nomera, 0) END AS n21,
CASE WHEN MIN(quote.Date_b) <= @aq22 AND MAX(Quote.Date_e) >= @aq22 THEN COUNT(Quote.Код) * Round(Cod_nomera, 0) END AS n22,
CASE WHEN MIN(quote.Date_b) <= @aq23 AND MAX(Quote.Date_e) >= @aq23 THEN COUNT(Quote.Код) * Round(Cod_nomera, 0) END AS n23,
CASE WHEN MIN(quote.Date_b) <= @aq24 AND MAX(Quote.Date_e) >= @aq24 THEN COUNT(Quote.Код) * Round(Cod_nomera, 0) END AS n24,
CASE WHEN MIN(quote.Date_b) <= @aq25 AND MAX(Quote.Date_e) >= @aq25 THEN COUNT(Quote.Код) * Round(Cod_nomera, 0) END AS n25,
CASE WHEN MIN(quote.Date_b) <= @aq26 AND MAX(Quote.Date_e) >= @aq26 THEN COUNT(Quote.Код) * Round(Cod_nomera, 0) END AS n26,
CASE WHEN MIN(quote.Date_b) <= @aq27 AND MAX(Quote.Date_e) >= @aq27 THEN COUNT(Quote.Код) * Round(Cod_nomera, 0) END AS n27,
CASE WHEN MIN(quote.Date_b) <= @aq28 AND MAX(Quote.Date_e) >= @aq28 THEN COUNT(Quote.Код) * Round(Cod_nomera, 0) END AS n28,
CASE WHEN MIN(quote.Date_b) <= @aq29 AND MAX(Quote.Date_e) >= @aq29 THEN COUNT(Quote.Код) * Round(Cod_nomera, 0) END AS n29,
CASE WHEN MIN(quote.Date_b) <= @aq30 AND MAX(Quote.Date_e) >= @aq30 THEN COUNT(Quote.Код) * Round(Cod_nomera, 0) END AS n30,
CASE WHEN MIN(quote.Date_b) <= @aq31 AND MAX(Quote.Date_e) >= @aq31 THEN COUNT(Quote.Код) * Round(Cod_nomera, 0) END AS n31, SUM(Kol_vo_br.Kol_b)
AS Expr3
FROM Quote INNER JOIN
Objects ON Quote.Cod_objecta = Objects.Cod_object INNER JOIN
Korpusa ON Quote.Cod_korpusa = Korpusa.Код INNER JOIN
Categiii_nomerov ON Quote.Cod_categoria = Categiii_nomerov.Код INNER JOIN
Razmeschenie ON Quote.Cod_nomera = Razmeschenie.Cod_r LEFT OUTER JOIN
Kol_vo_br ON Quote.Cod_objecta = Kol_vo_br.Cod_objecta AND Quote.Cod_korpusa = Kol_vo_br.Cod_korpusa AND
Quote.Cod_categoria = Kol_vo_br.Cod_categorii AND Quote.Cod_nomera = Kol_vo_br.Cod_razmeschenia
WHERE (Quote.Date_b <= @aq01) AND (Quote.Date_e >= @aq31) AND (Quote.Schet = 0) OR
(Quote.Date_b >= @aq01) AND (Quote.Date_e <= @aq31) OR
(Quote.Date_b >= @aq01) AND (Quote.Date_b <= @aq31) OR
(Quote.Date_e >= @aq01) AND (Quote.Date_e <= @aq31)
GROUP BY { fn UCASE(Objects.Company) } + ', ' + 'Корпус ' + { fn UCASE(Korpusa.Korpus) }, { fn UCASE(Categiii_nomerov.Categoria) } + ', ' + { fn UCASE(Razmeschenie.Prim) },
Quote.Cod_objecta, Quote.Cod_korpusa, Quote.Cod_nomera
HAVING (Quote.Cod_objecta = @C_o)
ORDER BY Quote.Cod_nomera, Quote.Cod_korpusa

Имя представления Kol_vo_br.

Покажите пожалуйста в каком месте прописать select * from [представление] where ... -- ваш фильтр с переменной @C_o
Спасибо.
24 июл 12, 12:53    [12907854]     Ответить | Цитировать Сообщить модератору
 Re: Подзапросы в ASP net, нужна помощь.  [new]
Glory
Member

Откуда:
Сообщений: 104760
sergey_sitnikov
Покажите пожалуйста в каком месте прописать select * from [представление] where ... -- ваш фильтр с переменной @C_o

В коде вашего приложения
24 июл 12, 12:55    [12907861]     Ответить | Цитировать Сообщить модератору
 Re: Подзапросы в ASP net, нужна помощь.  [new]
sergey_sitnikov
Member

Откуда:
Сообщений: 27
В коде приложения или представления?
24 июл 12, 13:02    [12907900]     Ответить | Цитировать Сообщить модератору
 Re: Подзапросы в ASP net, нужна помощь.  [new]
Glory
Member

Откуда:
Сообщений: 104760
sergey_sitnikov
В коде приложения или представления?

Вы плохо читаете по-русски ?
В коде вашего клиентского приложения. Приложения. Приложения.
24 июл 12, 13:04    [12907912]     Ответить | Цитировать Сообщить модератору
 Re: Подзапросы в ASP net, нужна помощь.  [new]
sergey_sitnikov
Member

Откуда:
Сообщений: 27
Проблемы с терминологией.
Я представил код основного запроса, который связан с представлением.
Мне нужно отфильтровать представление.
Если речь идет об этом коде, то пожалуйста в каком конкретно месте кода.
Если речь идет о каком то другом коде, то пожалуйста уточните.
24 июл 12, 13:15    [12907975]     Ответить | Цитировать Сообщить модератору
 Re: Подзапросы в ASP net, нужна помощь.  [new]
Glory
Member

Откуда:
Сообщений: 104760
sergey_sitnikov
Если речь идет о каком то другом коде, то пожалуйста уточните.

Попробую еще раз

В коде вашего клиентского приложения.
В коде вашего клиентского приложения.
В коде вашего клиентского приложения.
В коде вашего клиентского приложения.
Это означает код, созданный вами в каком то языке программирования и который будет запускаться на клиентской машине и обращаться к MSSQL c запросом
select * from Kol_vo_br where [здесь вам надо изучить параметризированные запросы в ASP net]
24 июл 12, 13:35    [12908096]     Ответить | Цитировать Сообщить модератору
 Re: Подзапросы в ASP net, нужна помощь.  [new]
sergey_sitnikov
Member

Откуда:
Сообщений: 27
Suur tanu teile, kallis Glory.
Nii kui tohib ma kirjutan detaalne minu problleemist eesti keeles?
Voi siiski vene?
Ma elan Moskvas juba 30 aastat
24 июл 12, 18:43    [12910366]     Ответить | Цитировать Сообщить модератору
 Re: Подзапросы в ASP net, нужна помощь.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
sergey_sitnikov
Suur tanu teile, kallis Glory.
Nii kui tohib ma kirjutan detaalne minu problleemist eesti keeles?
Voi siiski vene?
Ma elan Moskvas juba 30 aastat
Не выйдет. Официальный язык форума - русский. А за троллинг участников можно и бан схлопотать.
24 июл 12, 18:48    [12910379]     Ответить | Цитировать Сообщить модератору
 Re: Подзапросы в ASP net, нужна помощь.  [new]
sergey_sitnikov
Member

Откуда:
Сообщений: 27
Сергей Алексеевич, я прошу прощения, но как вы смогли заметить, уважаемый Glory из Эстонии проявляет явное неуважение к собеседнику.
Поскольку я тоже из Таллинна, только живу в Москве достаточно долго, учитывая странное изложение уважаемым Glory темы на русском языке предложил описать детали моей проблемы на эстонском языке.
И все же могу ли я подробно объяснить ситуацию, которую мне нобходимо решить?
24 июл 12, 19:29    [12910501]     Ответить | Цитировать Сообщить модератору
 Re: Подзапросы в ASP net, нужна помощь.  [new]
sergey_sitnikov
Member

Откуда:
Сообщений: 27
Проблема состоит не в написании запроса на SQL.
С SQL я знаком с конца 80-х годов, когда в Союзе появилась Open Access, одна из первых СУБД , которая использовала систему запросов на sql и синтаксис особо не изменился.
Я понимаю как функционирует представление в связке с основным запросом.
Но я не могу понять куда нужно прописать необходимое выражение запроса для моего представления select * from Kol_vo_br where Cod_objecta = @C_o... и так далее.
Господин Glory предлагает написать это в код клиентского приложения.
Если я правильно понимаю, то клиентское приложение это мои вебформы, из которых сейчас активна одна.
И называется она как водится Default.aspx.
При ней есть кодовая страница Default.aspx.vb и написана она соответственно на Visual Basic Net.
Для разработки страницы использован Visual Studio 2010.
На этой странице объявлены переменные, описаны действия при инициации полей, нажатии кнопок изменение текста в комвобоксах и т.д.
В вебформе Default.aspx присутствует DataList в который выводится результаты запроса, использующего переменные, значения которых генерируются кнопками и комбобоксами на странице.
Код запроса для DataList я привел выше.
И в этом запросе у меня есть связка таблицы Quote с представлением Kol_vo_br.
Если то, что написано на странице Default.aspx.vb и является кодом клиентского приложения, то прописать туда запрос с фильтрами для представления никоим образом не возможно.
Кроме этого, в вебприложении присутствуют Site.Master и Style/Site.css.
Для чего они нужны вам не объяснять.
По моему я достаточно подробно обрисовал ситуацию и если вам приходилось сталкиваться с этим напишите пожалуйста.
24 июл 12, 20:22    [12910637]     Ответить | Цитировать Сообщить модератору
 Re: Подзапросы в ASP net, нужна помощь.  [new]
invm
Member

Откуда: Москва
Сообщений: 9406
Вы написали много слов, но из них так и не понятно, что в вашем понимании означает
sergey_sitnikov
в каком месте прописать select * from [представление] where ... -- ваш фильтр с переменной @C_o

Что в итоге нужно получить от вашего запроса?
24 июл 12, 20:40    [12910694]     Ответить | Цитировать Сообщить модератору
 Re: Подзапросы в ASP net, нужна помощь.  [new]
sergey_sitnikov
Member

Откуда:
Сообщений: 27
invm,
Запрос отрабатывается нормально, в DataList выводятся данные, но мне нужно в подзапросе (представлении) отфильтровать данные, чтобы их использовать в вычислениях в полях основного запроса.
24 июл 12, 20:47    [12910708]     Ответить | Цитировать Сообщить модератору
 Re: Подзапросы в ASP net, нужна помощь.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
sergey_sitnikov
invm,
Запрос отрабатывается нормально, в DataList выводятся данные, но мне нужно в подзапросе (представлении) отфильтровать данные, чтобы их использовать в вычислениях в полях основного запроса.
Фильтруйте на здоровье. К представлению можно писать такие же запросы, как к обычной таблице.
24 июл 12, 20:50    [12910715]     Ответить | Цитировать Сообщить модератору
 Re: Подзапросы в ASP net, нужна помощь.  [new]
invm
Member

Откуда: Москва
Сообщений: 9406
sergey_sitnikov,

Опять ничего не понятно. Вам нужно в
Kol_vo_br ON Quote.Cod_objecta = Kol_vo_br.Cod_objecta AND Quote.Cod_korpusa = Kol_vo_br.Cod_korpusa AND Quote.Cod_categoria = Kol_vo_br.Cod_categorii AND Quote.Cod_nomera = Kol_vo_br.Cod_razmeschenia
отфильтровать данные из представления?
24 июл 12, 20:50    [12910717]     Ответить | Цитировать Сообщить модератору
 Re: Подзапросы в ASP net, нужна помощь.  [new]
sergey_sitnikov
Member

Откуда:
Сообщений: 27
"в каком месте прописать select * from [представление] where ... -- ваш фильтр с переменной @C_o"

По переписке видно, что мне в качестве решения проблемы предложили SQL выборку написать в коде клиентского приложения.
Вот я и пытаюсь выяснить где конкретно прописать.
Вот подробно и обрисовал ситуцию.
24 июл 12, 20:52    [12910720]     Ответить | Цитировать Сообщить модератору
 Re: Подзапросы в ASP net, нужна помощь.  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3264
Мда. Автор покажите как вы вызываете запрос из клиента.
Вообще тема для ASP.NET
24 июл 12, 20:52    [12910721]     Ответить | Цитировать Сообщить модератору
 Re: Подзапросы в ASP net, нужна помощь.  [new]
sergey_sitnikov
Member

Откуда:
Сообщений: 27
Точно так нужно тут отфильтровать
24 июл 12, 20:53    [12910726]     Ответить | Цитировать Сообщить модератору
 Re: Подзапросы в ASP net, нужна помощь.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
sergey_sitnikov
Имя представления Kol_vo_br.
Стой раз-два. Что вы вкладываете в понятие "представление"? Объект, который создается в MS SQL командой CREATE VIEW ... или что-то другое?
24 июл 12, 20:56    [12910732]     Ответить | Цитировать Сообщить модератору
 Re: Подзапросы в ASP net, нужна помощь.  [new]
invm
Member

Откуда: Москва
Сообщений: 9406
(select <Список необходимых полей> from Kol_vo_br where ...) k ON Quote.Cod_objecta = k.Cod_objecta AND Quote.Cod_korpusa = k.Cod_korpusa AND Quote.Cod_categoria = k.Cod_categorii AND Quote.Cod_nomera = k.Cod_razmeschenia
24 июл 12, 20:58    [12910735]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить