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? ;)
Databaser & SQLur Databashanterare & SQL
14 svar · 483 visningar · startad av SteveP
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?
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? ;)
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.
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
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
Jepp. Det är vid sådana tillfällen man förbannar Microsoft för att IIF() inte är implementerat i VBScript.
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.
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
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.
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
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.
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.
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.
Ok tack!
Trist att man måste gå den vägen.
Flyttas från ASP