Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
answer99
0 / 0 / 1
Регистрация: 15.03.2012
Сообщений: 29
1

Хранимая процедура для формирования отчета

24.03.2012, 15:42. Просмотров 730. Ответов 8
Метки нет (Все метки)

добрый день.Люди добрые нужна помощь. имеется хранимая процедура
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CREATE PROCEDURE dbo.rep_Vozv_Im (
@datebegin datetime,
@dateend   datetime
)
AS
SET NOCOUNT ON;
 
SELECT      zalbil.NZB, Operzb.DateOp , sprvidzal.title as vidzal, kol, Operzb.SumOp, SprStatus.title AS Status
 FROM 
 Zalbil left JOIN SprVidZal ON Zalbil.VidZal = SprVidZal.kod
  left JOIN SprStatus ON Zalbil.status = SprStatus.kod 
  left JOIN clients ON Zalbil.KodCl = clients.kod
  left join operzb on Zalbil.NZB=Operzb.Nzb
where Zalbil.[status]=2 AND Operzb.KodOp=2 
AND Operzb.DateOp BETWEEN(@datebegin)and (@dateend)
в результате выводятся строки дата которых находится между параметрами
в программе использовать что то не получается выдает ошибку "incorect syntax near (знач первого параметра)"
использую вот такой код. подскажите где кроется ошибка и как ее устранить.?
C#
1
2
3
4
5
6
7
8
private void Vozv_Im_Load(object sender, EventArgs e)
        {  dtp_vozv dtp= this.Owner as dtp_vozv;
            DataSet dsrep = new dsforReport();
            SqlDataAdapter da = new SqlDataAdapter(@"dbo.rep_Vozv_Im(" + dtp.dtpBegin.Value.ToString("dd.MM.yyyy") +" ," + dtp.dtpEnd.Value.ToString("dd.mm.yyyy") + ")" ,  db.conn);
            da.Fill(dsrep.Tables["dtVozv_Im"]);
            crVozv_Im crVozv = new crVozv_Im();
            crVozv.SetDataSource(dsrep.Tables["dtVozv_Im"]);
            crystalReportViewer1.ReportSource = crVozv;
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.03.2012, 15:42
Ответы с готовыми решениями:

DataGridView и хранимая процедура - возвращает два отчета
Хранимая процедура SQL Server sp_helplogins возвращает две таблицы. Если связываю с DataGridView то...

Хранимая процедура
доброго времени суток! Не могли бы подсказать, как правильно вызывать хранимую процедуру в...

Хранимая процедура
Здравствуйте уважаемые Знатоки! Я прочитал статью об использовании хранимой процедуры Oracke и...

Хранимая процедура
Помогите пожалуйста разобраться, срочно нужно. Я написала хранимую процедуру в oracle. Эта...

DataGridView и хранимая процедура.
На форме есть 3 чекбокса. При нажатии кнопки должен отсылаться запрос в базу, вызывая при этом...

8
Learx
1046 / 853 / 194
Регистрация: 31.03.2010
Сообщений: 2,490
24.03.2012, 16:07 2
C#
1
 SqlDataAdapter da = new SqlDataAdapter(@"dbo.rep_Vozv_Im('" + dtp.dtpBegin.Value.ToString("dd.MM.yyyy") +"' ,'" + dtp.dtpEnd.Value.ToString("dd.mm.yyyy") + "')" ,  db.conn);
дату необходимо заключить в одинарные кавычки, а лучше использовать параметры:

C#
1
2
3
SqlDataAdapter da = new SqlDataAdapter(@"dbo.rep_Vozv_Im(@dtBegin, @dtEnd)" ,  db.conn);
da.SelectCommand.Parameters.Add("@dtBegin", SqlDbType.Data).Value = dtp.dtpBegin.Value;
da.SelectCommand.Parameters.Add("@dtEnd", SqlDbType.Data).Value = dtp.dtpEnd.Value
0
answer99
0 / 0 / 1
Регистрация: 15.03.2012
Сообщений: 29
24.03.2012, 16:24  [ТС] 3
Цитата Сообщение от answer99 Посмотреть сообщение
da.Fill(dsrep.Tables["dtVozv_Im"]);
Стопарится на этой строке Incorect syntax near 'dbo'
0
Learx
1046 / 853 / 194
Регистрация: 31.03.2010
Сообщений: 2,490
24.03.2012, 16:29 4
тогда лучше посмотрите пример здесь так как по памяти писал может чего ошибся немного.
1
answer99
0 / 0 / 1
Регистрация: 15.03.2012
Сообщений: 29
24.03.2012, 16:54  [ТС] 5
Если по примеру смотреть то я так понял sqldataadapter не получится использовать? а как же мне тогда данные занести в dataset
0
Learx
1046 / 853 / 194
Регистрация: 31.03.2010
Сообщений: 2,490
24.03.2012, 17:33 6
C#
1
2
3
4
DataTable dt = new DataTable();
dt.Load(reader);
DataSet ds = new DataSet();
ds.Tables.Add(dt, "MyTable");
или без риадера:

C#
1
2
3
SqlDataAdapter ad = new SqlDataAdapter();
ad.SelectCommand = command;
ad.Fill(...);
зы. прекрасно обхожусь без DataSet только с DataTable в большинстве случаев
0
answer99
0 / 0 / 1
Регистрация: 15.03.2012
Сообщений: 29
24.03.2012, 17:50  [ТС] 7
Пробую прямым запросом что тоже пока не получается.
C#
1
2
3
4
5
6
7
8
9
10
11
 SqlDataAdapter da = new SqlDataAdapter(@" SELECT  zalbil.NZB, Operzb.DateOp , sprvidzal.title as vidzal, kol, Operzb.SumOp, SprStatus.title AS Status
 FROM 
 Zalbil left JOIN SprVidZal ON Zalbil.VidZal = SprVidZal.kod
  left JOIN SprStatus ON Zalbil.status = SprStatus.kod 
  left JOIN clients ON Zalbil.KodCl = clients.kod
  left join operzb on Zalbil.NZB=Operzb.Nzb
where Zalbil.[status]=2 AND Operzb.KodOp=2 
 AND Operzb.DateOp between (" + dtp.dtpBegin.Value.ToString() + ") and (" + dtp.dtpEnd.Value.ToString() + ")", db.conn);
          
           
            da.Fill(dsrep.Tables["dtVozv_Im"]);
Ошибка incorect syntax near '.2012'
0
Learx
1046 / 853 / 194
Регистрация: 31.03.2010
Сообщений: 2,490
24.03.2012, 20:44 8
between не требует скобок

З.Ы. проверяйте сначала коррекность запроса в менеджере
0
answer99
0 / 0 / 1
Регистрация: 15.03.2012
Сообщений: 29
24.03.2012, 20:47  [ТС] 9
В менеджере нормально. да и разобрался уже. Спасибо за помощь вот такой вот код получился.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
private void Vozv_Im_Load(object sender, EventArgs e)
        {  dtp_vozv dtp= this.Owner as dtp_vozv;
            DataSet dsrep = new dsforReport();
    
 
            SqlDataAdapter da = new SqlDataAdapter();
            da.SelectCommand = new SqlCommand(@"rep_Vozv_Im", db.conn);
            da.SelectCommand.CommandType = CommandType.StoredProcedure;
            da.SelectCommand.Parameters.Add("@datebegin", SqlDbType.DateTime).Value = dtp.dtpBegin.Value;
            da.SelectCommand.Parameters.Add("@dateend", SqlDbType.DateTime).Value = dtp.dtpEnd.Value;
 
            da.Fill(dsrep.Tables["dtVozv_Im"]);
            crVozv_Im crVozv = new crVozv_Im();
            crVozv.SetDataSource(dsrep.Tables["dtVozv_Im"]);
            crystalReportViewer1.ReportSource = crVozv;
 
        
        }
зы. Вдруг кому пригодится
0
24.03.2012, 20:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.03.2012, 20:47

Хранимая процедура начисление
Подскажите пожалуйста как реализовать начисление зарплаты к примеру в sql. Есть три таблицы:...

SQL хранимая процедура
INSERT INTO Beka.dbo.Tabl3(Id, Imei) SELECT t1.Id, t1.Imei FROM Tabl1 AS t1 INNER JOIN Tabl2 AS...

Хранимая процедура с параметрами в C#
Здравствуйте. Есть хранимая процедура news USE GO /****** Object: StoredProcedure . Script...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru