Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Doppler automatisch Markieren

Frage Microsoft Microsoft Office

Mitglied: chrislm

chrislm (Level 1) - Jetzt verbinden

17.07.2012 um 14:54 Uhr, 3339 Aufrufe, 20 Kommentare

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...
Mitglied: NetWolf
17.07.2012 um 15:51 Uhr
Moin Moin,

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 darstellen

Wir haben dafür extra eine Spalte Doppler mit Wahr oder Falsch um diese zu markieren...
das ist schon mal sehr gut vorbereitet

Aber 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?

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)
Bitte warten ..
Mitglied: chrislm
17.07.2012, aktualisiert um 17:11 Uhr
Ich arbeite erst seit einpaar Wochen mit Access und kann leider kein VBA- Script so ohne weiteres erstellen. Wenn ich eines habe, kann ich es auf meine Bedürfnisse anpassen. Für mehr fehlen mir die Programierkenntnisse.

Bei der 2 Tabelle werden die Daten von einem externen Dienstleister überprüft und dann bei uns wieder eingespielt bzw, das ergebnis von Hand korrigiert. Die ID ist bei Ex und Import gleich deshalb währe es leicht die Daten damit abzugleichen...

Eine Datenbank läuft unter Access2000 und die andere auf 2010...
Bitte warten ..
Mitglied: NetWolf
17.07.2012 um 18:25 Uhr
Moin Moin,

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)
Bitte warten ..
Mitglied: chrislm
18.07.2012, aktualisiert um 11:48 Uhr
Dies hier ist ein ganz neues Problem welches ich versuche zu optimieren...

Problem ist folgendes:
Adressen werden manuell erfasst, ganz normal die Anschrift mit Tel usw... Das läuft über eine Sharepointlösung in Access 2010. Die Daten werden ein Tag später exportiert, mit der Nobodys duplettesuche überprüft, Doppler ausgedruckt und manuell in Access wieder als doppler markiert. Dafür gibts extra ein Feld in dem Erfassungsformular. Diesen vorgang würde ich gerne schon einmal über Access vereinfachen.

Alle Daten die dann übrig bleiben werden dann nochmal überprüft, ob sie schon als Kunde registriert sind. Das Geschiet extern. Daraufhin bekommen wir eine Datei zurück, in der die Bestandskunden hinterlegt sind. diese werden ebenfalls Ausgedruckt und Manuell als Bestandskunde in einem Feld abgeklickt.

Der Export erfolgt mit der kompletten Anschrift und mit der von Access vergebenen ID. Wenn wir die Datei zurück bekommen, ist unsere ID ebenfalls mit dabei und wir suchen Manuell in Access die ID und klicken diesen dann als Bestand ab.
Diese Daten in eine neue Tabelle zu importieren, ist kein problem. Aber das script zu bauen, welches in der einen Tabelle nachschaut und dann automatisch die Bestandskunden abklickt ist das problem. nach dem Anklicken kann ich über eine Löschabfrage die Importtabelle wieder löschen...


Ich hoffe das somit mein Problem soweit beschrieben ist und das mir jemand weiterhelfen kann...

Hier hat jemand ein ähnliches problem:
http://www.office-loesung.de/ftopic98043_0_0_asc.php

leider bekomme ich es so nicht zum da mit die qryKundenAnsprechDuplikate_JA_storno fehlt. Oder ich bin zu dumm es für mich umzubauen...
Bitte warten ..
Mitglied: NetWolf
18.07.2012, aktualisiert um 13:27 Uhr
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

01.
Public Function Kill_Duplikate() 
02.
   Dim dbs As Database 
03.
   Dim rst As Recordset 
04.
 
05.
   Set dbs = CurrentDb 
06.
   Set rst = dbs.OpenRecordset("BASIS_duplikate", dbOpenDynaset) 
07.
 
08.
   With rst 
09.
        If .RecordCount > 0 Then 
10.
            .MoveLast 
11.
            .MoveFirst 
12.
             
13.
            Do While Not .EOF 
14.
               merken1 = !deinfeld 
15.
               .MoveNext 
16.
               If merken1 = !deinfeld Then  
17.
 
18.
                '.Delete 'gleich löschen 
19.
                'oder 
20.
                !Doppelt = true  'Datensatz markieren 
21.
                .MoveNext 
22.
  
23.
           Wend 
24.
         
25.
        End If 
26.
         
27.
   End With 
28.
 
29.
   rst.Close 
30.
 
31.
End Function

Grüße aus Rostock
Wolfgang
(Netwolf)
Bitte warten ..
Mitglied: chrislm
18.07.2012, aktualisiert um 13:19 Uhr
Ok, habe es so gemacht, habe eine Tabelle erhalten und dann diese umbenannt...
Ganz rechts habe ich eine Spalte mit AnzahlvonDuplikaten
Bitte warten ..
Mitglied: NetWolf
18.07.2012 um 13:30 Uhr
ich habe den VBA Code oben ergänzt.

