Toon posts:

[VBA] cboNaam.Requery, werkt soms wel soms niet

Pagina: 1
Acties:
  • 378 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik ben een database aan het maken in access en gebruik hierbij ook een combobox, om gegevens van een tabel in te plaatsen.
Wanneer ik een record opsla, of een record verwijder, zou de combobox vernieuwd moeten worden door Me.cboKortingKlant.Requery
Deze opdracht werkt soms niet en soms wel.
Wanneer ik nog een dropdown gebruik en nog eens een requery uitvoer, blijkt het al ietsje beter te werken, maar soms zal de nieuwe record er nog niet bijstaan, of zal de record nog niet verwijdert zijn uit de combobox

In de combobox heb je twee kolommen namelijk, een ID, en de prijs.
Rijbron:

code:
1
SELECT [tblKortingklant].[KortKlId], [tblKortingklant].[KortKl] FROM tblKortingklant;


Wat zou hiervan de oorzaak kunnen zijn?

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
41
42
Private Sub cmdKortingKlantOpslaan_Click()
    Dim curKortKl As Currency
On Error GoTo DeleteRecord_Err
    If MsgBox("Wilt u deze klantenkorting opslaan?", _
        vbQuestion + vbYesNo + vbDefaultButton2) = vbYes Then
        If Me.txtKortingKlant <> "" Then
            Algemeen.OpenDatabaseConnectie
            
            cmd.CommandText = "Select * from tblKortingKLant"
            rst.Open cmd, , adOpenDynamic, adLockPessimistic
            
            curKortKl = CCur(Me.txtKortingKlant / 100)
            
            rst.AddNew
            rst.Fields("KortKl") = curKortKl
            rst.Update
            rst.Close
            cnn.Close
            Me.txtKortingKlant = ""
            Me.cboKortingKlant.Requery
            
        Else
            MsgBox "Gelieve eerst een nieuwe klantenkorting in te vullen", _
                vbOKOnly
        End If
    End If
DeleteRecord_Exit:
        On Error GoTo 0
        Exit Sub
        
DeleteRecord_Err:
        Select Case Err.Number
        Case 2046
            MsgBox "Het opslaan is nu niet mogelijk. Probeer het een andere keer", _
              vbOKOnly
            Resume DeleteRecord_Exit
        Case Else
            MsgBox "Er is een fout opgetreden" & vbCrLf & "Foutnr " & Err.Number _
                 & ":" & Err.Description
            Resume DeleteRecord_Exit
        End Select
End Sub

[ Voor 7% gewijzigd door Verwijderd op 25-11-2004 23:55 ]


Verwijderd

Ik denk dat je probleem wordt veroorzaakt door de "lazy writer" van Access. Records worden niet direct naar disk weggeschreven, maar er wordt even gewacht of er nog meer wijzigingen gebeuren binnen een bepaalde tijd. Hierdoor onstaat een vertraging. ALs je DAO gebruikt, dan weet ik hier een oplossing voor : voeg de volgende regel code toe, net voor je requery
code:
1
DBEngine.Idle dbRefreshCache

dit flusht de cache

Verwijderd

Topicstarter
Nee ik gebruik geen DAO. Ik heb het toch eens getest voor alle zekerheid of het effect geeft, maar jammer genoeg geen resultaat.
Mss een extra informatie: ik maak gebruik van de volgende connectie provider : Microsoft.Jet.OLEDB.4.0
Ook maak ik gebruik van gekoppelde tabellen en ik leg mijn link naar de originele access bestand en mijn code zit dan in het access bestand met de gekoppelde bestanden.
Dus ik sla mijn record op in de originele tabellen en lees ze op in de gekoppelde tabellen zou dit het probleem kunnen zijn?
Moet je eigenlijk een nieuw record in uw gekoppelde tabel dus in uw toepassingsdatabase opslaan of in uw gegevensdatabase?

[ Voor 50% gewijzigd door Verwijderd op 26-11-2004 21:01 ]