[VB6,ADO] bound recordset probleem bij form sluiten*

Pagina: 1
Acties:

  • SuperRembo
  • Registratie: Juni 2000
  • Laatst online: 20-08-2025
Ik leest een record uit de DB in een ADODB.recordset, daarna verbind ik deze met een aantal TextBox-en:

code:
1
2
Text1.DataField = "FirstName"
Set Text1.DataSource = Rec


Als je een tekst wijzigt, dan wordt op het moment dat de textbox de focus verliest, het bijbehorende veld in de recordset bijgewerkt. Daar krijg je ook netjes het WillChangeRecord-event bij.

Als je nu via een commandbutton de form unload, dan werkt alles prima: de velden in de recordset hebben de zelfde waarden als de textboxen, als je een update doet staan alle wijzigingen in de database.

Het probleem komt als je een tekst wijzigt en dan direct op de [x] close-button drukt. Dan krijg je geen WillChangeRecord-event, de laaste wijziging staat niet in de recordset. Als je een update in Form_Unload (of Form_QueryUnload) zet, dan komt de laatste wijziging dus ook niet in de database.

Doe ik iets fout? Ik kan nergens vinden dat dit een bekende bug is.

(titel moet natuurlijk form ipv from zijn |:( )

| Toen / Nu


Verwijderd

Riekt wel naar 'unwanted behaviour'. Alle VB service packs geinstalleerd?

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:04
De Textbox waar je een tekst gewijzigd hebt, verliest dus de focus niet?

https://fgheysels.github.io/


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 31-08 15:46

mulder

ik spuug op het trottoir

Kun je dan niet evt in de Unload of QueryUnload die WillChangeRecord triggeren?

oogjes open, snaveltjes dicht


  • SuperRembo
  • Registratie: Juni 2000
  • Laatst online: 20-08-2025
Riekt wel naar 'unwanted behaviour'. Alle VB service packs geinstalleerd?
Ja, VB6SP5.
De Textbox waar je een tekst gewijzigd hebt, verliest dus de focus niet?
Nee. In Form_QueryUnload de focus op een andere control zetten helpt ook niet.
Kun je dan niet evt in de Unload of QueryUnload die WillChangeRecord triggeren?
Dat heb ik nog niet geprobeerd, hoe doe je zoiets?

| Toen / Nu


Verwijderd

Je kunt ook een andere truc gebruiken, namelijk .DataChanged van je controls. Iets omslachtiger, maar zeker veiliger.

  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 28-08 17:06

Sponge

Serious Game Developer

Als je de focus handmatig op een ander object set?
of misschien een of andere refresh/update methode?

M'n internet verbinding is 15min weg geweest, ondertussen ff gekeken, denk dat je met Datachanged het probleem kunt oplossen (check object browser)

(Ik gebruik nooit de "directe" methode voor zulk soort dingen, weet niet of er .refresh/.update bestaat)

  • SuperRembo
  • Registratie: Juni 2000
  • Laatst online: 20-08-2025
Als ik in Form_QueryUnload Text1.DataChanged = True zet, dan is in Form_Unload de recordset ongelijk aan de textbox.

| Toen / Nu


Verwijderd

is vrij logisch . ..de unload is sneller dan de rest van je events .. oftewel ...de form_unload komt VOOR je WillChangeRecord-event. .

bij form_unload zul je dus zelf het WillChangeRecord-event moeten triggeren

  • SuperRembo
  • Registratie: Juni 2000
  • Laatst online: 20-08-2025
Het zal hier wel mee te maken hebben.
BUG: ADO Recordset EditMode Property Is Not Set If You Close Form While Editing

Symptoms
When you edit a TextBox control that is bound to an ActiveX Data Objects (ADO) Recordset object, if you click the Close button or press the ALT+F4 key combination to immediately close the form, the EditMode property returns the adEditNone constant instead of the adEditInProgress constant.

Resolution
To work around this problem, change the focus to another control before you close the form.

Maar hoe zet ik de focus op een andere control als je Alt+F4 drukt of op de close-button klikt?

| Toen / Nu


  • SuperRembo
  • Registratie: Juni 2000
  • Laatst online: 20-08-2025
Ok, de oplossing is dus:

Visual Basic:
1
2
3
4
5
6
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
   ' Set focus to next control
   SendKeys vbTab, True
   ' Save record if necessary 
   RecCheckSave
End Sub

| Toen / Nu

Pagina: 1