Avatar billede babyshark Nybegynder
09. september 2001 - 18:03 Der er 18 kommentarer og
3 løsninger

Hvad betyder CInt??

Jeg har lavet en database hvor man ved tryk på køb bliver sendt tilbage til default for at skrive adresse Jeg har først lavet databasen med produktnumre kun med tal og vil gerne skifte dem ud med både bogstaver og tal, men så får jeg denne besked:
Microsoft VBScript runtime error \'800a000d\'

Type mismatch: \'CInt\'

/ludu/shop/eshop/Shopping/default.asp, line 316

Her er linjen der bliver omtalt. Der er altså noget galt hver gang jeg sætter et bogstav ind i produktnum.

iItemID = CInt(Request.QueryString(\"item\"))
Avatar billede Slettet bruger
09. september 2001 - 18:13 #1
Den konverterer Request.Querystring(\"item\") til et tal...og ikke en streng (tekst) som det er når du henter det der...
Avatar billede Slettet bruger
09. september 2001 - 18:14 #2
hovsa :) Og derfor kan du (logisk nok) ikke konveretere bogstaver til tal. Tag i stedet at lav iItemId i din database om til tekst, og så fjern CInt omkring querystringen...er du med? :)
Avatar billede babyshark Nybegynder
09. september 2001 - 18:19 #3
Det har jeg gjort...nu får jeg:
Vare Beskrivelse  Antal  Ændre antal varer  Pris  I alt
ADODB.Recordset error \'800a0bcd\'
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.

/ludu/shop/eshop/Shopping/default.asp, line 293


Avatar billede terry Ekspert
09. september 2001 - 18:34 #4
Cint attemps to convert an expression to an integer. The expression CAN be a string!

An ingere is a whole number between -32,768 and 32,767

If your item is greater than this then it cant convert.

Avatar billede babyshark Nybegynder
09. september 2001 - 18:36 #5
Jeg tror det har noget at gøre med at jeg skal konvertere til VB, men den mulighed har jeg ikke i Access. Mine produktnumre hedder RA10, så de er ikke for store
Avatar billede babyshark Nybegynder
09. september 2001 - 18:40 #6
skal man vælge tekst eller tal når man vil have en mixet enhed, dvs. AB110...den fatter det bare ikke...110 fatter den godt og jeg har valgt tekst
Avatar billede proaccess Nybegynder
09. september 2001 - 18:45 #7
Et felt som indeholder \"AB110\" SKAL være tekst !!!

CInt(\"AB110\")=0, da cInt læser fra venstre mod højre, og kun læser tal... derfor finder den intet tal.
Avatar billede terry Ekspert
09. september 2001 - 18:46 #8
If you use numbers 1234.... then you should use number sthe the database. If you use AB110 then you MUST use text. So iItemID = CInt(Request.QueryString(\"item\")) should not be be used.
Try
iItemID = Request.QueryString(\"item\")
Avatar billede proaccess Nybegynder
09. september 2001 - 18:47 #9
Du skal således ikke bruge cInt-funktionen, og du skal lave din tabel om til et tekstfelt, og alle referencer til dette felt skal nu bruge \"\'er omkring værdier !!!
Avatar billede Slettet bruger
09. september 2001 - 18:48 #10
var det ikke cirka det samme jeg sagde? :)
Avatar billede babyshark Nybegynder
09. september 2001 - 18:59 #11
Jeg har ændret det til tekstfelt og sat terrys linje ind i default, men jeg får stadig:
ADODB.Recordset error \'800a0bcd\'
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.

/ludu/shop/eshop/Shopping/default.asp, line 293
Avatar billede babyshark Nybegynder
09. september 2001 - 19:05 #12
Her er koden..hmm..ved sgu ikke helt hvad jeg skal gøre.
SQL = \"SELECT Name, Price, ImageURL FROM Items\"
   
rs.Open SQL, Conn
rs.MoveFirst


        Function GetItemParameters(iItemID)
        \'Open database
        Set Conn = Server.CreateObject(\"ADODB.Connection\")
        Set Rs = Server.CreateObject(\"ADODB.Recordset\")
        \'Modify and use this connection if your database is in your database directory
        \'Conn.Open \"Driver={Microsoft Access Driver (*.mdb)}; DBQ=D:\\your database directory\\items.mdb\"
        Conn.Open \"DBQ=\" & Server.Mappath(\"items.mdb\") & \";Driver={Microsoft Access Driver (*.mdb)};\"

SQL = \"SELECT* FROM Items WHERE ProductNum like \'%\" & iItemID & \"%\'\"
rs.Open SQL, Conn
rs.MoveFirst

Dim aParameters
aParameters = Array(rs(\"ImageURL\"), rs(\"Name\"), rs(\"Price\"))
\' Return array containing product info.
GetItemParameters = aParameters
End Function

%>
            <%
Dim dictCart \' as dictionary
Dim sAction \' as string
Dim iItemID \' as integer
Dim iItemCount \' as integer

If IsObject(Session(\"cart\")) Then
    Set dictCart = Session(\"cart\")
Else

    Set dictCart = Server.CreateObject(\"Scripting.Dictionary\")
End If

sAction = CStr(Request.QueryString(\"action\"))
iItemID = CInt(Request.QueryString(\"item\"))
iItemCount = CInt(Request.QueryString(\"count\"))
%>
Avatar billede Slettet bruger
09. september 2001 - 19:32 #13
Det er formegentlig fordi recorden ikke findes? BOF (Beginning of file) EOF(End of file)...den fejl forekommer normalt hvis der ikke findes en record...
Avatar billede babyshark Nybegynder
09. september 2001 - 19:35 #14
jeg ved ikke hvad du mener..der er en database...det er når jeg trykker \"køb\" og den så skal tilbage til default for at se indkøbskurven.
Her er den sætning der åbenbart går galt når der trykkes \"køb\"
<a href=\"default.asp?action=add&item=<% =rs(\"ProductNum\")%>%3C&count=1\">
Avatar billede babyshark Nybegynder
09. september 2001 - 20:13 #15
nåå..er der nogle der kender en shop man kan downloade og hvor det ikke er så forp.... indviklet?
Avatar billede terry Ekspert
09. september 2001 - 20:20 #16
babyshark> The original question was \"Hvad betyder Cint??\"
Your original problem was you were receiving an error \"Type mismatch: \'CInt\'\"

If you look in the Access database the field in more than likely a numeric field. If you eneter a value 110 you say it works but AB110 it doesnt. Make sure the field type in the database IS text and then remove Cint() in the ASP code.
Avatar billede Slettet bruger
09. september 2001 - 20:21 #17
www.asp.dk eller www.activeserverpages.dk er der et par :)
Avatar billede babyshark Nybegynder
09. september 2001 - 20:28 #18
Nu har jeg sat hele skidtet op som ham der oprindeligt lavede det havde gjort og det HAR virket...men det gør det ikke nu...jeg fatter nada...der er ikke ændret en bønne ved det oprindelige og nu virker skidtet ikke.. den siger stadig den fejl med BOF og EOF, lige meget om jeg fjerner alle CInt koder eller ej...
Avatar billede Slettet bruger
09. september 2001 - 20:37 #19
lyder meget mystisk :/ Prøv med et nyt system *G*
Avatar billede eagleeye Praktikant
10. september 2001 - 19:44 #20
babyshark> Jeg har ændret det til tekstfelt og sat terrys linje ind i default, men jeg får stadig>>

Har du så ændre database feltet tilbage til et tal?
Avatar billede terry Ekspert
11. september 2001 - 08:13 #21
babyshark>Looking at the code from your comment
09/09 2001 19:05:04  is it the line
iItemID = CInt(Request.QueryString(\"item\"))
which actually gives the problem. If so, then this has NOTHING to do with the actual database. This is as far as I can see a variable used in the program so it is obviously because your trying to convert a text field which contains invalid data, for example \"AB110\". If you want to use AB110 then you MUST remove the Cint. If the value of iItemID is to be written ti the database (cant see from your code that it does) then you MUST also change the database field type to text.

I suggest that you get the original version working again and then make the changes I suggest. Otherwise you cant be sure waht i sgiving the problem!
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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