Avatar billede rasmus13 Nybegynder
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
Avatar billede bearhugx Nybegynder
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
Avatar billede bearhugx Nybegynder
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 ?
Avatar billede bearhugx Nybegynder
07. april 2004 - 11:05 #3
hvad står der helt præcist på linie 29 ?
Avatar billede phineas_phreak Nybegynder
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
%>
Avatar billede bearhugx Nybegynder
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å...
Avatar billede phineas_phreak Nybegynder
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
Avatar billede bearhugx Nybegynder
07. april 2004 - 11:13 #7
ok
Avatar billede rasmus13 Nybegynder
07. april 2004 - 11:14 #8
bearhugx: i linie 29 står der:

  Set rs2 = Conn.Execute (SQLQuery)
Avatar billede rasmus13 Nybegynder
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.
Avatar billede bearhugx Nybegynder
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...
Avatar billede phineas_phreak Nybegynder
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")&"')")
Avatar billede thesurfer Nybegynder
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å?
Avatar billede rasmus13 Nybegynder
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')
Avatar billede bearhugx Nybegynder
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å
Avatar billede thesurfer Nybegynder
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.
Avatar billede rasmus13 Nybegynder
07. april 2004 - 11:46 #16
phineas_phreak: det virker fint med din, men hvorfor virker "min kode" ikke...
Avatar billede rasmus13 Nybegynder
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) & "','"

???
Avatar billede thesurfer Nybegynder
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") & "')"
Avatar billede rasmus13 Nybegynder
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)
Avatar billede thesurfer Nybegynder
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)
Avatar billede rasmus13 Nybegynder
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')
Avatar billede bearhugx Nybegynder
07. april 2004 - 11:59 #22
er der ikke et komma for meget i den sætning ... (lige efter billedet)
Avatar billede thesurfer Nybegynder
07. april 2004 - 12:01 #23
Nej, men der er et tomt felt..han har glemt at skrive noget i "a_left"..
Avatar billede rasmus13 Nybegynder
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!!
Avatar billede thesurfer Nybegynder
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..
Avatar billede rasmus13 Nybegynder
07. april 2004 - 12:13 #26
det felt i access der hedder required er sat til NO
Avatar billede phineas_phreak Nybegynder
07. april 2004 - 12:28 #27
er 1 tallet et autoID du prøver at overwrite ?


SQLQuery = SQLQuery & 1 & ",'"
Avatar billede phineas_phreak Nybegynder
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") & "')"
Avatar billede rasmus13 Nybegynder
07. april 2004 - 12:30 #29
Nej, det er ikke et autoID,
Avatar billede thesurfer Nybegynder
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..
Avatar billede thesurfer Nybegynder
07. april 2004 - 12:39 #31
rettelse:
  SQLQuery = SQLQuery & request.form("a_right") & "',"

.. fjernede det sidste ' tegn, da "sort" er et tal.. ik?
Avatar billede rasmus13 Nybegynder
07. april 2004 - 13:05 #32
Det virker fint nu, tak for det....

Drop lige et svar

Så er der point
Avatar billede thesurfer Nybegynder
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..
Avatar billede rasmus13 Nybegynder
07. april 2004 - 13:17 #34
selvfølgelig skal de det, jeg regner da også med at de dropper et svar her :O)
Avatar billede bearhugx Nybegynder
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 :-)
Avatar billede phineas_phreak Nybegynder
07. april 2004 - 13:42 #36
jamen så deltager jeg da også
Avatar billede rasmus13 Nybegynder
07. april 2004 - 13:44 #37
Tak for hjælpen....
Avatar billede thesurfer Nybegynder
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".. ;-)
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