Avatar billede ameq Nybegynder
27. september 2002 - 12:38 Der er 16 kommentarer og
2 løsninger

RecordCount er antal -1 Hvorfor?

strSQL = "select * from acceptedorders order by pizzaID, EksTID, EksMID"
            set acceptedorders = Conn.Execute(strSQL)

                        Response.Write("acceptedorders " & acceptedorders.EOF& "<br>")
                        Response.Write("acceptedorders Pizza ID " & acceptedorders("pizzaID") & "<br>")
                        Response.Write("acceptedorders " & acceptedorders.RecordCount & "<br>")

----------------------

acceptedorders False
acceptedorders Pizza ID 1
acceptedorders -1

hvorfor bliver den alt tid -1 ??
Avatar billede puppetmaster Nybegynder
27. september 2002 - 12:42 #1
Hmmm....fordi der ikke ER nogle records?
Avatar billede puppetmaster Nybegynder
27. september 2002 - 12:42 #2
Mener du at værdien som returneres er: -1
eller Antallet af records - 1???
Avatar billede horsmark Nybegynder
27. september 2002 - 12:44 #3
hvis du har ja/nej værdi i den respektive kollonneopsætning så er -1 = nej
Avatar billede horsmark Nybegynder
27. september 2002 - 12:46 #4
strSQL = "select Count(*) AS iAntal from acceptedorders"
set acceptedorders = Conn.Execute(strSQL)
response.write acceptedorders("iAntal")

Så vil den virke
Avatar billede puppetmaster Nybegynder
27. september 2002 - 12:48 #5
Vil klart også anbefale dig at følge horsmark's eksempel
Avatar billede Slettet bruger
27. september 2002 - 15:48 #6
Når RecordCount returnerer -1 skyldes det oftest at driveren ikke understøtter denne egenskab.

Derfor vil jeg også anbefale dig at bruge:
SELECT COUNT(feltnavn) AS antal
Avatar billede eagleeye Praktikant
27. september 2002 - 19:22 #7
Det skyldes ikke driveren ikke understytter det.. Det skyldes den måde recordset'et åbnes på:

strSQL = "select * from acceptedorders order by pizzaID, EksTID, EksMID"
set acceptedorders = Conn.Execute(strSQL)

Det skal åbnes med acceptedorders.Open sådan her og så behøves man ikke lave en Count(*) inden du hender fra databasen:

strSQL = "select * from acceptedorders order by pizzaID, EksTID, EksMID"
acceptedorders.Open strSQL, Conn, 3, 1

antalPoster = acceptedorders.RecordCount
Avatar billede ameq Nybegynder
28. september 2002 - 12:11 #8
Microsoft VBScript runtime error '800a01a8'

Object required: 'acceptedorders'

/adminindex.asp, line 202

hvorfor laver den, den fejl?
Avatar billede ameq Nybegynder
29. september 2002 - 08:29 #9
strSQL = "select * from acceptedorderscompare where (pizzaID = " & acceptedorders("pizzaID") & ")"' AND (EksTID = " & acceptedorders("EksTID") & ") AND (EksMID = " & acceptedorders("EksMID") & ")"
                    acceptedorderscompare.Open strSQL, Conn, 3, 1

Den her laver lidt af samme fejl som "start" problem
Response.Write(acceptedorderscompare.RecordCount & "<br>") <- der bliver ved man at værer -1 når jeg loop den
Avatar billede ameq Nybegynder
29. september 2002 - 08:40 #10
strSQL = "select * from acceptedorders"
            set acceptedorders = Conn.Execute(strSQL)
           
            If Not acceptedorders.EOF Then
               
                Do Until acceptedorders.EOF
                    strSQL = "insert into acceptedorderscompare (PizzaID, EksTID, EksMID, allprice) values('" & acceptedorders("PizzaID") & "','" & acceptedorders("EksTID") & "','" & acceptedorders("EksMID") & "','" & acceptedorders("allprice") & "')"
                    Conn.Execute(strSQL)

                    Set acceptedorderscompare = Server.CreateObject("ADODB.Recordset")                   
                    strSQL = "select * from acceptedorderscompare where (pizzaID = " & acceptedorders("pizzaID") & ") AND (EksTID = " & acceptedorders("EksTID") & ") AND (EksMID = " & acceptedorders("EksMID") & ")"
                    acceptedorderscompare.Open strSQL, Conn, 3, 1

    Response.Write(acceptedorderscompare.RecordCount & "<br>")                                   
                        If acceptedorderscompare.RecordCount = 1 Then
                                    Response.Write("indskriv<br>")
                        Else
                                    Response.Write("opdater<br>")
                        End If
                    acceptedorders.MoveNext
                Loop
            End If ' acceptedorderscompare.RecordCount = 1

