Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Problem med att räkna rader i ett recordset

Postades av 2002-09-20 09:29:59 - Fredrik Henrysson, i forum asp - allmänt, Tråden har 9 Kommentarer och lästs av 501 personer

Jag vill kunna räkna antalet rader i mitt recordset
Jag har följande kod men då får jag alltid -1 som antal rader.

Tidigare loopade jag mig igenom varje recordset men då blir det väldigt segt (men det fungerade).

Om jag använder mig av en vanlig "count(*) As Antal" så fungerar det också men då kan jag inte läsa ut andra värden ur recordsetet, vilket jag vill göra.

Tacksam för tips

//Fredrik

<code>
'Antal plocklisterader
strquery2= "SELECT MQSLTP FROM MITALO20 WHERE MQTTYP = 31 AND MQRIDN = '" & rst("MDRIDN") & "' AND MQRIDI = " & rst("MDRIDI") & " AND MQPLSX = " & rst("MDPLSX")

Set rst2 = Server.CreateObject("ADODB.recordset")
rst2.Open strQuery2, conn

rader = 0
rader = rst2.Recordcount

lageromrade = rst2("MQSLTP")

rst2.Close
Set rst2 = nothing
</code>



Svara

Sv: Problem med att räkna rader i ett recordset

Postades av 2002-09-20 10:13:17 - Patrik Berggren

Du måste ställar cursorn så att den kan "vandra lite friare" i recordsetet.

Ändra denna rad:
<code>rst2.Open strQuery2, conn</code>

till:
<code>rst2.Open strQuery2, conn, 1, 3</code>

cya,
PatrikB


Svara

Sv: Problem med att räkna rader i ett recordset

Postades av 2002-09-20 10:13:57 - Anna-Karin Söderberg

Hej

Jag kan tänka mig att anledningen till att du får -1 är att du sätter
rader = 0 och sedan kör rader = rst2.Recordcount,
testa att ta bort rader=0 och se vilket svar du får.
Sen kan det ju vara så att om recordsetet är tomt så returneras inga rader.

Anna-Karin


Svara

Sv: Problem med att räkna rader i ett recordset

Postades av 2002-09-20 10:33:57 - Fredrik Henrysson

Nu ser koden ut så här men jag får fortfarande -1 på alla rader.

'Antal plocklisterader
strquery2= "SELECT MQSLTP FROM MITALO20 WHERE MQTTYP = 31 AND MQRIDN = '" & rst("MDRIDN") & "' AND MQRIDI = " & rst("MDRIDI") & " AND MQPLSX = " & rst("MDPLSX")

Set rst2 = Server.CreateObject("ADODB.recordset")
rst2.Open strQuery2, conn, 1, 3

rader = rst2.Recordcount

lageromrade = rst2("MQSLTP")

rst2.Close
Set rst2 = nothing

//Fredrik


Svara

Sv: Problem med att räkna rader i ett recordset

Postades av 2002-09-20 11:36:23 - Fredrik Henrysson

Jag hämtar recordsetet från en AS400 det kanske är det som stökar till det.

Jag testade ett RecordCount mot en Access databas och då fungerade det.

//Fredrik


Svara

Sv: Problem med att räkna rader i ett recordset

Postades av 2002-09-20 15:42:04 - Andreas Hillqvist

Du kan testa med client cursor innan du öppnar recordsetet. Varför har du behov av Recordcount om du ändå bara hämtar första värdet?
<code>
Const adUseClient = 3

'Antal plocklisterader
strquery2= "SELECT MQSLTP FROM MITALO20 WHERE MQTTYP = 31 AND MQRIDN = '" & rst("MDRIDN") & "' AND MQRIDI = " & rst("MDRIDI") & " AND MQPLSX = " & rst("MDPLSX")

Set rst2 = Server.CreateObject("ADODB.recordset")
rst2.CursorLocation = adUseClient
rst2.Open strQuery2, conn

rader = rst2.Recordcount

lageromrade = rst2("MQSLTP")

rst2.Close
Set rst2 = nothing
</code>


Svara

Sv: Problem med att räkna rader i ett recordset

Postades av 2002-09-20 23:00:20 - Fredrik Henrysson

Anledningen till att jag vill räkna antalet rader i recordsetet trots att jag bara använder mig av första posten är följande:

* Antalet rader i recordsetet = antalet rader på plocklistan.
* Urvalet i recordsetet är satt så att alla raderna på ett ordernummer har samma lagerområde. Därför behöver jag bara använda mig av första posten då jag vill veta hur många plocklisterader det är per lagerområde och order.

Jag får testa ditt tips på måndag.

//Fredrik


Svara

Sv: Problem med att räkna rader i ett recordset

Postades av 2002-09-20 23:20:24 - Andreas Hillqvist

Varför inte använda en fråga istället? Detta borde väl funka lika bra?
<code>
strquery2= "SELECT MQSLTP, COUNT(*) AS Antal" & vbCrLf & _
"FROM MITALO20" & vbCrLf & _
"WHERE MQTTYP = 31 AND MQRIDN = '" & rst("MDRIDN") & "' AND MQRIDI = " & rst("MDRIDI") & " AND MQPLSX = " & rst("MDPLSX") & vbCrLf & _
"GROUP BY MQSLTP

Set rst2 = Server.CreateObject("ADODB.recordset")
rst2.Open strQuery2, conn

rader = rst2("Antal")
lageromrade = rst2("MQSLTP")

rst2.Close
Set rst2 = nothing



</code>
Du kanske rentav kan optimera det ytterliga genom att plocka fram all inforamtion i det första recordsetet. Hur ser koden ut som öppnar och loopar igenom det?


Svara

Sv: Problem med att räkna rader i ett recordset

Postades av 2002-09-23 08:17:55 - Fredrik Henrysson

Hej Andreas,

Jag har testat att ställa frågan på det sätt som du skrev i ditt senaste inlägg och den fungerar alldeles utmärkt.

Här nedan följer hela koden för sidan.

Det skulle vara lysande om det gick att få ihop allt i det första recordsetet. Jag har försökt detta tidigare men inte lyckats, frågan tog då alldeles för lång tid. (Det var pga sortering som detta inte gick)

Idag har jag ett mellanlager i en Accessdatabas som jag sedan presenterar datan ifrån och den proceduren skulle jag vilja slippa. Här kör jag även slutsorteringen.

//Fredrik

<code>
<%
session.lcid = 1053

strquery = "SELECT OACUNO, ODCUNM, ODCUA3, MDRIDN, MDRIDI, MDPLSX, OAMODL, OAOREF, OARLDT FROM MITADI30, OOADRE00, OOHEAD00 " &_
"WHERE MDRIDN = ODORNO AND MDSTAT = '40' AND ODADRT=9 AND MDRIDN = OAORNO"

set conn = Server.CreateObject("ADODB.Connection")
conn.open "DSN=xxxx;UID=xxxxx;PWD=xxxx"

Set rst = Server.CreateObject("ADODB.recordset")
rst.Open strQuery, conn, 1, 3

'------------ Mellanlagring för sortering---------------

strquery_mellan = "SELECT * FROM Plocklistor"

set conn_mellan = Server.CreateObject("ADODB.Connection")
conn_mellan.open "Intranet"

Set rst_mellan = Server.CreateObject("ADODB.recordset")
rst_mellan.Open strQuery_mellan, conn_mellan, 1, 3

Tid = time

Response.Write "<H1>Plocklistor " & date & " " & time & "</h1>"

Response.Write "<table ID='Plocklistor' border=0 cellspacing=0 cellpadding=1 rules=box>"

IF rst.EOF THEN
Response.Write "Det finns inga plocklistor."
ELSE

While not rst.EOF

'-------------------------- Antal plocklisterader -----------------------------------

strquery2= "SELECT MQSLTP, COUNT(*) AS Antal FROM MITALO20 WHERE MQTTYP = 31 AND MQRIDN = '" & rst("MDRIDN") & "' AND MQRIDI = " & rst("MDRIDI") & " AND MQPLSX = " & rst("MDPLSX") & " GROUP BY MQSLTP"

Set rst2 = Server.CreateObject("ADODB.recordset")
rst2.Open strQuery2, conn

rader = rst2("Antal")

lageromrade = rst2("MQSLTP")

rst2.Close
Set rst2 = nothing

Levdatum = Left(rst("OARLDT"), 4) & "-" & Mid(rst("OARLDT"), 5 ,2) & "-" & Right(rst("OARLDT"), 2)

'-------------------------- Mellanlagringen utförs -----------------------------------
rst_mellan.AddNew
rst_mellan.Fields("Leveransdatum") = Levdatum
rst_mellan.Fields("Kundnr") = rst("OACUNO")
rst_mellan.Fields("Levadress1") = left(Svenska(rst("ODCUNM")),25)
rst_mellan.Fields("Levadress3") = left(Svenska(rst("ODCUA3")),25)
rst_mellan.Fields("Ordernr") = rst("MDRIDN")
rst_mellan.Fields("Lix") = rst("MDRIDI")
rst_mellan.Fields("Rader") = rader
rst_mellan.Fields("Plockomrade") = Lageromr(lageromrade)
rst_mellan.Fields("Plocklistesuffix") = rst("MDPLSX")
rst_mellan.Fields("Leveranssatt") = rst("OAMODL")
rst_mellan.Fields("Godsmarke") = Svenska(rst("OAOREF"))
rst_mellan.Fields("Session") = tid
rst_mellan.Update


rst.MoveNext
Wend

rst_mellan.Close

conn_mellan.Close
Set conn_mellan = nothing
Set rst_mellan = nothing


'------------------------------- Rubriker ------------------------------------------------
Response.Write "<THEAD>"

Response.Write "<TR>"
Response.Write "<th align=left width=60 valign=top>Levdatum</th>"
Response.Write "<th width=50 align=left valign=top>Kundnr</th>"
Response.Write "<th align=left width=160 valign=top>Namn</th>"
Response.Write "<th align=left width=160 valign=top>Postort</th>"
Response.Write "<th align=left width=40 valign=top>Ordnr</th>"
Response.Write "<th align=middle width=30 valign=top>Lix</th>"
Response.Write "<th align=left width=60 valign=top>Omr.namn</th>"
Response.Write "<th align=left width=40 valign=top>Rader</th>"
Response.Write "<th align=left width=110 valign=top>Levsätt</th>"
Response.Write "<th width=150 align=left valign=top>Godsmärke</th>"
Response.Write "</TR>"

Response.Write "</THEAD>"

Response.Write "<TBODY>"

Response.Write "<tr>"

'-------------------------------- Rader ----------------------------------------------------
raknare = 0
raknare_idag = 0
raknare_rest = 0
rad = 0

StrSort_plocklistor = "Leveransdatum ASC, Kundnr ASC, Ordernr ASC"

strquery_plocklistor = "SELECT * FROM Plocklistor WHERE Session = '" & Tid & "' ORDER BY " &StrSort_plocklistor

set conn_mellan = Server.CreateObject("ADODB.Connection")
conn_mellan.open "Intranet"

Set rst_mellan = Server.CreateObject("ADODB.recordset")
rst_mellan.Open strQuery_plocklistor, conn_mellan, 1 ,3

While not rst_mellan.EOF

Datum_nu = date

If rst_mellan("Leveransdatum") < Datum_nu then
raknare_rest = raknare_rest + 1
End If

If rst_mellan("Leveransdatum") = Datum_nu then
raknare_idag = raknare_idag + 1
End If

raknare = raknare + 1
rad = rad + 1
radfarg = "#FFFFFF"
IF rad = 2 THEN radfarg = "#F2F2F2"
IF rad = 2 THEN rad = 0


If (rst_mellan("Leveransdatum") > "" AND rst_mellan("Leveransdatum") < Datum_nu) then
radfargdatum = "#FF5959"
End If
If rst_mellan("Leveransdatum") = Datum_nu then
radfargdatum = "#FFFF00"
End If
If rst_mellan("Leveransdatum") > Datum_nu OR rst_mellan("Leveransdatum") = "" then
radfargdatum = radfarg
End If


Response.Write "<td width=60 align=left valign=top bgcolor=" & radfargdatum &">" & rst_mellan("Leveransdatum") & "</td>"
Response.Write "<td width=50 align=left valign=top bgcolor=" & radfarg &">" & rst_mellan("Kundnr") & "</td>"
Response.Write "<td width=160 align=left valign=top bgcolor=" & radfarg &">" & left(rst_mellan("Levadress1"),25) & "</td>"
Response.Write "<td width=160 align=left valign=top bgcolor=" & radfarg &">" & left(rst_mellan("Levadress3"),25) & "</td>"
Response.Write "<td width=40 align=left valign=top bgcolor=" & radfarg &">" & rst_mellan("Ordernr") & "</td>"
Response.Write "<td width=30 align=middle valign=top bgcolor=" & radfarg &">" & rst_mellan("Lix") & "</td>"

Response.Write "<td width=60 align=left valign=top bgcolor=" & radfarg &">" & rst_mellan("Plockomrade") & "</td>"

Response.Write "<td width=20 align=left valign=top bgcolor=" & radfarg &">" & rst_mellan("rader") & "</td>"
Response.Write "<td width=110 align=left valign=top bgcolor=" & radfarg &">" & Levsatt(rst_mellan("Leveranssatt")) & "</td>"
Response.Write "<td width=150 align=left valign=top bgcolor=" & radfarg &">" & rst_mellan("Godsmarke") & "</td>"

Response.Write "</tr>"

rst_mellan.MoveNext
Wend

Response.Write "<font>" & raknare & " plocklistor totalt.<br></font>"
Response.Write "<font>" & raknare_idag & " plocklistor skall levereras idag.<br></font>"
Response.Write "<font>" & raknare_rest & " plocklistor med rest (eller första lev.dag tidigare än idag).<br></font>"


'------------ Ta bort poster ur mellan registret -----------
set cm = Server.CreateObject("ADODB.Command")
cm.ActiveConnection = conn_mellan
'Define SQL query
cm.CommandText = "DELETE FROM Plocklistor WHERE Session = '" & Tid & "'"
cm.Execute


rst_mellan.Close

conn_mellan.Close
Set conn_mellan = nothing
Set rst_mellan = nothing

rst.Close

conn.Close
Set conn = nothing
Set rst = nothing
Response.Write "</TBODY>"

Response.Write "</table>"

END IF
%>
</code>



Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 814
27 960
271 761
7 509
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies