Doppler automatisch Markieren
Hallo.
Ich habe folgendes Problem. Aus statistischen Gründen kann ich keinen Doppler aus einer Access - Datenbank einfach löschen sondern muss diese markieren. Wir haben dafür extra eine Spalte Doppler mit Wahr oder Falsch um diese zu markieren... Aber wie kann ich dies Automatisieren ohne die ganzen Doppler von Hand zu markieren..?
Weiter habe ich eine 2. Tabelle dessen IDs mit der 1. Tabelle abgeglichen werden müssen. Alle mit diesen IDs müssen ebenfalls einen Wert in der Tabelle auf Wahr setzen...
Ich habe folgendes Problem. Aus statistischen Gründen kann ich keinen Doppler aus einer Access - Datenbank einfach löschen sondern muss diese markieren. Wir haben dafür extra eine Spalte Doppler mit Wahr oder Falsch um diese zu markieren... Aber wie kann ich dies Automatisieren ohne die ganzen Doppler von Hand zu markieren..?
Weiter habe ich eine 2. Tabelle dessen IDs mit der 1. Tabelle abgeglichen werden müssen. Alle mit diesen IDs müssen ebenfalls einen Wert in der Tabelle auf Wahr setzen...
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 188174
Url: https://administrator.de/contentid/188174
Ausgedruckt am: 26.11.2024 um 01:11 Uhr
20 Kommentare
Neuester Kommentar
Moin Moin,
Erstelle eine Abfrage um beide Tabellen gegenüber zu stellen.
Dann eine etwas abgewandelte VBA Prozedur (wie oben) um diese Häkchen machen zu lassen.
btw über welche Access Version reden wir?
Wie viele Tage arbeitest du jetzt mit Access?
Grüße aus Rostock
Wolfgang
(Netwolf)
Ich habe folgendes Problem. Aus statistischen Gründen kann ich keinen Doppler aus einer Access - Datenbank einfach
löschen sondern muss diese markieren.
ok, das sollte kein Problem darstellenlöschen sondern muss diese markieren.
Wir haben dafür extra eine Spalte Doppler mit Wahr oder Falsch um diese zu markieren...
das ist schon mal sehr gut vorbereitetAber wie kann ich dies Automatisieren ohne die ganzen Doppler von Hand zu markieren..?
dazu nimmst du VBA, schreibst eine kleine Schleife, die deine Tabelle durchläuft und dem zweiten Datensatz je nach Kriterium ein Häkchen verpasst.Weiter habe ich eine 2. Tabelle dessen IDs mit der 1. Tabelle abgeglichen werden müssen. Alle mit diesen IDs müssen
ebenfalls einen Wert in der Tabelle auf Wahr setzen...
aber hoffentlich nicht im gleichen Feld?ebenfalls einen Wert in der Tabelle auf Wahr setzen...
Erstelle eine Abfrage um beide Tabellen gegenüber zu stellen.
Dann eine etwas abgewandelte VBA Prozedur (wie oben) um diese Häkchen machen zu lassen.
btw über welche Access Version reden wir?
Wie viele Tage arbeitest du jetzt mit Access?
Grüße aus Rostock
Wolfgang
(Netwolf)
Moin Moin,
Wer bekommt Daten von wem? In welchem Format?
Bitte ausführlicher! So kann das alles mögliche bedeuten.
Bitte tue uns einen großen Gefallen. Wir sind hier blind und haben keine Lust/Zeit zu raten. Wir können nicht sehen was du da hast. Beschreibe bitte in einem Forum dein Problem, dein Programm, deine Umgebung etc. immer so, dass nicht hundert Nachfragen nötig sind. Das nerved beide Seiten, wenn schon die grundlegenden Informationen nicht klar sind, wird es mit der Hilfe sehr schwer.
Ich habe zwischenzeitlich deine anderen Beiträge gelesen und festgestellt, dass wir ja schon häufiger Kontakt hatten.
Falls es immer noch um diese Geschichte geht, wäre ein Link und/oder Hinweis bestimmt hilfreich gewesen.
Grüße aus Rostock
Wolfgang
(Netwolf)
Ich arbeite erst seit einpaar Wochen mit Access
ok, du bist Anfänger mit Access Kurs oder ohne? Ein paar Informationen mehr wären hilfreich um dir entsprechend helfen zu können. Abfragen erstellen kannst du? Einen Button auf einem Formular kannst du auch erstellen um die Prozedur aufzurufen? Den VBA-Editor kannst du aufrufen entnehme ich deiner Antwort!?Bei der 2 Tabelle werden die Daten von einem externen Dienstleister überprüft
wie? was? wird wo "überprüft"? Bitte ausführlicher! So kann das alles mögliche bedeuten.und dann bei uns wieder eingespielt bzw, das ergebnis von Hand korrigiert.
wie? was? wird wo "eingespielt"? Bitte ausführlicher! So kann das alles mögliche bedeuten.Die ID ist bei Ex und Import gleich
wie? wo? warum? was passiert bei Ex- und Import?Wer bekommt Daten von wem? In welchem Format?
Bitte ausführlicher! So kann das alles mögliche bedeuten.
deshalb währe es leicht die Daten damit abzugleichen...
Bitte ausführlicher! So kann das alles mögliche bedeuten.Eine Datenbank läuft unter Access2000 und die andere auf 2010...
und wir sollen jetzt raten, welche du und welche der Dienstleister nutzt?Bitte tue uns einen großen Gefallen. Wir sind hier blind und haben keine Lust/Zeit zu raten. Wir können nicht sehen was du da hast. Beschreibe bitte in einem Forum dein Problem, dein Programm, deine Umgebung etc. immer so, dass nicht hundert Nachfragen nötig sind. Das nerved beide Seiten, wenn schon die grundlegenden Informationen nicht klar sind, wird es mit der Hilfe sehr schwer.
Ich habe zwischenzeitlich deine anderen Beiträge gelesen und festgestellt, dass wir ja schon häufiger Kontakt hatten.
Falls es immer noch um diese Geschichte geht, wäre ein Link und/oder Hinweis bestimmt hilfreich gewesen.
Grüße aus Rostock
Wolfgang
(Netwolf)
ok, fangen wir mal mit der Basis an:
Im Ribbon klickst du auf:
Reiter = Erstellen
dort dann auf: Abfrage-Assistent
wähle dann aus der Liste: Abfrage-Assistent zur Duplikatsuche
Wähle die relevanten Felder und lasse die Abfrage erstellen.
Diese Abfrage wird als Basis für die weiteren Aktionen benötigt, benenne diese also z.B. BASIS_Duplikate.
Werden alle Duplikate richtig erkannt?
gut, dann kann folgender Code helfen
Grüße aus Rostock
Wolfgang
(Netwolf)
Im Ribbon klickst du auf:
Reiter = Erstellen
dort dann auf: Abfrage-Assistent
wähle dann aus der Liste: Abfrage-Assistent zur Duplikatsuche
Wähle die relevanten Felder und lasse die Abfrage erstellen.
Diese Abfrage wird als Basis für die weiteren Aktionen benötigt, benenne diese also z.B. BASIS_Duplikate.
Werden alle Duplikate richtig erkannt?
gut, dann kann folgender Code helfen
Public Function Kill_Duplikate()
Dim dbs As Database
Dim rst As Recordset
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("BASIS_duplikate", dbOpenDynaset)
With rst
If .RecordCount > 0 Then
.MoveLast
.MoveFirst
Do While Not .EOF
merken1 = !deinfeld
.MoveNext
If merken1 = !deinfeld Then
'.Delete 'gleich löschen
'oder
!Doppelt = true 'Datensatz markieren
.MoveNext
Wend
End If
End With
rst.Close
End Function
Grüße aus Rostock
Wolfgang
(Netwolf)
Damit wäre meine Frage "Den VBA-Editor kannst du aufrufen?" dann auch beantwortet.
VBA hat nichts mit Makros zu tun. Vermeide Makros wo du VBA nutzen kannst!!
Nutze die in der Access-Hilfe angegebene Tastenkombination ALT + F11 um den VBA - Editor aufzurufen.
Das funktioniert übrigens in allen Office-Programmen.
Grüße aus Rostock
Wolfgang
(Netwolf)
VBA hat nichts mit Makros zu tun. Vermeide Makros wo du VBA nutzen kannst!!
Nutze die in der Access-Hilfe angegebene Tastenkombination ALT + F11 um den VBA - Editor aufzurufen.
Das funktioniert übrigens in allen Office-Programmen.
Grüße aus Rostock
Wolfgang
(Netwolf)
Habe ich es nicht geahnt? Wie ich schon sagte: Access Grundlagenkurs im Forum bringt nichts!
Der grüne Pfeil ist nicht auf eine public Funktion anzuwenden.
In deinem Hauptformular sollst du einen Button für diese Funktion erstellen, damit sie damit gestartet werden kann.
Wenn ich den Code kompilieren lasse, erhalte ich keine Fehlermeldung.
Zeig hier mal den von dir geänderten Code.
Grüße aus Rostock
Wolfgang
(Netwolf)
Der grüne Pfeil ist nicht auf eine public Funktion anzuwenden.
In deinem Hauptformular sollst du einen Button für diese Funktion erstellen, damit sie damit gestartet werden kann.
Wenn ich den Code kompilieren lasse, erhalte ich keine Fehlermeldung.
Zeig hier mal den von dir geänderten Code.
Grüße aus Rostock
Wolfgang
(Netwolf)
Ich kommentiere den Code, da ich die Befürchtung habe, du verstehst nicht was da wo passiert.
Back to the Roots = mein ursprünglicher Code:
Wenn du also die Feldbezeichnungen entsprechend deinen vorhandenen Feldbezeichnungen anpasst, sollte es bei richtigen Feldtypen funktionieren.
Falls nicht, poste bitte hier die Struktur deiner Tabelle und den SQL-String deiner Abfrage.
Grüße aus Rostock
Wolfgang
(Netwolf)
Back to the Roots = mein ursprünglicher Code:
Public Function Kill_Duplikate()
'Dimensionierung/Definition von Variablen
Dim dbs As Database
Dim rst As Recordset
Dim merken1
'den Variablen Werte zuweisen
Set dbs = CurrentDb 'aktuell geöffnete Datenbank verwenden
Set rst = dbs.OpenRecordset("BASIS_duplikate", dbOpenDynaset) 'die Abfrage als Recordset verwenden
With rst 'der der Abfrage "Basis_duplikate" folgendes machen:
If .RecordCount > 0 Then 'prüfen ob überhaupt Duplikate vorhanden sind, wenn JA geht es weiter
'sicherstellen, dass alle Datensätze genutzt werden
.MoveLast 'zum letzten Datensatz springen
.MoveFirst 'zum ersten Datensatz springen
'die WHILE Schleife so lange durchlaufen, bis das Ende erreicht wird
While Not .EOF
'in der Variable "merken1" der Feldinhalt des zu prüfenden Feldes eintragen = merken
merken1 = !deinfeld 'hier den Feldnamen eintragen der auf Dubletten verglichen werden soll
.MoveNext 'zum nächsten Datensatz wechseln
If merken1 = !deinfeld Then ' wenn der gemerkte Wert dem neuen Wert des Feldes entspricht, mache...
'.Delete 'gleich löschen (nicht aktiviert) oder
!Doppelt = Wahr 'Datensatz markieren (Feld muss an deine Gegebenheiten angepasst werden)
'das Feld muss vom Typ Ja/Nein sein
End If 'Ende von IF merken1 = !deinfeld
.MoveNext 'zum nächsten Datensatz wechseln
Wend 'wieder nach oben, die While Schleife weiter ausführen
End If 'Ende von IF .RecordCount > 0
End With 'Ende der Verwendung von RST
rst.Close 'RST = Basis Abfrage schließen
End Function
Wenn du also die Feldbezeichnungen entsprechend deinen vorhandenen Feldbezeichnungen anpasst, sollte es bei richtigen Feldtypen funktionieren.
Falls nicht, poste bitte hier die Struktur deiner Tabelle und den SQL-String deiner Abfrage.
Grüße aus Rostock
Wolfgang
(Netwolf)
Nachdem ich nun die DB gesehen habe, wurden folgende Änderungen vorgenommen:
- Datenbankformat vom Access 2000 in Access 2010 geändert
Set rst = dbs.OpenRecordset("BASIS_Duplikate", dbOpenDynaset) erzeugt nun keinen TYP-Fehler mehr
- Basisdaten der Testtabelle erneuert. Zum Testen genutzte Daten waren den falschen Feldern zugeordnet.
(in PLZ stand z.B. die Straße etc.)
- Abfrage mit Abfrage-Assistent neu erstellt um eine Duplikatsabfrage zu erhalten.
nun stehen die Datensätze richtig zur weiteren Bearbeitung zur Verfügung, die zuvor nur gruppierte Abfrage war nicht nutzbar.
- im Code folgendes geändert und ergänzt:
.Edit 'hinzugefügt
!Doppelt = True 'WAHR geändert in TRUE
.update 'hinzugefügt
So nun läuft die Funktion zufriedenstellend.
Grüße aus Rostock
Wolfgang
(Netwolf)
- Datenbankformat vom Access 2000 in Access 2010 geändert
Set rst = dbs.OpenRecordset("BASIS_Duplikate", dbOpenDynaset) erzeugt nun keinen TYP-Fehler mehr
- Basisdaten der Testtabelle erneuert. Zum Testen genutzte Daten waren den falschen Feldern zugeordnet.
(in PLZ stand z.B. die Straße etc.)
- Abfrage mit Abfrage-Assistent neu erstellt um eine Duplikatsabfrage zu erhalten.
nun stehen die Datensätze richtig zur weiteren Bearbeitung zur Verfügung, die zuvor nur gruppierte Abfrage war nicht nutzbar.
- im Code folgendes geändert und ergänzt:
.Edit 'hinzugefügt
!Doppelt = True 'WAHR geändert in TRUE
.update 'hinzugefügt
So nun läuft die Funktion zufriedenstellend.
Grüße aus Rostock
Wolfgang
(Netwolf)