Avatar billede thomashansen Nybegynder
13. maj 2006 - 18:21 Der er 43 kommentarer og
1 løsning

error '80040e2f' ved brug af UPDATE

Min kode nedenfor opdaterer min DB som forventet, men afslutter med følgende fejl:

Microsoft OLE DB Provider for ODBC Drivers error '80040e2f'
[Microsoft][ODBC Microsoft Access Driver] Index or primary key cannot contain a Null value.
/SpecialeLogbog/indtastlog02.asp, line 31

Linie 31 indeholder Apparat.UPDATE



<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>SpecialeLogbog Indtast i Apparat Tabel</title>
</head>

<%@LANGUAGE="VBSCRIPT"%>

<!--#include file="dbconnect.asp" -->

<%
Set Apparat = Server.CreateObject("ADODB.Recordset")
Apparat.Open "00Apparat", Conn, 2, 2
%>

<%
Apparat.AddNew
    Apparat("ID_Model") = Request.QueryString("ID_Model")
    Apparat("ApparatBetegnelse") = Request.QueryString("ApparatBetegnelse")
    Apparat("Serienr") = Request.QueryString("Serienr")
    Apparat("ApparatDokumentation") = Request.QueryString("ApparatDokumentation")
    Apparat("ID_Pilot") = Request.QueryString("ID_Pilot")
    Apparat("ID_Funktion") = Request.QueryString("ID_Funktion")
    Apparat("ID_MinMåleområde") = Request.QueryString("ID_MinMåleområde")
    Apparat("ID_MaxMåleområde") = Request.QueryString("ID_MaxMåleområde")
    Apparat("ID_DriftStatus") = Request.QueryString("ID_DriftStatus")
    Apparat("Bemærkning") = Request.QueryString("Bemærkning")
Apparat.UPDATE

Response.Redirect("indtastapparat01.asp")
%>

<body>

</body>

</html>
Avatar billede triggy Nybegynder
13. maj 2006 - 22:08 #1
hvilket felt er primary i databasen ?
Avatar billede thomashansen Nybegynder
13. maj 2006 - 22:13 #2
Du får lige koden igen:

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>SpecialeLogbog Indtast i Log Tabel</title>
</head>

<%@LANGUAGE="VBSCRIPT"%>

<!--#include file="dbconnect.asp" -->

<%
Set LogBog = Server.CreateObject("ADODB.Recordset")
LogBog.Open "26Log", Conn, 2, 2
%>

<%
LogBog.AddNew
    LogBog("ID_Apparat") = Request.QueryString("ID_Apparat")
    LogBog("ID_Person") = Request.QueryString("ID_Person")
    LogBog("Note") = Request.QueryString("Note")
    LogBog("Linearitet") = Request.QueryString("Linearitet")
    LogBog("Repeterbarhed") = Request.QueryString("Repeterbarhed")
    LogBog("Nøjagtighed") = Request.QueryString("Nøjagtighed")
    LogBog("ID_Fejl") = Request.QueryString("IID_Fejl")
    LogBog("ID_Reservedel") = Request.QueryString("ID_Reservedel")
    LogBog("ID_Forsyningsmedie") = Request.QueryString("ID_Forsyningsmedie")
    LogBog("ID_KalibreringsKomponent") = Request.QueryString("ID_KalibreringsKomponent")
    LogBog("ID_Afhjælpning") = Request.QueryString("ID_Afhjælpning")
    LogBog("Bemærkning") = Request.QueryString("Bemærkning")
LogBog.UPDATE

Response.Redirect("indtastlog02.asp")
%>

<body>

</body>

</html>
Avatar billede thomashansen Nybegynder
13. maj 2006 - 22:14 #3
Primary faktisk en sammensat nøgle af ID_Timestatmp + ID_Apparat

Du kan ikke se ID_Timestatmp i koden, da den opdateres automatisk via NOW()
Avatar billede triggy Nybegynder
13. maj 2006 - 22:15 #4
hvis du åbner databasen i designvisning i access, kan du se en nøgle ud for et felt. Hvilket felt er det ?
Avatar billede triggy Nybegynder
13. maj 2006 - 22:17 #5
Hvor bliver den genereret ?
Avatar billede thomashansen Nybegynder
13. maj 2006 - 22:17 #6
Så er det er ID_Apparat
Avatar billede triggy Nybegynder
13. maj 2006 - 22:20 #7
Genererer den NOW() i access ?
Avatar billede thomashansen Nybegynder
13. maj 2006 - 22:22 #8
Ja, jeg bruger now()som standardværdi
Avatar billede triggy Nybegynder
13. maj 2006 - 22:24 #9
hmm...  det har jeg godtnok aldrig prøvet før.
Hvad sker der, hvis du fjerner standard-værdien i access, og tilføjer den i asp ?

LogBog("ID_Timestamp") = Now
Avatar billede thomashansen Nybegynder
13. maj 2006 - 22:26 #10
Altså:
LogBog.AddNew
LogBog("ID_Timestamp") = Now
osv.

?
Avatar billede triggy Nybegynder
13. maj 2006 - 22:26 #11
jeps, og så fjerne standardværdien i access
Avatar billede thomashansen Nybegynder
13. maj 2006 - 22:27 #12
Prøver
Avatar billede thomashansen Nybegynder
13. maj 2006 - 22:32 #13
Den laver samme fejl, altså tabellen opdateres med tid samt mine indtastninger men det hele afsluttes med nævnte fejl
Avatar billede triggy Nybegynder
13. maj 2006 - 22:34 #14
dvs. den indsætter en post i databasen ?
Er der et tomt felt ?
Avatar billede thomashansen Nybegynder
13. maj 2006 - 22:36 #15
Ja, det er måske nemmere at prøve selv: http://www.hybenvang.dk/SpecialeLogbog/indtastlog01.asp
Avatar billede triggy Nybegynder
13. maj 2006 - 22:38 #16
hvilket felt er tomt ?
Avatar billede thomashansen Nybegynder
13. maj 2006 - 22:41 #17
Hvad mener du med et tomt felt.
Man kan sagtens få udfyldt alle felter ved indsætning
Tiden plaseres i ID_Timestamp
Avatar billede triggy Nybegynder
13. maj 2006 - 22:43 #18
Den brokker sig jo over, at der er et indexeret eller primary felt, der bliver tildelt null. altså ingenting.
Er der slet ikke noget felt i databasen der er tomt efter indtastning ?
Avatar billede thomashansen Nybegynder
13. maj 2006 - 22:45 #19
OK, jeg forstod ikke fejlmeddelelsen, jeg kigger lige i DB
Avatar billede thomashansen Nybegynder
13. maj 2006 - 22:51 #20
Der er ikke noget felt i den tilføjede linie der er tomt, men der er oprettet en extra linie uden indtastninger og ID_Apparat og ID_Person er obligatoriske så måske er det her det går galt. Der oprettes altså en extra linie ved indtastning
Avatar billede triggy Nybegynder
13. maj 2006 - 23:12 #21
et vildt gæt. men prøv lige at indsætte den her før Logbog.Addnew:

If Request.QueryString("ID_Apparat") <> "" then


og end if, efter Logbog.update
Avatar billede thomashansen Nybegynder
13. maj 2006 - 23:27 #22
Det virker som om scriptet aldrig afslutter
Avatar billede triggy Nybegynder
13. maj 2006 - 23:29 #23
Prøv lige at copy/paste koden som den ser ud nu
Avatar billede thomashansen Nybegynder
13. maj 2006 - 23:31 #24
Her er koden:

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>SpecialeLogbog Indtast i Log Tabel</title>
</head>

<%@LANGUAGE="VBSCRIPT"%>

<!--#include file="dbconnect.asp" -->

<%
Set LogBog = Server.CreateObject("ADODB.Recordset")
LogBog.Open "26Log", Conn, 2, 2
%>

<%
If Request.QueryString("ID_Apparat") <> "" then
LogBog.AddNew
    LogBog("ID_Timestamp") = Now
    LogBog("ID_Apparat") = Request.QueryString("ID_Apparat")
    LogBog("ID_Person") = Request.QueryString("ID_Person")
    LogBog("Note") = Request.QueryString("Note")
    LogBog("Linearitet") = Request.QueryString("Linearitet")
    LogBog("Repeterbarhed") = Request.QueryString("Repeterbarhed")
    LogBog("Nøjagtighed") = Request.QueryString("Nøjagtighed")
    LogBog("ID_Fejl") = Request.QueryString("ID_Fejl")
    LogBog("ID_Reservedel") = Request.QueryString("ID_Reservedel")
    LogBog("ID_Forsyningsmedie") = Request.QueryString("ID_Forsyningsmedie")
    LogBog("ID_KalibreringsKomponent") = Request.QueryString("ID_KalibreringsKomponent")
    LogBog("ID_Afhjælpning") = Request.QueryString("ID_Afhjælpning")
    LogBog("Bemærkning") = Request.QueryString("Bemærkning")
LogBog.UPDATE
end if

Response.Redirect("indtastlog02.asp")
%>

<body>

</body>

</html>
Avatar billede triggy Nybegynder
13. maj 2006 - 23:36 #25
Det kan jeg ærlig talt ikke se, hvor den skulle fryse ved.

Nu bruger jeg normalt ikke selv den metode til at indsætte records på, jeg plejer altid at lave en sql-insert.

Så jeg tør ikke sige, om der er noget galt i selve metoden.
Avatar billede thomashansen Nybegynder
13. maj 2006 - 23:40 #26
Hvordan ville det se ud med INSERT ?
Avatar billede thomashansen Nybegynder
13. maj 2006 - 23:41 #27
Det mærkelige er jo, at den faktisk udfører indsættelsen
Avatar billede triggy Nybegynder
13. maj 2006 - 23:41 #28
Så skal jeg lige bruge koden fra din dbconnect.asp samt indholdstyper på alle felterne, om det er tal, tekst, dato/tid osv.
Avatar billede thomashansen Nybegynder
13. maj 2006 - 23:43 #29
DBCONNECT:

<head>
<meta http-equiv="Content-Language" content="da">
</head>

<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("/SpecialeLogbog/fpdb/logbog02_08052006_2123_N14.mdb")
Conn.Open DSN
%><p>SpecialeLogbog</p>
Avatar billede thomashansen Nybegynder
13. maj 2006 - 23:47 #30
FELTER:

ID_Timestamp
ID_Apparat
ID_Person
Note
Linearitet
Repeterbarhed
Nøjagtighed
ID_Fejl
ID_Reservedel
ID_Forsyningsmedie
ID_KalibreringsKomponent   
ID_Afhjælpning
Bemærkning
Avatar billede thomashansen Nybegynder
13. maj 2006 - 23:48 #31
Jeg vil godt give extra points
Avatar billede triggy Nybegynder
13. maj 2006 - 23:50 #32
så mangler jeg bare lige hvilken datatype felterne har, (tal, tekst, notat, dato/tid)
altså, hvordan de er oprettet i databasen
Avatar billede thomashansen Nybegynder
13. maj 2006 - 23:54 #33
ID_Timestamp dato/tid
ID_Apparat              tal
ID_Person                tal
Note                    tekst
Linearitet              tekst
Repeterbarhed            tekst
Nøjagtighed              tekst
ID_Fejl                  tal
ID_Reservedel            tal
ID_Forsyningsmedie      tal
ID_KalibreringsKomponent tal   
ID_Afhjælpning          tal
Bemærkning              tekst
Avatar billede triggy Nybegynder
14. maj 2006 - 00:05 #34
Først. Lav en backup af din nuværende fil, og erstat hele indholdet med dette:

<%@LANGUAGE="VBSCRIPT"%>
<!--#include file="dbconnect.asp" -->
<%
If Request.QueryString("ID_Apparat") <> "" then
SQL = "INSERT INTO 26Log (ID_Timestamp, ID_Apparat, ID_Person, Note, Linearitet,"
SQL = SQL & " Repeterbarhed, Nøjagtighed, ID_Fejl, ID_Reservedel, ID_Forsyningsmedie,"
SQL = SQL & " ID_KalibreringsKomponent, ID_Afhjælpning, Bemærkning) "
SQL = SQL & "VALUES (#" & Now & "#," & Request.QueryString("ID_Apparat") & ","
SQL = SQL & Request.QueryString("ID_Person") & ",'" & Request.QueryString("Note") & "','"
SQL = SQL & Request.QueryString("Linearitet") & "','" & Request.QueryString("Repeterbarhed") & "','"
SQL = SQL & Request.QueryString("Nøjagtighed") & "'," & Request.QueryString("ID_Fejl") & ","
SQL = SQL & Request.QueryString("ID_Reservedel") & "," & Request.QueryString("ID_Forsyningsmedie") & ","
SQL = SQL & Request.QueryString("ID_KalibreringsKomponent") & "," & Request.QueryString("ID_Afhjælpning") & ",'"
SQL = SQL & Request.QueryString("Bemærkning") & "')"

set Create = Server.CreateObject("ADODB.Command")
Create.ActiveConnection = DSN
Create.CommandText = SQL
Create.CommandType = 1
Create.CommandTimeout = 0
Create.Prepared = true
Create.Execute()

Response.Redirect("indtastlog02.asp")

end if
%>





---------
Se hvad den så siger...
Jeg er ikke helt sikker på hvordan den accepterer æøå i feltnavne. Generelt bør du undgå dette.
Men prøv at se om den kommer med en fejl efter det her
Avatar billede thomashansen Nybegynder
14. maj 2006 - 00:10 #35
Den laver fejl i linie 29:

SpecialeLogbog

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error in INSERT INTO statement.

/SpecialeLogbog/indtastlog02.asp, line 29
Avatar billede triggy Nybegynder
14. maj 2006 - 00:13 #36
hmmm... 

Sæt lige de to her ind inden set Create = Server.CreateObject("ADODB.Command")


Response.Write SQL
Response.End()

Og copy paste hvad den returnerer
Avatar billede thomashansen Nybegynder
14. maj 2006 - 00:16 #37
INSERT INTO 26Log (ID_Timestamp, ID_Apparat, ID_Person, Note, Linearitet, Repeterbarhed, Nøjagtighed, ID_Fejl, ID_Reservedel, ID_Forsyningsmedie, ID_KalibreringsKomponent, ID_Afhjælpning, Bemærkning) VALUES (#5/14/2006 12:14:01 AM#,5,3,'1','1','1','1',1,3,1,1,1,'1')
Avatar billede triggy Nybegynder
14. maj 2006 - 00:23 #38
aahhh...  :)

Note er et reserveret ord, og må ikke bruges...  omdøb note feltet i databasen til notat evt.

og husk at rette linien:
SQL = "INSERT INTO 26Log (ID_Timestamp, ID_Apparat, ID_Person, Note, Linearitet,"
til
SQL = "INSERT INTO 26Log (ID_Timestamp, ID_Apparat, ID_Person, Notat, Linearitet,"
Avatar billede thomashansen Nybegynder
14. maj 2006 - 00:33 #39
Sagen er BØF TAK Send et svar
Avatar billede triggy Nybegynder
14. maj 2006 - 00:38 #40
Værsgo' :)

Det kan være din originale kode virker også så...  hvis du ændrer note til notat...
Det kan du jo prøve dig frem til...

Men for din egen skyld, så undgå altid ÆØÅ i databaser og kodning generelt..
Det er bare min egen erfaring. Det kan give problemer..
Avatar billede thomashansen Nybegynder
14. maj 2006 - 00:42 #41
Tak
Avatar billede thomashansen Nybegynder
14. maj 2006 - 00:43 #42
Hov kan man forresten øge points ?
Avatar billede triggy Nybegynder
14. maj 2006 - 00:46 #43
Aner det ikke...
Det behøver du heller ikke, jeg skal ikke bruge dem til noget :)
Avatar billede thomashansen Nybegynder
14. maj 2006 - 00:47 #44
OK
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester