Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.

[VB6+MDB] Delay probleem na aanmaak record

Pagina: 1
Acties:

  • fluppie007
  • Registratie: April 2005
  • Laatst online: 25-10 11:21
Ik heb een access database die ik aanstuur vanuit VB6.
Dit met een ADO DB connection en een SQL commando.

Visual Basic:
1
2
3
4
5
6
7
'RekeningenInvoegfunctie
        Set RekeningenInvoegConnectie = New ADODB.Connection
        RekeningenInvoegConnectie.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                                        "Data Source=" & App.Path & "\Rekeningen.mdb;" & _
                                        "Persist Security Info=False"
        
        Set RekeningenInvoegRecordset = RekeningenInvoegConnectie.Execute(InvoegSQL)            'Item toevoegen aan de rekening


Dit betreft een INSERT TO commando. Dit werkt overigens prima. Het enige vervelende is dus. Na mijn insert, wil ik meteen een waarde van deze nieuwe invoer uitlezen. Maar dit gaat niet omdat er een delay is van een dikke seconde, soms iets langer voordat de record opgeslagen en vindbaar is. Nu kan ik moeilijk een sleep functie van 1500ms erin zetten. Dat is een enorm schrale oplossing en werkt misschien niet altijd. Recordset.Refresh of .Requery wilt niet werken. Iemand een idee/tip ?

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 16-11 18:33
Dus als je een INSERT doet en meteen een SELECT staat je record er niet in?

Btw, ik ga er even vanuit dat je INSERT/SELECT SQL statements uitvoert en niet RecordSet.AddNew en whatever gebruikt want die gaan waarschijnlijk zelf zitten cachen.

PS
http://www.microsoft.com/express/sql/Default.aspx

[ Voor 60% gewijzigd door farlane op 17-08-2008 19:40 ]

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Marcj
  • Registratie: November 2000
  • Laatst online: 17-11 15:34
Gebruik je ook dezelfde connecties voor beide statements? Het is namelijk mogelijk dat de INSERT pas vanuit andere connecties te zien is als een auto-commit is uitgevoerd. Waarschijnlijk gebruik je dan ook geen transacties?

Als je transacties gebruikt en expliciet een commit uitvoert, zou een select die daarna wordt uitgevoerd deze data moeten kunnen vinden.

  • fluppie007
  • Registratie: April 2005
  • Laatst online: 25-10 11:21
farlane schreef op zondag 17 augustus 2008 @ 19:35:
Dus als je een INSERT doet en meteen een SELECT staat je record er niet in?

Btw, ik ga er even vanuit dat je INSERT/SELECT SQL statements uitvoert en niet RecordSet.AddNew en whatever gebruikt want die gaan waarschijnlijk zelf zitten cachen.

PS
http://www.microsoft.com/express/sql/Default.aspx
Precies, Ik gebruik inderdaad INSERT & SELECT commando's en zeker geen addnew commando.

  • fluppie007
  • Registratie: April 2005
  • Laatst online: 25-10 11:21
Marcj schreef op zondag 17 augustus 2008 @ 19:53:
Gebruik je ook dezelfde connecties voor beide statements? Het is namelijk mogelijk dat de INSERT pas vanuit andere connecties te zien is als een auto-commit is uitgevoerd. Waarschijnlijk gebruik je dan ook geen transacties?

Als je transacties gebruikt en expliciet een commit uitvoert, zou een select die daarna wordt uitgevoerd deze data moeten kunnen vinden.
Nee, dat niet, De grid wordt gerefreshed door een ADO DC unit. Alle acties mbt INSERT, UPDATE, SELECT gebeuren met de bovenaan beschreven methode. Ik ga eens inlezen over die auto-commit waar je over spreekt. Dat ken ik nl. nog niet.

  • fluppie007
  • Registratie: April 2005
  • Laatst online: 25-10 11:21
Kleine wijziging in de code gaf het gewenste resultaat.

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
'RekeningenInvoegConnectie voor in de Form_Load
        Set RekeningenInvoegConnectie = New ADODB.Connection            'Connectie aanmaken
        RekeningenInvoegConnectie.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                                        "Data Source=" & App.Path & "\Rekeningen.mdb;" & _
                                        "Persist Security Info=False"
        
        Set RekeningenInvoegRecordset = New ADODB.Recordset             'Recordset aanmaken
        RekeningenInvoegConnectie.Close

'RekeningenInvoegfunctie voor in de Cmd_Click
    RekeningenInvoegConnectie.Open
    RekeningenInvoegConnectie.Execute (InvoegSQL)
    RekeningenInvoegConnectie.Close
Pagina: 1