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

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

15.07.2014, 14:55. Показов 3439. Ответов 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
1655 / 1154 / 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
1655 / 1154 / 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
1655 / 1154 / 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
1655 / 1154 / 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
Ответ Создать тему
Новые блоги и статьи
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru