AsaMedlem sedan dec. 20011 934 inlägg
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"
m_soderlundMedlem sedan sep. 20024 733 inlägg
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?
@ndersMedlem sedan juni 200026 914 inlägg
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.
AsaMedlem sedan dec. 20011 934 inlägg
Jag har nu kollat och Tillåt nollvärde är Ja på alla och Obligatorisk är Nej.
AsaMedlem sedan dec. 20011 934 inlägg
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.
@ndersMedlem sedan juni 200026 914 inlägg
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.
AsaMedlem sedan dec. 20011 934 inlägg
Åhh, vare så det var. Men då får jag väl ändra det.
m_soderlundMedlem sedan sep. 20024 733 inlägg
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. ;)
AsaMedlem sedan dec. 20011 934 inlägg
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?
PalleMedlem sedan apr. 20002 716 inlägg
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.
AsaMedlem sedan dec. 20011 934 inlägg
Okej, men då äre inte mycket jag tjänar på detta. Men ska tänka på detta i framtiden.