Du solltest in der Abfrage noch weitere Felder anzeigen lassen, um eine bessere Übersicht zu bekommen.
Außerdem solltest du noch das Feld Doppler überprüfen ob es FALSE ist, da ja der Datensatz schon als Duplikat markiert ist.

Grüße aus Rostock
Wolfgang
(Netwolf)
Bitte warten ..
Mitglied: chrislm
18.07.2012 um 14:15 Uhr
Ich habe noche eine Frage,
Wie oder wo baue ich den Code ein, unter macros?
Bitte warten ..
Mitglied: NetWolf
18.07.2012 um 14:34 Uhr
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)
Bitte warten ..
Mitglied: chrislm
18.07.2012, aktualisiert um 16:53 Uhr
Den hab ich auf, ich erstelle ein neues Modul und füge es so ein.
Wenn ich auf den grünen Pfeil klicke, kommt eine Fehlermeldung:
Fehler bei Kombilieren: benutzerdefinierter Typ nicht definiert
und Public Function Kill_Duplicate()ist Gelb. Und dbs As Database ist Markiert....

Ich hab herausgefunden das noch ein Haken bei DAO componennts gefehlt hat.
nun bekomme ich eine andere Fehlermeldung, wend ohne while...
Bitte warten ..
Mitglied: NetWolf
18.07.2012 um 17:18 Uhr
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)
Bitte warten ..
Mitglied: chrislm
19.07.2012, aktualisiert um 09:14 Uhr
hier noch einmal wie meine Datei aussieht:
Gehe ich hin und klicke im Layoutmudus -> Formularentwurfstools -> Button steht dort Befehl23 Drinn. Den namen kann ich ändern, beispiel auf doppler. Danach gehe ich auf Ereignis, Beim Klick auf Ereignisprozedur... kommt danach:
01.
Private Sub Befehl23_Click() 
02.
Public Function Kill_Duplikate() 
03.
    Dim dbs As Database 
04.
    Dim rst As Recordset 
05.
     
06.
    Set dbs = CurrentDb 
07.
    Set rst = dbs.OpenRecordset("BASIS_duplikate", dbOpenDynaset) 
08.
 
09.
    With rst 
10.
        If .RecordCount > 0 Then 
11.
                .MoveLast 
12.
            .MoveFirst 
13.
            Do While Not .EOF 
14.
            merken1 = !Doppler 
15.
            .MoveNext 
16.
            If merken1 = !Doppler Then 
17.
        '.Delete 'gleich löschen 
18.
        !Doppelt = Wahr  'Datensatz markieren 
19.
        .MoveNext 
20.
 
21.
        Wend 
22.
    
23.
    End If 
24.
 
25.
  End With 
26.
  
27.
  rst.Close 
28.
 
29.
End Function 
30.
 
31.
End Sub

Leider meldet er mir nun End Sub erwartet..

[Edit Biber] Codeformatierung as is der Function innerhalb der Procedure *kopfschüttel* [/Edit]
Bitte warten ..
Mitglied: chrislm
19.07.2012 um 10:13 Uhr
ich bin nun soweit das ich ein Modul angelegt habe, einen Button erstellt, beim klick folgendes eingetragen habe:
=Kill_Duplikate()

Wenn ich nun darauf klicke, bekomme ich die Fehlermeldunf Wend ohne While..
Bitte warten ..
Mitglied: bastla
19.07.2012, aktualisiert um 13:17 Uhr
Hallo chrislm!

Zu einem "Do" gehört am Ende nicht "Wend", sondern "Loop", und zu jedem mehrzeiligen "If" das entsprechende "End If" (wenn Du vernünftige Einrückungen verwendest, ist auch ziemlich gut zu erkennen, ob die Blöcke abgeschlossen sind) ...

Grüße
bastla
Bitte warten ..
Mitglied: NetWolf
19.07.2012 um 13:12 Uhr
Wenn ich nun darauf klicke, bekomme ich die Fehlermeldunf Wend ohne While..
sorry, entferne das DO vor dem WHILE, dann funktioniert es.

Grüße aus Rostock
Wolfgang
(Netwolf)
Bitte warten ..
Mitglied: chrislm
19.07.2012, aktualisiert um 13:36 Uhr
Auch das DO wegzunehmen brauchte keinen Erfog, ich hab etwas gespielt mit dem code und habe nun einen Laufzeitfehler 13 / Typen unverträglich
01.
 
02.
Public Function Kill_Duplikate() 
03.
    Dim dbs As Database 
