С Новым годом! Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
124 / 3 / 0
Регистрация: 29.07.2013
Сообщений: 249

Подставить значение combobox в переменную запроса sql

15.07.2014, 14:55. Показов 3394. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Уважаемые форумчане!

Создал хранимую процедуру в MS SQL server. Хочу подставлять ее для отчета.
Подскажите пожалуйста как в SQL запросе поставить значение combobox?

Запрос:
SQL
1
2
3
4
5
6
7
8
9
10
WITH cte AS (
SELECT F.FillingDate, F.FlightStart, F.FlightEnd, F.ID_FLIGHT, RP.StartTTSN, datediff(MINUTE, F.FlightStart, F.FlightEnd) + CASE WHEN F.FlightStart > F.FlightEnd THEN 24 * 60 ELSE 0 END AS diffight
,RP.StartTTSN*60 + SUM(datediff(MINUTE, F.FlightStart, F.FlightEnd) + CASE WHEN F.FlightStart > F.FlightEnd THEN 24 * 60 ELSE 0 END)OVER (ORDER BY F.FillingDate, F.FlightStart, F.FlightEnd, F.ID_FLIGHT) AS TTSN
FROM Flight F JOIN RPlane RP
ON F.ID_RPlane = RP.ID_RPlane
WHERE F.ID_RPlane = 1 AND F.FillingDate BETWEEN RP.StartDate AND GETDATE())
 
SELECT F.FillingDate, F.FlightStart, F.FlightEnd, CAST(diffight/ 60 AS VARCHAR(10)) + ':' + RIGHT('0' + CAST(diffight % 60 AS VARCHAR(2)), 2) AS FlightTime,
CAST(TTSN/ 60 AS VARCHAR(10)) + ':' + RIGHT('0' + CAST(TTSN % 60 AS VARCHAR(2)), 2) AS TotalTime
FROM cte AS F
В 6-ой строке надо чтобы так было:

WHERE F.ID_RPlane = combobox1.SelectedValue AND F.FillingDate BETWEEN combobox2.text AND combobox3.text
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.07.2014, 14:55
Ответы с готовыми решениями:

Подставить значение из combobox в sql-запрос
Добрый день. Не являясь знатоком C#, все же пробую написать простое приложение для добавления записей(строк) в SQL базу данных, так...

Передать значение Sql запроса в переменную
Нужно создать приложение для работы с базой данных, база в .mdf файле, подключена как источник данных. Имеется форма для входа в...

Получить возвращаемое значение запроса sql count в переменную
SELECT COUNT(*) FROM users WHERE user_login LIKE @login AND user_pass LIKE @pass Этот запрос возвращает обще количество совпадений и я...

9
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
15.07.2014, 15:05
Использовать параметры (и в хранимке и на клиенте)
0
124 / 3 / 0
Регистрация: 29.07.2013
Сообщений: 249
15.07.2014, 15:06  [ТС]
pincet, ну так не знаю как, на моем примере можете показать?

Хранимку загоняю в FlightTableAdapter. Подставляю значения comboBox-ов.

Code
1
2
 this.FlightTableAdapter.Fill(this.DataSet3.Flight, comboBox2.Text, comboBox3.Text, Convert.ToInt32(comboBox1.SelectedValue));
            this.reportViewer1.RefreshReport();
0
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
15.07.2014, 15:10
T-SQL
1
2
3
4
5
6
7
8
alter procedure SomeSP 
@value1 int,
@value2 datetime,
@value3 datetime
as
.....
 
where WHERE F.ID_RPlane = @value1 AND F.FillingDate BETWEEN @value2 AND @value3
Что в клиенте нарисовано уже?
0
124 / 3 / 0
Регистрация: 29.07.2013
Сообщений: 249
15.07.2014, 15:20  [ТС]
Цитата Сообщение от pincet Посмотреть сообщение
Что в клиенте нарисовано уже?
Да вот хотел этот записать запрос FlightTableAdapter, но не хочет его принимать, говорит: "Конструкция или оператор SQL OVER не поддерживается", хотя в SQL managment studio все нормально работает. Приходится записать этот запрос в хранимую процедуру, ну а как дальше к сожалению не знаю.

А что нужно записать вместо SomeSP?
0
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
15.07.2014, 15:30
Серверная часть

T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
ALTER PROCEDURE [dbo].[InnovaLog]
                @from date
                ,@to date
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;
 
    -- Insert statements for procedure here
    select id
            ,regtime
            ,computer
            ,username
            ,[application]
            ,obj
            ,[message]
            ,info
 from base_log 
 where 
 base_log.regtime between @from AND dateadd(ms,-10,dateadd(dd,1,convert(datetime,@to)))
END

