Hallo ik heb een stukje code die een stored procedure aanroept die kijkt een een huisje bezet is voor een bepaalde periode. Ik krijg als uitvoer 0 tabellen, terwijl ik zeker weet dat huisje 2325 een reservering heeft tussen 1995 en 2005.
Wat doe ik fout, wie kan me helpen?
Dit is de stored procedure sp_check_bezetting:
Dit is mijn C# code:
Wat doe ik fout, wie kan me helpen?
Dit is de stored procedure sp_check_bezetting:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
| CREATE PROC sp_check_bezetting
@beginperiode datetime OUTPUT,
@eindperiode datetime OUTPUT,
@huisid int,
@bezet int = NULL OUTPUT
AS
DECLARE @isbezet int
DECLARE @begindiffa int
DECLARE @begindiffb int
DECLARE @einddiffa int
DECLARE @einddiffb int
DECLARE @periodevan datetime
DECLARE @periodetot datetime
DECLARE @nrofvalues int
DECLARE @iterator int
SELECT @iterator = 0;
SELECT @nrofvalues = (SELECT COUNT(*) FROM bezetting WHERE huisid = @huisid)
DECLARE PeriodeCursor CURSOR FOR
SELECT periodevan, periodetot FROM bezetting WHERE huisid =@huisid
OPEN PeriodeCursor
FETCH NEXT FROM PeriodeCursor INTO @periodevan, @periodetot
PRINT @periodevan
PRINT @periodetot
WHILE @@FETCH_STATUS = 0
BEGIN
IF @isBezet = 1
BREAK
SELECT @begindiffa = DATEDIFF(d, @periodevan, @beginperiode )
SELECT @begindiffb = DATEDIFF(d, @periodetot, @beginperiode )
SELECT @einddiffa = DATEDIFF(d, @periodevan, @eindperiode )
SELECT @einddiffb = DATEDIFF(d, @periodetot, @eindperiode )
PRINT 'Periode bezet: ' + CONVERT(varchar(50), @periodevan) + ' tot ' + CONVERT(varchar(50), @periodetot)
PRINT 'Gevraagde periode: ' + CONVERT(varchar(50), @beginperiode) + ' tot ' + CONVERT(varchar(50), @eindperiode)
SELECT @isBezet = 0
IF @begindiffa >= 0 AND @begindiffb <= 0
BEGIN
PRINT 'Begindatum valt binnen reservering'
SELECT @isBezet = 1
SELECT @bezet = @isbezet
END
IF @einddiffa >= 0 AND @einddiffb <=0
BEGIN
PRINT 'Eind datum valt binnen reservering'
SELECT @isBezet = 1
SELECT @bezet = @isbezet
END
IF @begindiffa <= 0 AND @einddiffb <= 0 AND @einddiffa >= 0
BEGIN
PRINT 'Begin datum valt buiten reservering, maar einddatum valt binnen reservering'
SELECT @isBezet = 1
SELECT @bezet = @isbezet
END
IF @einddiffb >= 0 AND @begindiffa >= 0 AND @begindiffb <= 0
BEGIN
PRINT 'Begin datum valt binnen reservering, en de eind datum valt buiten de reservering'
SELECT @isBezet = 1
SELECT @bezet = @isbezet
END
IF @begindiffa < 0 AND @einddiffb > 0
BEGIN
PRINT 'Tussen de gevraagde data zit een reservering'
SELECT @isBezet = 1
SELECT @bezet = @isbezet
END
IF @isbezet = 0
BEGIN
PRINT 'Niet bezet in gevraagde periode'
SELECT @bezet = @isbezet
END
SELECT @iterator = @iterator + 1
FETCH NEXT FROM PeriodeCursor INTO @periodevan, @periodetot
END
CLOSE PeriodeCursor
DEALLOCATE PeriodeCursor
GO |
Dit is mijn C# code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| SqlDataAdapter adapter = new SqlDataAdapter("sp_check_bezetting",connection);
adapter.SelectCommand.CommandType = CommandType.StoredProcedure;
adapter.SelectCommand.CommandText="sp_check_bezetting";
DateTime vanaf=new DateTime(1995,01,01);
DateTime tot=new DateTime(2005,12,31);
int huisid=2325;
adapter.SelectCommand.Parameters.Add("@beginperiode", SqlDbType.DateTime).Value = vanaf;
adapter.SelectCommand.Parameters.Add("@eindperiode", SqlDbType.DateTime).Value = tot;
adapter.SelectCommand.Parameters.Add("@huisid", SqlDbType.Int).Value = huisid;
DataSet result = new DataSet();
adapter.Fill(result);
Response.Write(result.Tables.Count); |