04.
    Dim rst As Recordset 
05.
     
06.
    Set dbs = CurrentDb 
07.
    Set rst = dbs.OpenRecordset("BASIS_Duplikate", dbOpenDynaset) 
08.
 
09.
    With rst 
10.
        If .RecordCount > 0 Then 
11.
                .MoveLast 
12.
            .MoveFirst 
13.
            While Not .EOF 
14.
            merken1 = !Doppler 
15.
            .MoveNext 
16.
            If merken1 = !Doppler Then 
17.
        '.Delete 'gleich löschen 
18.
        !Doppelt = Wahr  'Datensatz markieren 
19.
        .MoveNext 
20.
             End If 
21.
  rst.Close 
22.
Wend 
23.
End If 
24.
End With 
25.
End Function 
26.
 
Da scheint irgendwas nicht zu stimmen...
Set rst = dbs.OpenRecordset("BASIS_Duplikate", dbOpenDynaset)
Bitte warten ..
Mitglied: bastla
19.07.2012 um 13:38 Uhr
Hallo chrislm!

Die Position von "rst.Close" ist suboptimal ...

... abgesehen davon solltest Du bei Fehlermeldungen auch die zugehörige Zeile angeben.

Grüße
bastla
Bitte warten ..
Mitglied: chrislm
19.07.2012 um 13:47 Uhr
Die Zeile
01.
Set rst = dbs.OpenRecordset("BASIS_Duplikate", dbOpenDynaset
) wird bemängelt, jedenfalls ist sie Markiert
Bitte warten ..
Mitglied: NetWolf
19.07.2012 um 14:12 Uhr
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:

01.
Public Function Kill_Duplikate() 
02.
   'Dimensionierung/Definition von Variablen 
03.
   Dim dbs As Database 
04.
   Dim rst As Recordset 
05.
   Dim merken1 
06.
 
07.
   'den Variablen Werte zuweisen 
08.
   Set dbs = CurrentDb  'aktuell geöffnete Datenbank verwenden 
09.
   Set rst = dbs.OpenRecordset("BASIS_duplikate", dbOpenDynaset) 'die Abfrage als Recordset verwenden 
10.
 
11.
   With rst     'der der Abfrage "Basis_duplikate" folgendes machen: 
12.
        If .RecordCount > 0 Then   'prüfen ob überhaupt Duplikate vorhanden sind, wenn JA geht es weiter 
13.
 
14.
            'sicherstellen, dass alle Datensätze genutzt werden  
15.
            .MoveLast    'zum letzten Datensatz springen  
16.
            .MoveFirst   'zum ersten Datensatz springen  
17.
 
18.
            'die WHILE Schleife so lange durchlaufen, bis das Ende erreicht wird 
19.
            While Not .EOF 
20.
 
21.
               'in der Variable "merken1" der Feldinhalt des zu prüfenden Feldes eintragen = merken  
22.
               merken1 = !deinfeld  'hier den Feldnamen eintragen der auf Dubletten verglichen werden soll 
23.
 
24.
               .MoveNext   'zum nächsten Datensatz wechseln 
25.
 
26.
               If merken1 = !deinfeld Then ' wenn der gemerkte Wert dem neuen Wert des Feldes entspricht, mache... 
27.
 
28.
                  '.Delete   'gleich löschen (nicht aktiviert) oder 
29.
 
30.
                  !Doppelt = Wahr  'Datensatz markieren (Feld muss an deine Gegebenheiten angepasst werden) 
31.
                  'das Feld muss vom Typ Ja/Nein sein   
32.
                
33.
               End If  'Ende von IF merken1 = !deinfeld  
34.
 
35.
               .MoveNext 'zum nächsten Datensatz wechseln 
36.
 
37.
            Wend 'wieder nach oben, die While Schleife weiter ausführen  
38.
         
39.
        End If 'Ende von IF .RecordCount > 0 
40.
         
41.
   End With 'Ende der Verwendung von RST 
42.
 
43.
   rst.Close  'RST = Basis Abfrage schließen 
44.
 
45.
End Function 
46.
 

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)
Bitte warten ..
Mitglied: NetWolf
20.07.2012 um 18:05 Uhr
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)
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Microsoft Office
Registerkarte in Excel automatisch färben (10)

Frage von ralfkausk zum Thema Microsoft Office ...

Windows Server
Jnlp Endungen mit Java automatisch verknüpfen über GPO (10)

Frage von staybb zum Thema Windows Server ...

Batch & Shell
gelöst Alte Daten automatisch per Zip erstellen (4)

Frage von BEBBYs zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (17)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

DSL, VDSL
DSL-Signal bewerten (14)

Frage von SarekHL zum Thema DSL, VDSL ...