webForumDet fria alternativet

konvertera strängar i mssql

2 svar · 216 visningar · startad av JAreMANNEN

JAreMANNENMedlem sedan aug. 20002 272 inlägg
#1

Gör en utsökning mha en Lagrad Procedur, men jag får dessa felmesset hela tiden!!

Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting datetime from character string.
default.asp, line 116

Min SP ser ut som följande:

CREATE PROCEDURE sp_GetLunch
@datum nvarchar(50), [b]<-- Har provat datetime men det funkar inte[/b]
@matratt nvarchar(50),
@pris_topp nvarchar(5),
@pris_botten nvarchar(5),
@matratt_typid nvarchar(5),
@restaurang_typid nvarchar(5),
@restaurang_id nvarchar(5)

AS

DECLARE @WherePrinted int
DECLARE @SQLString nvarchar(4000)
DECLARE @SQLSelectFrom nvarchar(3000)
DECLARE @SQLWhereClause nvarchar(1000)

/*SET @datum = '2002-02-02 00:00:00'
SET @matratt = 'K'
SET @pris_topp = ''
SET @pris_botten = ''
SET @matratt_typid = '1'
SET @restaurang_typid = ''*/

SET @WherePrinted = 0
SET @SQLWhereClause = ''
SET @SQLSelectFrom = 'SELECT     Restaurang.RestaurangId, RestaurangMatratt.Tillbehor5, RestaurangMatratt.Tillbehor4, RestaurangMatratt.Tillbehor3, RestaurangMatratt.Tillbehor2, 
                      RestaurangMatratt.Tillbehor1, RestaurangMatratt.AvhamtningsPris, RestaurangMatratt.Pris, RestaurangMatratt.MatrattTypId, 
                      RestaurangMatratt.Matratt, RestaurangMatratt.Datum, Foretag.Namn, Foretag.ForetagsId, MatrattTyp.Namn AS [Maträtttyp namn], 
	      Restaurangtyp.Namn AS [Restaurangtyp namn], Restaurangtyp.RestaurangtypId, MatrattTyp.MatrattTypId
FROM         Restaurang INNER JOIN
                      RestaurangMatratt ON Restaurang.RestaurangId = RestaurangMatratt.RestaurangId INNER JOIN
                      RestaurangTyper ON Restaurang.RestaurangId = RestaurangTyper.RestaurangId INNER JOIN
                      Restaurangtyp ON RestaurangTyper.RestaurangtypId = Restaurangtyp.RestaurangtypId INNER JOIN
                      MatrattTyp ON RestaurangMatratt.MatrattTypId = MatrattTyp.MatrattTypId INNER JOIN
                      Foretag ON Restaurang.ForetagsId = Foretag.ForetagsId'

IF (@datum) IS NOT NULL AND (@datum) <> ''
BEGIN
	IF (@WherePrinted) = 0
	BEGIN
		SET @WherePrinted = 1
		SET @SQLWhereClause = @SQLWhereClause + ' WHERE '
	END
  ELSE
		SET @SQLWhereClause = @SQLWhereClause + ' AND '
	SET @SQLWhereClause = @SQLWhereClause + ' (RestaurangMatratt.Datum = CONVERT(DATETIME, '''+ @datum + ''', 102)) '
END

IF (@matratt) IS NOT NULL AND (@matratt) <> ''
BEGIN
	IF (@WherePrinted) = 0
	BEGIN
		SET @WherePrinted = 1
		SET @SQLWhereClause = @SQLWhereClause + ' WHERE '
	END
  ELSE
		SET @SQLWhereClause = @SQLWhereClause + ' AND '
	SET @SQLWhereClause = @SQLWhereClause + ' (RestaurangMatratt.Matratt LIKE '''+ @matratt+'%'')'
END

IF (@pris_topp) IS NOT NULL AND (@pris_botten) IS NOT NULL AND (@pris_topp) <> '' AND (@pris_botten) <> ''
BEGIN
	IF (@WherePrinted) = 0
	BEGIN
		SET @WherePrinted = 1
		SET @SQLWhereClause = @SQLWhereClause + ' WHERE '		
	END  
	ELSE
		SET @SQLWhereClause = @SQLWhereClause + ' AND '
  SET @SQLWhereClause = @SQLWhereClause + ' (RestaurangMatratt.Pris BETWEEN ' + @pris_botten + ' AND ' + @pris_topp + ')'
END

IF (@matratt_typid) IS NOT NULL AND (@matratt_typid) <> ''
BEGIN
	IF (@WherePrinted) = 0
	BEGIN
		SET @WherePrinted = 1
		SET @SQLWhereClause = @SQLWhereClause + ' WHERE '
	END
  ELSE
		SET @SQLWhereClause = @SQLWhereClause + ' AND '
	SET @SQLWhereClause = @SQLWhereClause + ' (RestaurangMatratt.MatrattTypId = ' + @matratt_typid + ')'
END

IF (@restaurang_typid) IS NOT NULL  AND (@restaurang_typid) <> ''
BEGIN
	IF (@WherePrinted) = 0
	BEGIN
		SET @WherePrinted = 1
		SET @SQLWhereClause = @SQLWhereClause + ' WHERE '
	END
	ELSE
		SET @SQLWhereClause = @SQLWhereClause + ' AND '	
	SET @SQLWhereClause = @SQLWhereClause + ' (Restaurangtyp.RestaurangtypId = ' + @restaurang_typid + ')'
END

IF (@restaurang_id) IS NOT NULL  AND (@restaurang_id) <> ''
BEGIN
	IF (@WherePrinted) = 0
	BEGIN
		SET @WherePrinted = 1
		SET @SQLWhereClause = @SQLWhereClause + ' WHERE '
	END
	ELSE
		SET @SQLWhereClause = @SQLWhereClause + ' AND '	
	SET @SQLWhereClause = @SQLWhereClause + ' (RestaurangMatratt.RestaurangId = ' + @restaurang_id + ')'
END

SET @SQLString = @SQLSelectFrom + ' ' + @SQLWhereClause

--PRINT @SQLString

EXEC sp_executesql @SQLString
GO

Hoppas jag an få lite HILFE här.. ;)

THX!

LarsGMedlem sedan dec. 200012 464 inlägg
#2
SET @SQLWhereClause = @SQLWhereClause + ' (RestaurangMatratt.Datum = '''+ @datum + ''') '

Det finns ingen anledning att konvertera datumet.

Hur ser datumsträngen som du skickar in ut?

JAreMANNENMedlem sedan aug. 20002 272 inlägg
#3

Verkar inte som om det är SP'n som strular ändå.....

Kommer tebax med mer info!

138 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)