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


Använda ADODB.recordset istället för collection

Postades av 2004-06-03 11:47:31 - Jerker Pihl, i forum visual basic - allmänt, Tråden har 2 Kommentarer och lästs av 927 personer

Jag vill använda ett ADODB.recordset istället för en collection. Den anledning som mest tilltalar mig är den använda seek funktionen på recordseten. Programmet ska gå igenom en STOR partion och sedan lägga in en post på varje filändelse som finns och hur mycket plats totalt och hur många av filändelsen som finns
ex.
typ st storlek(kb)
.htm 30 10
.bak 600 60000
.dmp 10 300000

Jag har löst det med att göra en recursiv gång i FSO för att gå igenom alla mappar, och sedan lägga till det i en collection men det blir fruktansvärt söligt efter ett tag och det vore trevligt om jag med hjälp av sort funktionen kunde snabbt sortera om recordsetet på ex. antal eller storlek.
Notera att adodbrecordsetet är globalt. I strPath ligger directory som sökning ska börjas på.
Förslag på andra lösningar uppskattas också. (den som jag gjorde med collection blir seg och buggar ur efter ett antal recursioner). Fördelen är att om jag använder recordset är att jag kan för eller senare bygga ut den för att göra statestik på fördelningen av vilka filer som ändras mest och tar upp mest plats på datorn. Sparar DÅ undan recordsetinfo i en databas.

min kod so-far(som inte funkar :( ):
<code>
Option Explicit

Dim lngTotalkb As Long
Dim lngTotalfiler As Long
Dim strPath As String
Dim vidare As Cfiltypinfo
Dim rsFSO As ADODB.Recordset
Dim objFSO, objFolder, File

Sub listaADOBD()
rsFSO.MoveFirst
While Not rsFSO.EOF
Text2.Text = Text2.Text & rsFSO("Type").Value & rsFSO("Antal").Value & rsFSO("Size") & vbCrLf
rsFSO.MoveNext
Wend
End Sub

Private Sub Form_Load()
Set info = New Cfiltypinfo

Const adInteger = 3
Const adDate = 7
Const adVarChar = 200
'create an ADODB.Recordset and call it rsFSO
Set rsFSO = New ADODB.Recordset
'Open the FSO object
'create the various rows of the recordset
rsFSO.Fields.Append "Type", adVarChar, 200
rsFSO.Fields.Append "Antal", adInteger
rsFSO.Fields.Append "Size", adInteger
rsFSO.Open

End Sub



Sub ADODBlistingoffolders(strinPath) '
Dim subfolder
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(strinPath)
ADODBaddfilestyp (objFolder)
For Each subfolder In objFolder.subfolders
ADODBlistingoffolders (subfolder.Path)
Next
Set objFolder = Nothing
Set objFSO = Nothing
End Sub

Private Sub ADODBaddfilestyp(ByVal infolder As Object)

Dim strData As String
Dim filNamnsLangd, varFinnsPunkten, itypLangd As Integer
Dim bSant As Boolean
Dim test

For Each File In infolder.Files
'hide any file that begins with the character to exclude
filNamnsLangd = Len(File.Name)
varFinnsPunkten = InStrRev(File.Name, ".")
If varFinnsPunkten = 0 Then
strData = "Tom"
Else
itypLangd = filNamnsLangd - varFinnsPunkten
strData = Right(File.Name, itypLangd)
End If
rsFSO.index = "Type"
rsFSO.Seek "=", Val(strData)
If rsFSO.EOF Then
rsFSO("Antal") = rsFSO("Antal") + 1
rsFSO("Size") = rsFSO("Size") + File.Size
Else
' Fånig kod som kollar att indata och namn är ok
If IsEmpty(File.Name) Then
MsgBox "Error! No Name"
Else
rsFSO.AddNew
rsFSO("Type") = strData
rsFSO("Antal") = 1
rsFSO("Size") = File.Size
rsFSO.Update
End If
End If
Next
End Sub

Sub startaMedAttSkapaObject()
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(strPath)
ADODBaddfilestyp objFolder
Set objFolder = Nothing
Set objFSO = Nothing
End Sub
</code>


Svara

Sv: Använda ADODB.recordset istället för collection

Postades av 2004-06-04 13:48:33 - Mikael Ljunghorn

Hej,

Jag gissar att det är seek metoden som inte funkar för dig.
Vill minnas att det står någonstans att det ska fungera men det gör det inte.
Seek metoden fungerar i DAO men inte i ADO.
Du får använda Find metoden istället.

Exempel:
<code>
If (Not rsFSO.BOF) And (Not rsFSO.EOF) Then
rsFSO.MoveFirst
End If

rsFSO.Find "Type = '" & strData & "'"
</code>

För att optimera sökningen kan du sätta ett index på fältet:

<code>
With rsFSO.Fields
.Append "Type", adVarChar, 200
.Append "Antal", adInteger
.Append "Size", adInteger
End With

With rsFSO
.CursorLocation = adUseClient 'Enable index creation
.Open
.Fields("Type").Properties("Optimize") = True
End With
</code>


Svara

Sv: Använda ADODB.recordset istället för collection

Postades av 2004-06-07 11:53:24 - Jerker Pihl

tack det funkade
Konstigt att inte seek funkar dock :(


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

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 569 158
27 952
271 704
888
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