ich habe mal wieder ein Problem.
Ich habe in einer Tabelle zu verschiedenen Vorgangsnummern, verschieden Phasen gespeichert.
Insgesamt gibt es zehn Phasen die durchlaufen werden sollen, die aber nicht alle gemeldet werden.
Anhand einer auswertung über die Tabelle mit den erfassten Rückmeldung, möchte ich herausfinden welche Phasen Fehlen.
Ich hatte mir sowas überlegt mit
Rückmeldung.Phase != Phase.Phase insert into FehlendeMeldung
das kann nicht funktionieren, da insert nur Daten in bestehende Datenfelder/-sätze schreibt, aber du einen neuen Datensatz erstellen mußt um dort die neuen Daten zu speichern. So einfach geht es leider nicht.
Hat jemand eine Idee?
Du mußt dir per VBA eine Funktion schreiben, die jeden Datensatz durchläuft und das Ergebnis speichert um dann festzustellen was fehlt.
Wenn nötig:
Dann mußt du einen neuen Datensatz hinzufügen, in dem du dann die fehlenden Daten einfügst.
Du mußt dir per VBA eine Funktion schreiben, die jeden
Datensatz durchläuft und das Ergebnis speichert um dann
festzustellen was fehlt.
Wenn nötig:
Dann mußt du einen neuen Datensatz hinzufügen, in dem du dann
die fehlenden Daten einfügst.
sowas in der Art hab ich mir ja auch schon gedacht, aber ich habe keinen Plan wie ich das anstellen soll.
Ich habe schon einen angefangenen Quellcode aber der bringt in keinem Maß das erwünschte Ergebnis.
Dim dbsDB As Database
Dim rstRückmeldung As Recordset
Dim DummyVnr As Integer
Dim X
'aktuelle Datenbank verwenden
Set dbsDB = CodeDb
'Abfrage erstellen
Set rstRückmeldung = dbsDB.OpenRecordset( _
"SELECT Vnr, Phase FROM Rückmeldung " & _
„ORDER BY Vnr, Phase“, dbOpenSnapshot)
With rstRückmeldung
'an den Anfang springen
.MoveLast
.MoveFirst
'Variable mit Daten des ersten Datensatzes vorbelegen
DummyVnr = !Vnr
Do While Not .EOF 'bis zum Ende der Tabelle
For X = 0 To 9
'Vorgang überprüfen
If !Vnr DummyVnr Then
DummyVnr = !Vnr 'neuer Vorgang
Exit For 'nächster Vorgang
End If
If !Phase = X Then
'alles in Ordnung, also einen Datensatz weiter
.MoveNext
If .EOF Then Exit For 'wenn am Ende raus hier
Else
'Fehler = Phase fehlt
MsgBox „in Vorgang Nr.“ & Str(!Vnr) & " fehlt die Phase " & Str(X)
'Exit Do '= ggf. aus der Do While Loop Schleife rausspringen
'oder Funktion ausführen
'oder weiter Prüfen lassen
End If
Next
'Phasenprüfung für den Vorgang abgeschlossen, alle 10 Phasen überprüft
Loop
MsgBox „Phasenüberprüfung abgeschlossen“
.Close
End With