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


Varför returnerar RST.RecordCount -1?

Postades av 2004-08-04 19:13:25 - Jörgen Fransson, i forum visual basic - allmänt, Tråden har 5 Kommentarer och lästs av 1456 personer

Jag har en programsnutt där jag vid ett tillfälle ska räkna antalet rader i en RecordSet.
Men jag får inte det att fungera. Varför returneras -1 och ibland 0?
Jag vet att svaret på SQL-frågan är ca 2000 rader.

Här kommer koden...

/Frasse



'Skapa nya object för databasen
Set CON = New ADODB.Connection

'Definiera anslutningssträngen mot databasen
CON.ConnectionString = "driver={SQL Server};server=" & Main.ThisSystem.ComputerName & ";database=" & Databas

'Timeout för anslutningen
CON.CommandTimeout = 180

'Öppna anslutningen mot databasen
CON.Open

'Beräkna Datumgränsen
DatumGrans = DateAdd("d", Dagar, Date)

'SQL-fråga för att hämta antalet poster som är äldre än Datumgränsen från tabellen.
strSQL = "SELECT TS FROM " & Tabell & " WHERE TS < '" & DatumGrans & " 00:00:00'"

'Skapa ett Recordset
Set RST = CON.Execute(strSQL)

'För över antalet rader som matchade frågan till variabel
AntRader = RST.RecordCount


Svara

Sv: Varför returnerar RST.RecordCount -1?

Postades av 2004-08-04 19:42:57 - Anna-Karin Söderberg

-1 betyder att den har fått träff men att du har öppnat databasen på fel sätt.

Titta i tråden [RecordCount, det blir bara fel...] den tar upp just ditt problem.


//Anna-Karin


Svara

Sv: Varför returnerar RST.RecordCount -1?

Postades av 2004-08-04 19:57:04 - Jörgen Fransson

Oki, tack för det...
Då ska det nog se hur såhär...


'Skapa nya object för databasen
Set CON = New ADODB.Connection

'Definiera anslutningssträngen mot databasen
CON.ConnectionString = "driver={SQL Server};server=" & Main.ThisSystem.ComputerName & ";database=" & Databas

'Timeout för anslutningen
CON.CommandTimeout = 180

'Öppna anslutningen mot databasen
CON.Open

'Skapa ett Recordset
Set RST = New ADODB.Recordset

'Bestäm cursor
RST.CursorLocation = aduseclient

'Öppna Recordset
RST.open strSQL, CON, adopendynamic

'Tilldela lokal variabel antalet rader i recordset'en
AntRader = RST.RecordCount


Svara

Sv: Varför returnerar RST.RecordCount -1?

Postades av 2004-08-04 23:09:56 - Andreas Hillqvist

Vad vill du göra? Vill du bar hämta antalet poster? Skall du bara läsa eller även skriva till recordset'et?


Svara

Sv: Varför returnerar RST.RecordCount -1?

Postades av 2004-08-05 07:37:57 - Jörgen Fransson

Jag ska läsa hur många rader som det finns i databasen som matchar ett visst kriterie.
Därefter ska jag ta bort dessa rader i databasen.

/Frasse


Svara

Sv: Varför returnerar RST.RecordCount -1?

Postades av 2004-08-05 12:10:55 - Andreas Hillqvist

Behöver du hämta antalet för du tar bort?
<code>

'Skapar Where vilkor
strWHERE = "FältNmn = 12"

'Skapa nya object för databasen
Set CON = New ADODB.Connection

'Definiera anslutningssträngen mot databasen
CON.ConnectionString = "driver={SQL Server};" & _
"server=" & Main.ThisSystem.ComputerName & ";" & _
"database=" & Databas

'Timeout för anslutningen
CON.CommandTimeout = 180

'Öppna anslutningen mot databasen
CON.Open

'Skapa SQL-sats
strSQL = "DELETE FROM TabellNamn" & vbCrLf & _
"WHERE " & strWHERE

CON.Execute strSQL, AntRader

'Stänger anslutningen mot databasen
CON.Close

'Frigör anslutningen
Set CON = Nothing
</code>


Alternativt om du vill ha antalet poster först:
<code>

'Skapar Where vilkor
strWHERE = "FältNmn = 12"

'Skapa nya object för databasen
Set CON = New ADODB.Connection

'Definiera anslutningssträngen mot databasen
CON.ConnectionString = "driver={SQL Server};" & _
"server=" & Main.ThisSystem.ComputerName & ";" & _
"database=" & Databas

'Timeout för anslutningen
CON.CommandTimeout = 180

'Öppna anslutningen mot databasen
CON.Open

'Skapa ett Recordset
Set RST = New ADODB.Recordset

'Skapa SQL-sats
strSQL = "SELECT COUNT(*) As AntalPoster" & vbCrLf & _
"FROM TabellNamn" & vbCrLf & _
"WHERE " & strWHERE

'Öppna Recordset
RST.open strSQL, CON, adOpenStatic

'Tilldela lokal variabel antalet rader i recordset'en
If RST.EOF Then
AntRader = 0
Else
AntRader = RST("AntalPoster")
End If

'Stänger Recordset
RST.Close

'Frigör Recordset
Set RST = Nothing

'Skapa SQL-sats
strSQL = "DELETE FROM TabellNamn" & vbCrLf & _
"WHERE " & strWHERE

CON.Execute strSQL

'Stänger anslutningen mot databasen
CON.Close

'Frigör anslutningen
Set CON = Nothing

</code>

Du bör överväg att använda OLEDB Proviodern för Microsoft SQL Server:

<code>
'Definiera anslutningssträngen mot databasen
CON.ConnectionString = "Provider=SQLOLEDB.1;" & _
"Data Source=" & Main.ThisSystem.ComputerName & ";" & _
"Initial Catalog=" & Databas & ";" & _
"Integrated Security=SSPI;" & _
"Persist Security Info=False;"
</code>


Svara

Nyligen

  • 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
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak

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 707
27 958
271 751
790
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