webForumDet fria alternativet

Null-värden är inte tillåtna ....

ASP

21 svar · 937 visningar · startad av jimbo

Medlem sedan feb. 2003185 inlägg
Frågan#1

Hej!

Får ett plötsligt konstigt felmeddelande i min fiskedagbok nu när man ska skapa en fiskedagbok, ändrade iof ett fält där innan (user_id) för att få en annan sqlsats att funka på defaultsidan.

"[Microsoft][Drivrutin för ODBC Microsoft Access] Null-värden är inte tillåtna i index och primärnycklar."

Felet som den ref. till är:

SQL = "INSERT INTO users (user_name,user_email,user_password) VALUES('"& SQLReplace(Request.Form("brugernavn")) &"','"& SQLReplace(Request.Form("email")) &"','"& SQLReplace(Request.Form("password")) &"')"
COnn.ExeCute(SQL)

Någon som kan ge mig en förklaring?
Att det har med databasen att göra så mycket hajar jag ;)
Tack på förhand

Mvh Jimmy

Medlem sedan dec. 19996 522 inlägg
#2

Är user_name primärnyckel, eller har du en annan räknare. Du försöker sätta in ett nullvärde i den kolumn som troligtvis är din pk. Är det user_name så är strängen tom, testa å skriva ut din sql-sträng innan du exekverar.

Response.Write(SQL)

Medlem sedan feb. 2003185 inlägg
#3

Kikade på de gamla nej user_id var räknaren. Fick ju ändra den till text för att få värdena på startsidan att bli rätt.
Men då ska väl inte detta påverkas eller, kan man inte sätta något annat som räknare då?

Medlem sedan juni 200032 967 inlägg
#4

Fick ju ändra den till text för att få värdena på startsidan att bli rätt.

Hmm. Varför ändrade du till text? Det finns ingen anledning att ha ID:n i textformat. Ändra tillbaka till räknare / autonumber.

Medlem sedan feb. 2003185 inlägg
#5

jo jag var ju tvungen att göra det för att denna satsen skulle funka på startsidan:

<%
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "DBQ=" & Server.Mappath("dagbog.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};"

Set objrs = Server.CreateObject("ADODB.RecordSet")
strQ = "SELECT TOP 3 users.user_Id, users.user_name, dagbog.overskrift, dagbog.dato FROM users INNER JOIN dagbog ON users.user_Id = dagbog.user_Id"
objrs.Open strQ, objConn, 1, 3

Do while not objrs.EOF or objrs.BOF
response.write("<A HREF='dagbog.asp?ejer=" & objRS("user_id") & "'>"& objRS("user_name") & " - " &"</A> " &objrs("overskrift") & " den " & objrs ("dato")&"<br>")
objrs.movenext
loop

objrs.Close
Set objrs = Nothing
objConn.Close
Set objConn = Nothing
%>

Grejen e att nu kan ja inte bara knalla i o ändra tillbaka det för då kommer detta meddelandet:
http://www.fiskeportalen.com/raknare.jpg

Medlem sedan juni 200032 967 inlägg
#6

Då ska du ju byta datatyp där det är felaktigt, inte där det är rätt!

User_id i usertabellen ska vara autonumber / räknare, och tal i dagbokstabellen.

Medlem sedan feb. 2003185 inlägg
#7

Att jag skulle byta det innan var en annan som sa till mig...
Ok ska testa det tackar så länge =) återkommer med besked.

Medlem sedan jan. 20013 582 inlägg
#8

Att jag skulle byta det innan var en annan som sa till mig...

Hoppas att det inte är mig du menar.... ;)

från inlägg: http://www.webforum.nu/showthread.php?s=&postid=1052325#post1052325

Att du får typblanningsfel beror på att du har olika fälttyper i databasen. Om du jämför de olika tabellerna i bilden du la upp så ser du att i User är User_id högerställt och i tabellen dagbog är bruger_Id vänsterställt. Troligtvis är fältypen "tal" i User och "text" i dagbog...

Ändra så du har samma exempelvis "tal"

det står inget om text....

Mvh
Henrik

Medlem sedan feb. 2003185 inlägg
#9

HEHE jo ;) nej de e lugnt ja e inte så haj på de men ja försöker lära mig allt efterhand, ska kika på era svar o testa lite
Tack så länge !

Medlem sedan jan. 20013 582 inlägg
#10

:h

Medlem sedan feb. 2003185 inlägg
#11

Då ska du ju byta datatyp där det är felaktigt, inte där det är rätt! User_id i usertabellen ska vara autonumber / räknare, och tal i dagbokstabellen.

Ok har fått till databasen igen men nu när jag har ändrat bruger_id till tal så blir det typbladningsfel när man ska klicka in sig på användarnas dagböcker...hmmm?

 strQ = "select * from dagbog where bruger_id = '"
 strQ = strQ & request("ejer") & "'"
objRS.Open strQ, objConn, , , adCmdText
Medlem sedan juni 200032 967 inlägg
#12

Du ska inte ha apostrofer runt värden om fältet är av taltyp.

Medlem sedan feb. 2003185 inlägg
#13

menar du ("ejer") eller i slutet av strängen, eller var ?

Medlem sedan juni 200032 967 inlägg
#14

Ja, det är väl det fältet som numera är av taltyp?

Medlem sedan feb. 2003185 inlägg
#15

jo precis men ska jag bara ha paranteserna kvar runt (ejer) eller utan dom, får inte de att funka...

Medlem sedan juni 200032 967 inlägg
#16

Parenteser? Det är bara apostroferna du ska ta bort i SQL-frågan eftersom fältet är av taltyp.

Medlem sedan feb. 2003185 inlägg
#17

("ejer") ska ju vara kvar eller hur? likaså det vid "select osv
så hmm visa mig anders, vilka paranteser ska väck , blir bara syntaxfel..

Medlem sedan juni 200032 967 inlägg
#18

Varför pratar du om parenteser?
Ta bort apostroferna runt värdet i SQL-frågan.

Medlem sedan feb. 2003185 inlägg
#19

nej ja menar ju apostroferna klart snurrig i bollen =)
E ja trög de e ja nog du menar apostroferna här:

strQ = "select * from dagbog where bruger_id = '"

Men de funkar inte

Medlem sedan juni 200032 967 inlägg
#20

Jag tror inte jag kan vara tydligare!

Ta bort apostroferna runt fältvärdet. De skall inte vara där, ty fältet bruger_id äro av taltyp.

269 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)