а ReportViewer вроде умеет в качастве источника данных ХП
1
124 / 3 / 0
Регистрация: 29.07.2013
Сообщений: 249
15.07.2014, 16:34  [ТС]
Вот моя серверная часть:
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
USE [EPS]
GO
/****** Object:  StoredProcedure [dbo].[FlightTimeWithRunningTotal]    Script Date: 15.07.2014 16:29:23 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[FlightTimeWithRunningTotal]
@value1 INT,
@value2 datetime,
@value3 datetime
AS
 
    SET NOCOUNT ON;
WITH cte AS (SELECT F.FillingDate, F.FlightStart, F.FlightEnd, F.ID_FLIGHT, RP.StartTTSN, datediff(MINUTE, F.FlightStart, F.FlightEnd) 
                                          + CASE WHEN F.FlightStart > F.FlightEnd THEN 24 * 60 ELSE 0 END AS diffight, RP.StartTTSN * 60 + SUM(datediff(MINUTE, F.FlightStart, 
                                          F.FlightEnd) + CASE WHEN F.FlightStart > F.FlightEnd THEN 24 * 60 ELSE 0 END) OVER (ORDER BY F.FillingDate, F.FlightStart, 
                                          F.FlightEnd, F.ID_FLIGHT) AS TTSN
FROM   Flight F JOIN
                RPlane RP ON F.ID_RPlane = RP.ID_RPlane
WHERE F.ID_RPlane = @value1 AND F.FillingDate BETWEEN @value2 AND @value3)
    SELECT F.FillingDate, F.FlightStart, F.FlightEnd, CAST(diffight / 60 AS VARCHAR(10)) + ':' + RIGHT('0' + CAST(diffight % 60 AS VARCHAR(2)), 2) AS FlightTime, 
                    CAST(TTSN / 60 AS VARCHAR(10)) + ':' + RIGHT('0' + CAST(TTSN % 60 AS VARCHAR(2)), 2) AS TotalTime
    FROM   cte AS F
а вот код в приложении:
C#
1
2
 this.FlightTableAdapter.Fill(this.DataSet3.Flight, comboBox2.Text, comboBox3.Text, Convert.ToInt32(comboBox1.SelectedValue));
            this.reportViewer1.RefreshReport();
Что то не пойму, как мне завязать @value1, @value2, @value3 к comboBox1.SelectedValue, comboBox2.Text, comboBox3.Text?
0
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
15.07.2014, 16:39
Ну так укзазть для репорта источником данных хранимку и передать ему в параметры значения соответствующие
0
124 / 3 / 0
Регистрация: 29.07.2013
Сообщений: 249
15.07.2014, 17:38  [ТС]
Уважаемый pincet, пожалуйста просмотрите и поправьте где не так сделал.

В DataSet создал TableAdaptor и завязал на хранимую процедуру.



Сделал проверку данных:


Привязал к ReportViewer:


В коде подсунул три параметра в строке this.FlightTimeWithRunningTotalTableAdap ter.Fill(this.DataSet3.FlightTimeWithRun ningTotal, Convert.ToInt32(comboBox1.SelectedValue) , comboBox2.Text, comboBox3.Text);

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 private void FlightTimeReport_Load(object sender, EventArgs e)
        {
            // TODO: данная строка кода позволяет загрузить данные в таблицу "DataSet3.FlightTimeWithRunningTotal". При необходимости она может быть перемещена или удалена.
            this.FlightTimeWithRunningTotalTableAdapter.Fill(this.DataSet3.FlightTimeWithRunningTotal, Convert.ToInt32(comboBox1.SelectedValue), comboBox2.Text, comboBox3.Text);
 
            // TODO: данная строка кода позволяет загрузить данные в таблицу "ePSDataSet11.Flight". При необходимости она может быть перемещена или удалена.
            this.flightTableAdapter2.Fill(this.ePSDataSet11.Flight);
            // TODO: данная строка кода позволяет загрузить данные в таблицу "ePSDataSet10.Flight". При необходимости она может быть перемещена или удалена.
            this.flightTableAdapter1.Fill(this.ePSDataSet10.Flight);
            // TODO: данная строка кода позволяет загрузить данные в таблицу "ePSDataSet9.RPlane". При необходимости она может быть перемещена или удалена.
            this.rPlaneTableAdapter.Fill(this.ePSDataSet9.RPlane);
            // TODO: данная строка кода позволяет загрузить данные в таблицу "ePSDataSet11.Flight". При необходимости она может быть перемещена или удалена.
 
            this.reportViewer1.RefreshReport();
 
        }
И выдает такую ошибку.
Ошибка 1 Наиболее подходящий перегруженный метод для "ELECTRONIC_PLANNING_SYSTEM.DataSet3Tabl eAdapters.FlightTimeWithRunningTotalTabl eAdapter.Fill(ELECTRONIC_PLANNING_SYSTEM .DataSet3.FlightTimeWithRunningTotalData Table, int?, System.DateTime?, System.DateTime?)" имеет несколько недопустимых аргументов
0
124 / 3 / 0
Регистрация: 29.07.2013
Сообщений: 249
16.07.2014, 16:23  [ТС]
Ребята, может кто еще заметит ошибку?

Добавлено через 2 часа 50 минут
Всем спасибо, все было верно, просто Visual Studio заглючил.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.07.2014, 16:23
Помогаю со студенческими работами здесь

Как в целочисленную переменную вписать значение из SQL запроса
Скажите пожалуйста как в переменную типа int вписать значение полученное из SQL запроса. Поле UID из запроса имеет тип: счетчик. Я...

Как в оператор sql like подставить переменную C#?
В общем имеется примерно такой код SqlCommand command1 = new SqlCommand(@"select pass_id from passport where byear like...

Как подставить в подчиненную форму на форме результаты SQL запроса?
Здравствуйте! Есть форма а на ней создан объект "подчиненная форма". В зависимости от значений которые выбрал пользователь вверху формы...

Как вместо названия таблицы в sQL-запросе можно подставить переменную, данное название содержащую?
Проблема такая. Каким образом вместо названия таблицы в sQL-запросе можно подставить переменную, данное название содержащую. Заранее...

При выборе значения в ComboBox, в TextBox подставить соответствующее значение из таблицы
как сделать так, чтобы при выборе иного значения в ComboBox, в TextBox менялись соответствующим значениям из таблицы?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru