07. april 2004 - 10:56
Der er
35 kommentarer og 3 løsninger
Oprette post i Access
Hej Jeg får en fejl, når jeg prøver at oprette en post i en Access databsen, som jeg ikke lige kan gennemskue. Her er koden jeg bruger til at oprette med: set Conn = Server.CreateObject("ADODB.Connection") Conn.open strConn SQLQuery = "insert into afdeling (ab_id,a_navn,a_tekst,a_billede,a_left,a_right,a_sort,a_korttekst) Values ('" SQLQuery = SQLQuery & 1 & "','" SQLQuery = SQLQuery & request.form("a_navn") & "','" SQLQuery = SQLQuery & request.form("a_tekst") & "','" SQLQuery = SQLQuery & request.form("a_billed") & "','" SQLQuery = SQLQuery & request.form("a_left") & "','" SQLQuery = SQLQuery & request.form("a_right") & "','" SQLQuery = SQLQuery & request.form("a_sort") & "','" SQLQuery = SQLQuery & request.form("a_kort_tekst") & "')" (linie 29) Set rs2 = Conn.Execute (SQLQuery) Her er fejlen jeg får: Error Type: Microsoft JET Database Engine (0x80040E07) Data type mismatch in criteria expression. /admin/opret_gruppe.asp, line 29 Håber at der er nogen der kan hjælpe mig. /rasmus
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
07. april 2004 - 11:00
#1
Hmmm... et forslag kunne være at du har nogle tekst-strene, som du bør have " " ( eller ' ') rundt om.... Jeg tror det er det, lige umiddelbart
07. april 2004 - 11:04
#2
næææ... ved lidt forstørrelse på skærmen kan jeg se, at du har husket plinger.... Sørger du for at der ikke kan forekomme ' i tekststrengene ?
07. april 2004 - 11:05
#3
hvad står der helt præcist på linie 29 ?
07. april 2004 - 11:06
#4
kan du ik gøre sådan her ? <% Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("dindatabase.mdb") Set rs = Server.CreateObject("ADODB.RecordSet") strSQL = "Select * From tabelnavn" rs.Open strSQL, Conn rs.AddNew rs("a_navn") = request.form("a_navn") rs("a_tekst") = request.form("a_tekst") rs("a_billede") = request.form("a_billed") rs("a_left") = request.form("a_left") rs("a_right") = request.form("a_right") rs("a_sort") = request.form("a_sort") rs("a_korttekst") = request.form("a_kort_tekst") rs.Update rs.Close Set rs = Nothing Conn.Close set Conn = Nothing %>
07. april 2004 - 11:07
#5
phineas_phreak >> hvis man kan det, så har jeg lært noget nyt ASP i dag.... det var dog en anderledes måde at lave det på...
07. april 2004 - 11:12
#6
det virker også kun med access, lige så snart du bruger MySQL eller andet bliver du nødt til at bruge insert into
07. april 2004 - 11:13
#7
ok
07. april 2004 - 11:14
#8
bearhugx: i linie 29 står der: Set rs2 = Conn.Execute (SQLQuery)
07. april 2004 - 11:15
#9
phineas_phreak: jo det kunne jeg nok godt, men jeg ville helst kun have en måde at jeg opdatere min databaser, den kode jeg bruger virker fint til SQL. men det kan jo være en sidste udvej at bruge din metode.
07. april 2004 - 11:17
#10
prøv lige - istedet for at execute din SQL sætning, så at outputte den i <pre> </pre> tags ... så kan du se, om det evt. er noget med SQL koden, der er galt...
07. april 2004 - 11:18
#11
ja det er altid en god måde. ellers prøv sådan her: conn.execute("insert into tabelnavn(a_navn,a_tekst,a_billede,a_left,a_right,a_sort,a_korttekst) values('"&Request.Form("a_navn")&"','"&Request.Form("a_tekst")&"','"&Request.Form("a_billede")&"','"&Request.Form("a_left")&"','"&Request.Form("a_right")&"','"&Request.Form("a_sort")&"','"&Request.Form("a_korttekst")&"')")
07. april 2004 - 11:30
#12
-- "Data type mismatch in criteria expression" betyder, at du har lavet en fejl, mht datatypen af et eller flere felter. F.eks., hvis feltet er af typen "tal" og du skriver et bogstav (som jo ikke er et tal). - Typen "tal": der må *ikke* være '' (plinger, apostoffer) uden om tallet! - Typen "tekst": der *skal* være '' uden om teksen! Prøv det her: SQLQuery = "insert into afdeling (ab_id,a_navn,a_tekst,a_billede,a_left,a_right,a_sort,a_korttekst) Values ('" SQLQuery = SQLQuery & 1 & "','" SQLQuery = SQLQuery & request.form("a_navn") & "','" SQLQuery = SQLQuery & request.form("a_tekst") & "','" SQLQuery = SQLQuery & request.form("a_billed") & "','" SQLQuery = SQLQuery & request.form("a_left") & "','" SQLQuery = SQLQuery & request.form("a_right") & "','" SQLQuery = SQLQuery & request.form("a_sort") & "','" SQLQuery = SQLQuery & request.form("a_kort_tekst") & "')" response.write SQLQuery response.end ' der afvikles ikke flere kode, efter denne linie Set rs2 = Conn.Execute (SQLQuery) -- Hvad skriver den så?
07. april 2004 - 11:43
#13
Her er outputtet: insert into afdeling (ab_id,a_navn,a_tekst,a_billede,a_left,a_right,a_sort,a_korttekst) Values ('1','test','test1','test2.jpg','1','1','10','test tets')
07. april 2004 - 11:45
#14
kunne godt tyde på at felterne a_right, a_left og a_sort skal være _UDEN_ plinger så
07. april 2004 - 11:45
#15
Som jeg skrev: - Typen "tal": der må *ikke* være '' (plinger, apostoffer) uden om tallet! Forkert: '1' '1' '1' '10' Fjern '' fra din SQLQuery ved de respektive felter.
07. april 2004 - 11:46
#16
phineas_phreak: det virker fint med din, men hvorfor virker "min kode" ikke...
07. april 2004 - 11:50
#17
thesurfer: Hvis jeg forstår dig rigtgi skal sætningen se sådan her ud: SQLQuery = SQLQuery & request.form(a_left) & "','" ???
07. april 2004 - 11:53
#18
Prøv med: SQLQuery = "insert into afdeling (ab_id,a_navn,a_tekst,a_billede,a_left,a_right,a_sort,a_korttekst) Values (" SQLQuery = SQLQuery & 1 & ",'" SQLQuery = SQLQuery & request.form("a_navn") & "','" SQLQuery = SQLQuery & request.form("a_tekst") & "','" SQLQuery = SQLQuery & request.form("a_billed") & "'," SQLQuery = SQLQuery & request.form("a_left") & "," SQLQuery = SQLQuery & request.form("a_right") & "," SQLQuery = SQLQuery & request.form("a_sort") & ",'" SQLQuery = SQLQuery & request.form("a_kort_tekst") & "')"
07. april 2004 - 11:56
#19
Microsoft JET Database Engine (0x80040E14) Syntax error in INSERT INTO statement. /admin/opret_gruppe.asp, line 28 i line 28 står der: Set rs2 = Conn.Execute (SQLQuery)
07. april 2004 - 11:56
#20
Prøv det her igen: response.write SQLQuery response.end ' der afvikles ikke flere kode, efter denne linie Set rs2 = Conn.Execute (SQLQuery)
07. april 2004 - 11:58
#21
insert into afdeling (ab_id,a_navn,a_tekst,a_billede,a_left,a_right,a_sort,a_korttekst) Values (1,'test13','test113','atd.jpg',,1,12,'sdfgsdfg sdf gsdg fs g')
07. april 2004 - 11:59
#22
er der ikke et komma for meget i den sætning ... (lige efter billedet)
07. april 2004 - 12:01
#23
Nej, men der er et tomt felt..han har glemt at skrive noget i "a_left"..
07. april 2004 - 12:03
#24
jeg har ikke glemt det, der skal bare ikke være noget i left, hvis der er i right!!
07. april 2004 - 12:07
#25
Så skal du indstille a_left og a_right til "tillad nullængde = sand/true".. det gør du i Access..
07. april 2004 - 12:13
#26
det felt i access der hedder required er sat til NO
07. april 2004 - 12:28
#27
er 1 tallet et autoID du prøver at overwrite ? SQLQuery = SQLQuery & 1 & ",'"
07. april 2004 - 12:29
#28
SQLQuery = "insert into afdeling (a_navn,a_tekst,a_billede,a_left,a_right,a_sort,a_korttekst) Values ('" SQLQuery = SQLQuery & "','" SQLQuery = SQLQuery & request.form("a_navn") & "','" SQLQuery = SQLQuery & request.form("a_tekst") & "','" SQLQuery = SQLQuery & request.form("a_billed") & "','" SQLQuery = SQLQuery & request.form("a_left") & "','" SQLQuery = SQLQuery & request.form("a_right") & "','" SQLQuery = SQLQuery & request.form("a_sort") & "','" SQLQuery = SQLQuery & request.form("a_kort_tekst") & "')"
07. april 2004 - 12:30
#29
Nej, det er ikke et autoID,
07. april 2004 - 12:38
#30
En lidt fusket løsning, er at lave a_left + a_right om til tekst, i stedet for tal.. Så kan du bruge: SQLQuery = SQLQuery & request.form("a_billed") & "','" SQLQuery = SQLQuery & request.form("a_left") & "','" SQLQuery = SQLQuery & request.form("a_right") & "','" uden at få fejl. Det skal lige siges, at hvis du vil regne med værdierne (dvs lægge til, trække fra, osv.) skal du brugt CInt(rs("a_left")) osv..
07. april 2004 - 12:39
#31
rettelse: SQLQuery = SQLQuery & request.form("a_right") & "'," .. fjernede det sidste ' tegn, da "sort" er et tal.. ik?
07. april 2004 - 13:05
#32
Det virker fint nu, tak for det.... Drop lige et svar Så er der point
07. april 2004 - 13:09
#33
OK :-) De andre skal vel også have points, for deres deltagelse.. :-) Vent til de har lagt et svar.. derefter markere du navnene i boksen til venstre, for at dele pointsne ligeligt.. ellers kan du også bruge "avanceret pointsfordeling"-linket (eller hvad den nu hedder..
07. april 2004 - 13:17
#34
selvfølgelig skal de det, jeg regner da også med at de dropper et svar her :O)
07. april 2004 - 13:38
#35
jeg lægger også et svar for min deltagelse - så kan du bedømme om nogle af pointsne skal tilfalde mig :-)
07. april 2004 - 13:42
#36
jamen så deltager jeg da også
07. april 2004 - 13:44
#37
Tak for hjælpen....
07. april 2004 - 15:49
#38
Takker for points :-) hmm.. 33,33 points + 33,33 points + 33,33 points = 99,99 points.. Admin har åbenbart fået 0,01 point i "drikkepoints".. ;-)
Kurser inden for grundlæggende programmering