Der er to fejl i det her scirpt
1)

                    Set acceptedorderscompare = Server.CreateObject("ADODB.Recordset")                   
                    strSQL = "select * from acceptedorderscompare where (pizzaID = " & acceptedorders("pizzaID") & ") AND (EksTID = " & acceptedorders("EksTID") & ") AND (EksMID = " & acceptedorders("EksMID") & ")"
                    acceptedorderscompare.Open strSQL, Conn, 3, 1

Hvis jeg har , eller ; i min RS så laver den en fejl
Microsoft OLE DB Provider for ODBC Drivers error '80040e21'

ODBC driver does not support the requested properties.

2)
Den bliver ved med kun at udskrive acceptedorderscompare.RecordCount som -1
Avatar billede ameq Nybegynder
29. september 2002 - 10:59 #11
jeg er gået over at at test count SQLen og den virker okey =)
men den laver den her fejl
Microsoft OLE DB Provider for ODBC Drivers error '80040e09'

[TCX][MyODBC]You have an error in your SQL syntax near '1,:) AND (EksMID = 0)' at line 1

/adminindex.asp, line 212

en del af min database ser sådan ud.

EksTID - EksMID
,1,: - 0

og min SQL ser sådan ud.

                    strSQL = "select Count(*) AS iAntal from acceptedorderscompare where (pizzaID = " & acceptedorders("PizzaID") & ") AND (EksTID = " & acceptedorders("EksTID") & ") AND (EksMID = " & acceptedorders("EksMID") & ")"
                    set acceptedorderscompare = Conn.Execute(strSQL)
                    response.write acceptedorderscompare("iAntal") & "<br>"

Og der er noget i mit RS "acceptedorders"

men hva er fejl. Jeg kører men en MySQL server!
Avatar billede eagleeye Praktikant
29. september 2002 - 13:54 #12
Du skal havde denne linie med i toppen, eller før linien med acceptedorders.Open, koden for at definere acceptedorders som et recordset

Set acceptedorders = Server.CreateObject("ADODB.Recordset")
Avatar billede eagleeye Praktikant
29. september 2002 - 14:23 #13
det havde du så med...

Hvilken database bruger ?
Avatar billede eagleeye Praktikant
29. september 2002 - 14:27 #14
Hvis pizzaID og EksTID og eksMID er defineret som Char/Text i databasen skal der i SQL sætningen ' omkring data som når du indsætter i tabellen:

strSQL = "select Count(*) AS iAntal from acceptedorderscompare where (pizzaID = '" & acceptedorders("PizzaID") & "') AND (EksTID = '" & acceptedorders("EksTID") & "') AND (EksMID = '" & acceptedorders("EksMID") & "')"
Avatar billede ameq Nybegynder
29. september 2002 - 22:21 #15
det vil jeg lige prøv
Avatar billede ameq Nybegynder
29. september 2002 - 22:31 #16
Set acceptedorders = Server.CreateObject("ADODB.Recordset") <- den line havet jeg sat ind =) men det virkede også til at starte med + jeg har et andet script hvor jeg bruger den men nej =) he he men det ser ud til at der bare skulle nolge ' på min SQL =) JUBII
Avatar billede ameq Nybegynder
30. september 2002 - 07:45 #17
det virker okey nice =) TAKKER
Avatar billede puppetmaster Nybegynder
01. oktober 2002 - 08:43 #18
Takker for point, selv om jeg ikke er berettiget til nogle.......! :(
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