Jag skall spara en ny post i en SQL databas och försöker skapa ett kundid. Kundid är nyckelfält och kan alltså inte vara NULL. Jag försöker att skapa ett kundid utifrån maxvärdet på befintliga kundid men någonstans gör jag fel. Tacksam för hjälp Du måste lägga in kundid direkt i Insert-frågan. Annars kommer den kolumnen bli Null (vilket alltså inte är tillåtet) när insert-frågan körs. Hej Per Felet ligger nog i databasen. Jag försökte att lägga till en post manuellt men fick samma svar tydligen uppdaterar den inte kundidfältet automatiskt. Kunidfältet är av typen int och primärnyckel, i andra tabeller har jag samma typ av idfält men där fungerar det att lägga till en post och automatiskt räkna upp id-fältet. Verkar vara någon inställning i tabellen Hej, Ja det är rätt jag hittade felet, Identity var yes, jag ändrade till no så nu fungerar det. Men nu har jag istället nästa problem!!!!!! Jag får inte frmKundid att ändra till det nya kundid-värdet utan den skickar med värdet ny så posten blir inte sparad ändå troligen är det något fel i koden innan eller efter insertfrågan. Jag sätter denna tråd som löst och startar ev en ny med nästa frågeställning ska bara klura lite på det först. Ny SQL-insertfråga
Microsoft OLE DB Provider for SQL Server error '80040e2f'
Cannot insert the value NULL into column 'kundid', table 'albatross.albatross.mtblVardnuKund'; column does not allow nulls. INSERT fails.
/admin/kunder_uppdatera3.asp, line 72
<%
If Request("frmKundid") ="ny" then
lngKundID = 0
else
lngKundID = Clng(Request("frmkundid"))
end if
If lngKundid = 0 then
' Ny kund
' bygg INSERT-fråga för att spara kunddata
strSQL = "INSERT INTO mtblVardnuKund (Mottagning,Fornamn,Efternamn,Adress, "
strSQL = strSQL & " postnr,Ort,Tel,Tel2,Telefax,epost,Hemsida,Hemsidaja,Info) VALUES ("
strSQL = strSQL & "'" & Request("frmMottagning") & "',"
strSQL = strSQL & "'" & Request("frmFornamn") & "',"
strSQL = strSQL & "'" & Request("frmEfternamn") & "',"
strSQL = strSQL & "'" & Request("frmAdress") & "',"
strSQL = strSQL & "'" & Request("frmPostnr") & "',"
strSQL = strSQL & "'" & Request("frmOrt") & "',"
strSQL = strSQL & "'" & Request("frmTel") & "',"
strSQL = strSQL & "'" & Request("frmTel2") & "',"
strSQL = strSQL & "'" & Request("frmTelefax") & "',"
strSQL = strSQL & "'" & Request("frmEpost") & "',"
strSQL = strSQL & "'" & Request("frmHemsida") & "',"
strSQL = strSQL & "'" & Request("frmHemsidaja") & "',"
strSQL = strSQL & "'" & Request("frmInfo") & "')"
'kör frågan
objConn.Execute strSQL 'Line 72
' hämta kundid för ny kund
strSQL = "SELECT MAX(kundid) AS NyttID FROM mtblVardnuKund WHERE Mottagning = '"
strSQL = strSQL & Request("frmMottagning") & "'"
Set RecSet=objConn.Execute(strSQL)
If not RecSet.EOF then
lngKundid = RecSet("NyttID")
else
Response.Write "Ett fel har inträffat; kunde inte spara ny kund"
Response.End
end if
'Stäng och städa undan
RecSet.Close
Set RecSet=Nothing
%>
Sv: Ny SQL-insertfråga
Sv:Ny SQL-insertfråga
Jag tänkte nog att det var så, jag har försökt att få in det i insertfrågan men inte lyckats. Tacksam om du vill hjälpa mig med syntaxenSv:Ny SQL-insertfråga
Sv: Ny SQL-insertfråga
Om du vill att fältet skall räkna upp själv så måste du förutom att sätta det till int (t.ex.), dessutom aktivera flaggan för Identity och sätta värdena på seed och increment till lämpliga värden (t.ex. ett).
Att ett fält är en primärnyckel har inget med identity att göra, utan påverkar mer hur databasen kan optimera frågor och indexera data för snabbare sökning.
// JohanSv:Ny SQL-insertfråga
Tack för er hjälp