Datenfeld bei Änderung Aktualisieren ?!

Sunny82

Grünschnabel
Hallo,

habe das Forum eben gefunden und komme auch gleich mit einem Problem hier rein ;)

Hier der Quelltext:

Private Sub Form_Unload(Cancel As Integer)

Screen.MousePointer = vbDefalt

End Sub

Private Sub datPrimaryRS_Error(ByVal ErrorNumber As Long, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, fCancelDisplay As Boolean)
MsgBox "Data error event hit err:" & Description
End Sub

Private Sub datPrimaryRS_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
datPrimaryRS.Caption = "Record: " & CStr(datPrimaryRS.Recordset.AbsolutePosition)
End Sub

Private Sub datPrimaryRS_WillChangeRecord(ByVal adReason As ADODB.EventReasonEnum, ByVal cRecords As Long, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
Dim bCancel As Boolean

Select Case adReason
Case adRsnAddNew
Case adRsnClose
Case adRsnDelete
Case adRsnFirstChange
Case adRsnMove
Case adRsnRequery
Case adRsnResynch
Case adRsnUndoAddNew
Case adRsnUndoDelete
Case adRsnUndoUpdate
Case adRsnUpdate
End Select

If bCancel Then adStatus = adStatusCancel
End Sub

Private Sub cmdAdd_Click()
On Error GoTo AddErr
datPrimaryRS.Recordset.AddNew
Exit Sub
AddErr:
MsgBox Err.Description
End Sub

Private Sub cmdDelete_Click()
On Error GoTo DeleteErr
With datPrimaryRS.Recordset
.Delete
.MoveNext
If .EOF Then .MoveLast
End With
Exit Sub
DeleteErr:
MsgBox Err.Description
End Sub

Private Sub cmdRefresh_Click()
On Error GoTo RefreshErr
datPrimaryRS.Refresh
Exit Sub
RefreshErr:
MsgBox Err.Description
End Sub

Private Sub cmdUpdate_Click()
On Error GoTo UpdateErr

datPrimaryRS.Recordset.UpdateBatch adAffectAll
Exit Sub
UpdateErr:
MsgBox Err.Description
End Sub

Private Sub cmdClose_Click()
Unload Me
End Sub


Private Sub Form_Load()
Dim eingabe As Variant, ausgabe As Variant
eingabe = txtSum1 - txtSum2
ausgabe = Format$(eingabe, "0.00 €")
txt1.Text = ausgabe
End Sub

Bei dem Programm handelt es sich um eine schulische Projektaufgabe, bei der ein Kassenbuch erstellt werden soll.

Soweit funktioniert alles, aber wenn wir eine Buchung hinzufügen, aktualisiert sich der Kontostand nicht. Das Programm benötigt erst einen Neustart, dann ist der Wert enthalten.

txtSum1 und txtSum2 werden über Aggregate der Datenbank errechnet.

Kann jemand da schnell helfen ?
:confused:
danke..sunny
 
Hallo,

ganz genau habe ich das Problem noch nicht verstanden. Ich vermute einfach mal, dass die Textbox-Ausgabe immer nur nach einem Neustart des Programms aktuell ist (!?):

Code:
Private Sub Form_Load()
Dim eingabe As Variant, ausgabe As Variant
eingabe = txtSum1 - txtSum2
ausgabe = Format$(eingabe, "0.00 €")
txt1.Text = ausgabe
End Sub

Das Problem ist, dass die Form_Load-Routine nur einmal beim Programmstart ausgeführt wird. Du müßtest den Code aus Form_Load also bei jeder Buchung erneut aufrufen, um die Textbox zu aktualisieren.

Mein Vorschlag:

Lagere den Code auf Form_Load in ein separate Sub aus, und rufe diese an den benötigten Stellen auf:

Beispiel:
Code:
public sub Berechne_Summe ()
  Dim eingabe As Variant, ausgabe As Variant
  eingabe = txtSum1 - txtSum2
  ausgabe = Format$(eingabe, "0.00 €")
  txt1.Text = ausgabe
end sub

Private Sub Form_Load()
  call Berechne_Summe()
End Sub

Private Sub cmdRefresh_Click()
  On Error GoTo RefreshErr
  datPrimaryRS.Refresh
   call Berechne_Summe()
  Exit Sub
RefreshErr:
  MsgBox Err.Description
End Sub
 
hallo ramonr

danke schon mal für die hilfe!
Hab mich noch mal intensiv damit beschäftigt, das Prob ist, das ich via einem Aggregat die Summe einer Tabelle berechnen lasse. Nun muss ich es irgendwie hinbekommen, dass der SQL Befehl für die Summe in den VB Quelltext kommt weiss aber net wie...

Also jetzt noch mal konkret wie kann ich einen SQL Befehl an eine Access Datenbank "schicken"

PS: die DB ist via Microsoft Jet 3.51 OLE DB eingebunden

ciao..sunny
 
Zurück