webForumDet fria alternativet

Update "Null"

Databaser & SQLur Databashanterare & SQL

14 svar · 483 visningar · startad av SteveP

Medlem sedan mars 2003772 inlägg
Frågan#1

Jag har en tabell som ska uppdateras.
Alla fälten kan vara NULL i databasen. Men om man gör en update utan att fylla i nån av fälten så får jag

Microsoft OLE DB Provider for SQL Server error '80040e14' 

Line 1: Incorrect syntax near ','. 

SpPostListAction_Update '02/01/1902','mm222','10/10/2001',,'10/10/2003',67699

Som ni ser så är det 3:e sista Tomt.

Men det fältet får ju vara Null enligt databasen. Så varför klagar den och vad kan jag göra åt det?

Medlem sedan juni 200032 967 inlägg
#2

Bara för att fältet tar emot null betyder det inte att du får utelämna värde helt. Du får helt enkelt slänga med värdet Null i SQL-frågan.

Förresten, du vet att SQL-forumet passar alldeles ypperligt när man har SQL-problem? ;)

Medlem sedan mars 2003772 inlägg
#3

Ah ok.
Jo det är jag medveten om men jag trodde jag behövde nåt IF STATEMENT för detta :)

Hur skulle jag slänga med värdet Null i SQL frågan då ?
Lika bra att jag frågar på här, annars blir det en onödig dubbelpost. Denna posten flyttas väl till SQL forumet.

Medlem sedan juni 200032 967 inlägg
#4

SteveP skrev:

Denna posten flyttas väl till SQL forumet.

Jepp, den kommer flyttas. ;)

SpPostListAction_Update '02/01/1902','mm222','10/10/2001',[b]Null[/b],'10/10/2003',67699

Mvh

Medlem sedan mars 2003772 inlägg
#5

jo men jag måste väl ha nåt ifstatement så den fattar att den ska skriva in Null när request.form är tom?
Typ såhär

If Request.Form("Priority") = "" then VarPriority = "Null"

Fast detta kommer ju inte fungera nå bra på kolumner med datatypen "DATETIME" eftersom den kommer uppfatta "Null" som Varchar

Medlem sedan juni 200032 967 inlägg
#6

Jepp. Det är vid sådana tillfällen man förbannar Microsoft för att IIF() inte är implementerat i VBScript.

Medlem sedan juni 200032 967 inlägg
#7

Nej, den kommer inte uppfatta null som varchar. Null är null.

r: dvs, så länge som du skriver det som just null, utan apostrofer runt.

Medlem sedan mars 2003772 inlägg
#8

Så fick det bli.
Vissa klagade på "Null" och andra på Null så man fick variera lite beroende på datatyp... knasigt

If Request.Form("Priority") = "" then VarPriority = Null
Medlem sedan juni 200032 967 inlägg
#9

Det borde faktiskt vara "Null", eftersom null är en sträng ända fram tills SQL Server ska tolka värdet, då ska det inte ha några strängliteraler (apostrofer alltså) runt sig.

Medlem sedan mars 2003772 inlägg
#10

Skriver jag

If Request.Form("DoneDate") = "" then VarDoneDate = Null

Så resulterar det i

SpPostListAction_Update '02/01/1902','Test','01/01/2003',2,'',67699

Alltså det blir bara helt tomt som innan, eftersom Null är inget värde alls.

Men skriver jag

If Request.Form("DoneDate") = "" then VarDoneDate = "Null"

Så resulterar det i

SpPostListAction_Update '02/01/1902','Test','01/01/2003',2,'Null',67699

Bara för att enkelfnuttarna hamnar runt NULL
Då försöker den ju konvertera till VarChar.
Hur blir man av med enkelfnuttarna runt.

Jag måste ju ha enkelfnuttar runt i SQL queryn, för det är DATETIME

Medlem sedan juni 200032 967 inlägg
#11

Nej, du ska inte ha några enkelfnuttar. Bort med dem. Null är ett giltigt värde, och skall inte ha apostrofer runt sig. När det handlar om nullvärden spelar det ingen roll vad det är för datatyp på fältet.

Medlem sedan mars 2003772 inlägg
#12

Ja jag förstår det men hur får jag bort enkelfnuttarna.
Dom är ju där eftersom VarDoneDate är DATETIME och fyller man i ett datum så måste ju enkelfnuttarna finnas. Men skriver man inte i nåt så ska VarDoneDate = "Null"
Men då blir det ju 'Null' i queryn eftersom enkelfnuttarna ligger i Queryn som skickar med VarDoneDate

'" & VarDoneDate & "'

Så ligger den ju i Queryn.
Sätter jag den VarDoneDate = "Null" så kommer den ju ändå skriva ut 'Null' med enkelfnuttarna eftersom dom finns med i Queryn.

Medlem sedan juni 200032 967 inlägg
#13

Då får du slänga med apostroferna från if-satsen.

If Request.Form("DoneDate") = "" then VarDoneDate = "Null" Else varDoneDate = "'" & Request.Form("DoneDate") & "'"

... och ta bort de ur koden där du skapar SQL-frågan.

Medlem sedan mars 2003772 inlägg
#14

Ok tack!
Trist att man måste gå den vägen.

Medlem sedan dec. 200012 464 inlägg
#15

Flyttas från ASP

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