webForumDet fria alternativet

Syntaxfel i Update/Insert

ASPur ASP

10 svar · 335 visningar · startad av Asa

Medlem sedan dec. 20011 860 inlägg
Frågan#1

Vill lägga till lite i databasen men alla fält är ej obligatoriska men det verkar som jag MÅSTE fylla i alla. Datatyperna är text på alla som heter lunch och tal på pris. Datum är datum/tid och rID är tal.
I databasen (ACCESS) har jag inte att man måste skriva nåt av dessa fält.

    Lunch1 = Request.Form("lunch1")
    Lunch2 = Request.Form("lunch2")
    Lunch3 = Request.Form("lunch3")
    Lunch4 = Request.Form("lunch4")
    Lunch5 = Request.Form("lunch5")
    Pris1  = Request.Form("pris1")
    Pris2  = Request.Form("pris2")
    Pris3  = Request.Form("pris3")
    Pris4  = Request.Form("pris4")
    Pris5  = Request.Form("pris5")
    Datum  = Request.QueryString("datum")
    rID    = ID

    Set LM=Conn.Execute("Select * From lunchmeny Where rID=" & ID & " And datum=#" & Datum & "#")
    If LM.EOF Then
      Conn.Execute("Insert Into lunchmeny(lunch1,lunch2,lunch3,lunch4,lunch5,pris1,pris2,pris3,pris4,pris5,datum,rID) Values('" & Lunch1 & "','" & Lunch2 & "','" & Lunch3 & "','" & Lunch4 & "','" & Lunch5 & "'," & Pris1 & "," & Pris2 & "," & Pris3 & "," & Pris4 & "," & Pris5 & ",#" & Datum & "#," & rID & ")")
    Else
      Conn.Execute("Update lunchmeny Set lunch1='" & Lunch1 & "',lunch2='" & Lunch2 & "',lunch3='" & Lunch3 & "',lunch4='" & Lunch4 & "',lunch5='" & Lunch5 & "',pris1=" & Pris1 & ",pris2=" & Pris2 & ",pris3=" & Pris3 & ",pris4=" & Pris4 & ",pris5=" & Pris5 & " Where lID=" & LM("lID"))
    ENd If 
    Response.Redirect "index.asp"
Medlem sedan sep. 20026 425 inlägg
#2

Din kod ser rätt ut. Är du säker på att du verkligen satt berörda fält till att de får tillåta nollvärden i posten i Access?

Medlem sedan juni 200032 969 inlägg
#3

Nej, du behöver inte ge alla fält ett värde, däremot måste alla fält i SQL-frågan ha ett värde. Du kan liksom inte utelämna talvärden ur SQL-frågan.

Skriv ut SQL-frågan så ser du hur felaktig den är. Om du ska låta talvärden vara "tomma" i databasen, så får du se till att antingen inte ha med fältet i INSERT, eller ge värdet NULL i UPDATE/INSERT.

Medlem sedan dec. 20011 860 inlägg
#4

Jag har nu kollat och Tillåt nollvärde är Ja på alla och Obligatorisk är Nej.

Medlem sedan dec. 20011 860 inlägg
#5

Hmm, okej! Men det har ju funkat bra annars. Har inte behövt sätta Null. Men det är ju sjukt att det blir samma fel om jag lämnar en tom när jag ska uppdatera.

Medlem sedan juni 200032 969 inlägg
#6

Nej, det är inte konstigt.

UPDATE tabell Set fält1 =, fält2= WHERE foo='bar'

Syntaxfel så det skriker om det. Har du ett likhetstecken så måste du ange ett värde. Är det textfält är det ju inga problem, eftersom du då anger ett värde ('' / tom sträng) även när ingen text har mottagits.

Medlem sedan dec. 20011 860 inlägg
#7

Åhh, vare så det var. Men då får jag väl ändra det.

Medlem sedan sep. 20026 425 inlägg
#8

En sak som man ALLTID ska göra, vilket @nders indirekt säger att man ska göra, är att sätta sina SQL-satser i variabler, exempelvix

SQL = "SELECT kolumn FROM tabell"

Om det blir ett felmeddelande så är det bara sen att skriva ut variabeln SQL med Response.Write. Då ser man problemet. Som det är just nu är din kod inte så enkel att felsöka, Asa. Dessutom ska man inte använda jokertecken * utan ange fälten man ska hämta i stället. ;)

Medlem sedan dec. 20011 860 inlägg
#9

Hehe, okej! Men jag brukar ändra om sql´n om det skulle vara så att jag vill skriva ut den å kolla den.

SKa komma ihåd det me jokertecknet. Blir det mycket snabbare om man bara skriver de fält man vill hämta?

Medlem sedan apr. 20003 174 inlägg
#10

Asa skrev:

Blir det mycket snabbare om man bara skriver de fält man vill hämta?

Hur mycket man tjänar beror helt på hur många kolumner man har.

Ponera att du har massor med kolumner men bara vill hämta från två,
då tjänar du en helt del på att enbart ange dessa två i din sql-sats.

Medlem sedan dec. 20011 860 inlägg
#11

Okej, men då äre inte mycket jag tjänar på detta. Men ska tänka på detta i framtiden.

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