webForumDet fria alternativet

Funkar i access men inte i MS SQL

6 svar · 284 visningar · startad av Addeladde

AddeladdeMedlem sedan jan. 20013 406 inlägg
#1
sqlString = "Select p.projektID, p.projektStart, p.projektSlut, projektStandardPris, iif(len(p.projektNamn) > 35,Trim(left(p.projektNamn, 32))&'...',p.projektNamn) as projektNamn, iif(len(pk.projektKundForetag) > 35,Trim(left(pk.projektKundForetag, 32))&'...',pk.projektKundForetag) as projektKund " &_
  "From projekt as p, projektLankning as pl, projektKund as pk " &_
  "Where pl.projektID = p.projektID " &_
  "And pl.projektanvandareID = "& Session("projektanvandareID") &" " &_
  "And p.projektKundForetagID = pk.projektKundID " &_
  "Order By p.projektNamn"
  Set projektRS = Server.Createobject("Adodb.Recordset")
  projektRS.cursorlocation = 3 
  projektRS.open sqlString, con
@ndersMedlem sedan juni 200032 969 inlägg
#2

De gamla vanliga frågorna:

Vad funkar inte?
Felmeddelande?
Hur ser den färdiga SQL-frågan ut?

Läs gärna här

- - - - -

I SQL Server använder man inte IIF, utan CASE. Sök här i forumet för användningsexempel.

AddeladdeMedlem sedan jan. 20013 406 inlägg
#3

Sorry!

Select p.projektID, p.projektStart, p.projektSlut, projektStandardPris, iif(len(p.projektNamn) > 35,Trim(left(p.projektNamn, 32))&'...',p.projektNamn) as projektNamn, iif(len(pk.projektKundForetag) > 35,Trim(left(pk.projektKundForetag, 32))&'...',pk.projektKundForetag) as projektKund From projekt as p, projektLankning as pl, projektKund as pk Where pl.projektID = p.projektID And pl.projektanvandareID = 3 And p.projektKundForetagID = pk.projektKundID Order By p.projektNamn

Det är if satsen som ställer till det.

Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC SQL Server Driver][SQL Server]Line 1: Incorrect syntax near '>'.

@ndersMedlem sedan juni 200032 969 inlägg
#4

Du får gärna dela upp SQL-frågan på några rader också, så man får lite överblick.

@nders skrev:

I SQL Server använder man inte IIF, utan CASE. Sök här i forumet för användningsexempel.

AddeladdeMedlem sedan jan. 20013 406 inlägg
#5
Select p.projektID, p.projektStart, p.projektSlut, projektStandardPris, Case When len(p.projektNamn) > 35 then Ltrim(left(p.projektNamn, 32))&'...' else p.projektNamn end as projektNamn, Case When len(pk.projektKundForetag) > 35 Then Ltrim(left(pk.projektKundForetag, 32))&'...' else pk.projektKundForetag end as projektKund From projekt as p, projektLankning as pl, projektKund as pk Where pl.projektID = p.projektID And pl.projektanvandareID = 3 And p.projektKundForetagID = pk.projektKundID Order By p.projektNamn

Har jag förstått hur case fungerar?
Nu får jag:

Microsoft][ODBC SQL Server Driver][SQL Server]Invalid operator for data type. Operator equals boolean AND, type equals nvarchar.
/audionode/start.asp, line 46

@ndersMedlem sedan juni 200032 969 inlägg
#6

Konkatenera inte med &, utan med +.

Jag får också en känsla av att du inte läser allt jag skriver...

@nders skrev:

Du får gärna dela upp SQL-frågan på några rader också, så man får lite överblick.

AddeladdeMedlem sedan jan. 20013 406 inlägg
#7

Hej @nders

Nä lite snabb i blicken var jag nog :) är dock väldigt tacksam för all hjälp.
Nu verkar det fungera med den här frågan.

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