Avatar billede kalle_mod Nybegynder
21. marts 2006 - 12:04 Der er 18 kommentarer og
1 løsning

error 13 - type mismatch

Hej alle xperter :)

Jeg har fået et problem, og jeg kan seriøst ikke selv se fejlen...

Set rs2 = conn.Execute("select * from other where subId=" & rs("id") & "")

denne linie(og andre magen til) giver fejl 13 - type mismatch subId er af typen tal(access database) det samme er id i den tabel som rs indeholder...

Håber nogen kan se hvad der er galt

Kalle
Avatar billede medions Nybegynder
21. marts 2006 - 12:05 #1
Set rs2 = conn.Execute("select * from other where subId='" & rs("id") & "'")

Prøv sådan...

//>Rune
Avatar billede medions Nybegynder
21. marts 2006 - 12:06 #2
Ahh okay.. prøv sådan:

Set rs2 = conn.Execute("select * from other where subId=" & CInt(rs("id")) & "")

//>Rune
Avatar billede kalp Novice
21. marts 2006 - 12:06 #3
og rs("id")
er ikke tom?
Avatar billede kalle_mod Nybegynder
21. marts 2006 - 13:43 #4
Beklager medions, har prøvet begge løsninger, den første (med ') gav en kriteriefejl(kunne jeg godt forudse :D) og den anden gav samme fejl som før...

Kalp> prøvede følgende kode:
MsgBox "Id'et er: " & rs("id")
Set rs2 = conn.Execute("select * from other where subId=" & rs("id") & "")

og fik en boks hvor der stod Id'et er: 18 - rs("id") er altså ikke tom
Avatar billede kalp Novice
21. marts 2006 - 14:08 #5
og 18 findes i kolonnen subId ?
Avatar billede sjh Nybegynder
21. marts 2006 - 14:29 #6
Prøv:
  1) Skriv tal xx som er i databasen..
    Set rs2 = conn.Execute("select * from other where subId=" & 18 & ";")

  2) Se hvad type det er med fx. (ved godt du skriver det er samme type, men prøv)
    MsgBox TypeName(rs("id"))

  3) vær sikker på at felt navn er skrævet på samme måde (stor og små bogstaver)
Avatar billede kalle_mod Nybegynder
21. marts 2006 - 14:35 #7
sjh> nummer 1 virker ikke(hvis jeg indsætter:
Set rs2 = conn.Execute("select * from other where subId=18")

nummer 2 returnerer typen field(databasefield) så ved ikke om det kan bruges...

nummer 3 er jeg sikker på er gjort korrekt

Kalle
Avatar billede sjh Nybegynder
21. marts 2006 - 14:39 #8
så er det nok (1) som har fejlen.. er du sikker på det er et stort I ?? det kunne være 'subid'
Avatar billede sjh Nybegynder
21. marts 2006 - 14:41 #9
og du er sikker på at din table hedder 'other' og indenholder felt navn subId ??
Avatar billede kalle_mod Nybegynder
21. marts 2006 - 21:48 #10
Jeg er ret sikker på at min database er som den skal være, jeg har i hvert fald været i stand til at indsætte oplysninger via asp, hvis nogen ønsker det kan koden og databasen godt sendes til gennemsyn, men vil godt advare på forhånd, det er nok ikke lige til at gennemskue koden lige med det samme :)

Kalle

ps. Kalp jep 18 findes i tabellen other i feltet subid(subId - stort og småt burde ikke have nogen betydning, har også prøvet begge dele)
Avatar billede sjh Nybegynder
21. marts 2006 - 22:16 #11
Hvorfor bruger du så ikke bare den sql-string / dns-string som du også bruger i din ASP-side.. så er der vel ikke nogle problemer??
Avatar billede kalle_mod Nybegynder
21. marts 2006 - 23:32 #12
den bliver brugt til at indsætte i tabellerne, og ellers er det sådanset det samme :( fatter seriøst ikke hvorfor den fejler...

Kalle
Avatar billede sjh Nybegynder
22. marts 2006 - 01:35 #13
Prøv den her så:


Private Sub Form_Load()
Dim objRs As Object
Dim objConn As Object
Dim strSQL As String
Dim strDNS As String

  Set objConn = CreateObject("ADODB.Connection")
  strDNS = "DRIVER={Microsoft Access Driver (*.mdb)}; "
  strDNS = strDNS & "DBQ=" & "C:\..\database.mdb"
  objConn.Open strDNS

  strSQL = "SELECT * FROM other WHERE subId = 18;"
  Set objRs = objConn.Execute(strSQL)

  Do While Not objRs.EOF
    MsgBox objRs("subId")
    objRs.MoveNext
  Loop

  objConn.Close
  Set objRs = Nothing
  Set objConn = Nothing
End Sub
Avatar billede kalle_mod Nybegynder
22. marts 2006 - 09:56 #14
Den virker helt fint, har prøvet at kopiere
strSQL = "SELECT * FROM other WHERE subId = 18;"
  Set objRs = objConn.Execute(strSQL)
over i mit projekt og så fejler den igen...(har erstattet objRs med rs2 og objConn med conn) det giver jo ikke rigtig mening :(

Kalle
Avatar billede sjh Nybegynder
22. marts 2006 - 13:52 #15
Ok men så må det være den måde du åbner din database på.. hvordan ser din DNS-string ud ?

ellers prøv med den DNS-string som jeg har lavet..

Du har vel også husket Dim på dine variabler..
Avatar billede sjh Nybegynder
22. marts 2006 - 13:56 #16
det kan også være fordi du ikke har lukket din database på den første Conn.. prøv at lukke den inden du åbner den anden gang..

du skal så lige huske at gemme dit rs("id") i en variabel..
Avatar billede kalle_mod Nybegynder
22. marts 2006 - 14:11 #17
Hmmm mente jeg havde skrevet herinde tidligere i dag, men må have glemt at trykke "send" inden jeg fik lukket vinduet :)

Anyway> sjh smid et svar, har fået det til at virke. Fejlen lå i en erklæring(dim rs2 as adodb.recordset) som gjorde at rs2 åbenbart ikke var helt korrekt(jeg opdagede dette da jeg læste hele koden igennem igen efter at have set dit eksempel virke). Jeg ændrede erklæringen til dim rs2 as object og så virkede det :)

Kalle - takker mange gange
Avatar billede sjh Nybegynder
22. marts 2006 - 14:48 #18
Ja det er en god ide at Dim'e alle variabler..

du kan altid setter 'Option Explicit' i toppen af kode-vinduet så får du altid avide at du har glemt DIM :D
Avatar billede kalle_mod Nybegynder
22. marts 2006 - 14:55 #19
jeg havde såmen dim'et, problemet var at den var dim'et som adodb.recordset og det virkede altså ikke, den skulle være object :)

anyway, kan du hjælpe mig med en lille ting mere? opretter gerne et spørgsmål med point til det hvis det er...
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