Toon posts:

[VBA]ADODB Recorset move werkt niet

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig met een zoekfunctie waarbij de zoekwaarde in een keuzelijst worden getoond.

Ik krijg echter steeds dezelfde waarde terug en ik vermoed dan ook
dat de rsSearch.move niet werkt.

Ik heb al geprobeerd het met een rsSearch.MoveNext maar dan is halverwege de code de recordset aan het einde en geeft ie een fout.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Public Function VulLijst(fld As Control, id As Variant, row As Variant, col As Variant, Code As Variant) As Variant
On Error Resume Next
    Dim offset
    
    Select Case Code
    
        Case 0                      'Initialize.
            rsSearch.MoveFirst
            Static bkm As String
            bkm = rsSearch.Bookmark
            Dim f  As Form
            Dim c_search As Control
            Set f = Forms![frm_gevonden]
            Set c_search = f!GevondenLijst
            VulLijst = True
        Case 1                      'Open.
            VulLijst = Timer          'Unique ID for control
        Case 3                      'Number of rows.
            VulLijst = -1
        Case 4                      'Number of columns.
            VulLijst = rsSearch.Fields.Count
        Case 5                      'Column width.
            VulLijst = CalcColumnWidth(rsSearch.Fields(col))
        Case 6                      'Get the data.
            If row = 0 Then
                VulLijst = rsSearch.Fields(col).Name
            ElseIf row <> 0 Then
                rsSearch.Move row - 1, bkm
                If Not rsSearch.EOF Then 
                     'Hier krijg ik steeds dezelfde waarde
                     ' (eerste record van recordset)
                     ' row en col veranderen wel steeds
                     VulLijst = rsSearch.Fields(col).Value 
                End If
            Else
                VulLijst = Null
            End If
    End Select

End Function


werkt de recordset.Move voor ADODB wel of is er een andere manier?

Verwijderd

Verwijderd schreef op woensdag 26 oktober 2005 @ 13:09:
[...]
werkt de recordset.Move voor ADODB wel of is er een andere manier?
Er bestaat helemaal geen .Move methode op een Recordset. Verder heb ik geen flauw idee wat je wil bereiken, dus of 'er een andere manier' is, kan ik je niet vertellen.

Omschrijf eens precies wat die code voorstelt en wat je met de denkbeeldige .Move probeert te bereiken?

  • sig69
  • Registratie: Mei 2002
  • Nu online
Zet "On Error Resume Next" eens uit... :X
Komen er vanxelf wel wat mooie foutmeldingen uit.

Roomba E5 te koop


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 13:14

TeeDee

CQB 241

Volgens mij wil je MoveNext() hebben.
Ik heb al geprobeerd het met een rsSearch.MoveNext maar dan is halverwege de code de recordset aan het einde en geeft ie een fout.
Het kan kloppen, dat als je op het einde (hint: zoekwoordje in google: .eof) van je recordset bent, dat er een error komt. Wat is je foutmelding?

Vertel inderdaad eens wat je met je code wil bereiken...

[ Voor 4% gewijzigd door TeeDee op 26-10-2005 14:26 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


Verwijderd

Topicstarter
De zoekcode is op basis uit een voorbeeld van vba help.
(zoeken op RowSourceType in vba help en dan dunctienotatie bij keuzelijst)
Tevens staat hier http://gathering.tweakers...es/631459///rowsourcetype een topic over.

Met de .move wil ik door de recordset loopen doordat de waarde van de row steeds verandert zou die steeds een ander record uit de recordset moeten halen.

De move methode wordt ook bij msdn http://msdn.microsoft.com...ado270/htm/mdmthmovex.asp beschrven, maar bij mij blijft ie steeds op het eerste record hangen.

[ Voor 7% gewijzigd door Verwijderd op 26-10-2005 14:28 . Reden: Plaats van zoeken in vba help toegevoegd ]


Verwijderd

Hmmm, ik kende die .Move helemaal niet, maar ik werk al lang niet meer met ADO. My bad!

Ik denk dat je inderdaad ten eerste wat moet doen met On Error Resume Next. Deze onderdrukt nl. eventuele foutmeldingen. Da's prima, als je dan wel een error check doet op plaatsen waar een error zou kunnen optreden. Voorlopig zou ik hem even uitcommentarieeren.

De oorzaken van jouw problemen kunnen heel divers zijn. Zo kunnen er volgens Microsoft bijvoorbeeld problemen zijn met ForwardOnly recordsets. Daarnaast weten we niet wat er in de RecordSet staat en wat de waarde van row is. Kortom, dit kan ook gewoon een data probleem zijn, waarbij Move juist precies doet wat je hem vertelt, maar dat je hem gewoon het verkeerde vertelt.

Wat me overigens ook opvalt is dat je telkens start met zoeken vanaf een bookmark, maar die bookmark wordt alleen maar gezet als Code == 1 en daarna wordt hij nooit meer aangepast. Wellicht dat er hier iets mis gaat.

Kijk dus eerst of je foutmeldingen krijgt. Zo niet, ga dan eens stap voor stap door de code lopen om te zien of de recordset wel voldoende records bevat, of de waarde van row wel klopt en of de bookmark niet moet worden aangepast.

Succes :)

Verwijderd

Topicstarter
Het is uiteindelijk toch gelukt.

Ik heb de code opnieuw geschreven en stap voor stap gekeken of het werkte.
Het zat uiteindelijk in een ongeldige bladwijzer bkm

Deze heb ik vervangen voor 1 wat wil zeggen dat ie vanaf het begin van de recordset beweegt.

Dat ie maar een keer geset wordt is goed omdat ie per rij verder moet bewegen.

Betrefende regel
code:
1
rsSearch.Move row - 1,  1

  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 15-04 15:52
een CInt(bkm) zal dan vast ook wel werken...

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 19-08 12:58

NMe

Quia Ego Sic Dico.

PW>>OFF

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
Uit de help van vba
Syntaxis

recordset.Move NumRecords, Start

Parameters

NumRecords Een expressie van het type Long met een plus- of minteken die het aantal records aangeeft dat de positie van de huidige record moet worden verplaatst.

Start Optioneel. Een waarde van het type String of Variant die wordt geëvalueerd naar een bladwijzer. U kunt ook een waarde van het type BookmarkEnum gebruiken.
Ik heb er het BookmarkEnum 1 (vanaf het begin van de recordset) van gemaakt
Pagina: 1