У меня есть таблица данных со столбцом «Дата».
Я нашел функцию SQL, которая возвращает европейский номер недели для даты (способ подсчета номера недели отличается от способа США).
Я написал свой запрос в виде строки в своем приложении VB.NET: (я включил функцию)
Connexion.Open()
Dim Rq As String = "CREATE FUNCTION dbo.F_NUMERO_SEMAINE_ISO (@JOUR datetime)
RETURNS int
AS
BEGIN
DECLARE @NSI int;
SET @NSI = DATEPART(wk, @JOUR) + 1 - DATEPART(wk, CAST(DATEPART(yy, @JOUR) as CHAR(4)) + '0104');
-- cas particuliers : du 1 au 3 janvier, le jour peut appartenir à la dernière semaine de l'année précédente
IF @NSI = 0
SET @NSI = dbo.F_NUMERO_SEMAINE_ISO(CAST(DATEPART(yy,@JOUR)-1 AS CHAR(4)) + '12' + CAST(24 + DATEPART(DAY, @JOUR) AS CHAR(2))) + 1;
-- cas particuliers : du 29 au 31 décembre, le jour peut appartenir à la première semaine de l'année suivante
IF (DATEPART(mm, @JOUR) = 12) AND ( (DATEPART(dd, @JOUR) - DATEPART(dw, @JOUR) ) >= 28 )
SET @NSI = 1;
RETURN @NSI;
END
GO
SELECT COUNT(*) FROM dbo.DATA WHERE dbo.F_NUMERO_SEMAINE_ISO(Date) = 34
DROP function dbo.F_NUMERO_SEMAINE_ISO"
Dim Cmd As New SqlCommand(Rq, Connexion)
Try
Dim Reader As Integer = Cmd.ExecuteScalar()
MessageBox.Show("nb nouveau : " & Reader.ToString())
Catch ex As Exception
MsgBox(ex.Message)
Finally
Cmd.Dispose()
Connexion.Close()
End Try
У меня ошибка в строке cmd.executeScalar ()
"Синтаксическая ошибка для 'GO'" И "Синтаксическая ошибка для 'F_NUMERO_SEMAINE_ISO'"
Я не знаю, как я могу вызвать мою функцию SQL из моегокод vb.net, но я уверен, что делаю что-то не так.