Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
gefilterte Daten an Tabelle anfügen
Gehe zu Seite 1, 2  Weiter
zurück: mehrere Kombinationsfelder zum filtern benutzen weiter: Datenübernahme zwischen Endlosformularen? Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Feedback Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Rejnok.
Gast


Verfasst am:
10. Dez 2009, 20:21
Rufname:

gefilterte Daten an Tabelle anfügen - gefilterte Daten an Tabelle anfügen

Nach oben
       Version: Office 2k (2000)

Hallo Forum,

ich filtere in einem Formular Daten aus einer Tabelle. Das Ergebniss der Filterung möchte ich nun in eine andere Tabelle schreiben. Dummerweise habe ich keine Ahnung wie und finde ich nichts passendes hier im Forum.
Hier mal mein Filter-Code (den ich zum größtenteil aus Forumsbeiträgen zusammengestrickt habe):
Code:
Sub Filter_Routine()
    Dim sKrit As String
   
    sKrit = ""
    If Nz(Me![Filter_MATCH], "") <> "" Then
        sKrit = sKrit & " A_MATCH_C = " & Me![Filter_MATCH]
    End If
    If Nz(Me![Filter_GANG], "") <> "" Then
      If sKrit <> "" Then sKrit = sKrit & " AND "
      sKrit = sKrit & "L_GANG = " & Me![Filter_GANG]
    End If
    If Nz(Me![Filter_PLATZ], "") <> "" Then
      If sKrit <> "" Then sKrit = sKrit & " AND "
      sKrit = sKrit & "L_PLATZ = " & Me![Filter_PLATZ]
    End If
    If Nz(Me![Filter_EBENE], "") <> "" Then
      If sKrit <> "" Then sKrit = sKrit & " AND "
      sKrit = sKrit & "L_EBENE = " & Me![Filter_EBENE]
    End If
    If sKrit <> "" Then sKrit = Mid(sKrit, 5)
    Me.Filter = sKrit
    Me.FilterOn = True
End Sub

Private Sub Filter_EBENE_AfterUpdate()
    Filter_Routine
End Sub

Private Sub Filter_GANG_AfterUpdate()
    Filter_Routine
End Sub

Private Sub Filter_MATCH_AfterUpdate()
    Filter_Routine
End Sub

Private Sub Filter_PLATZ_AfterUpdate()
    Filter_Routine
End Sub

Private Sub Form_Open(Cancel As Integer)
    Me.Filter = ""
    Me.FilterOn = False
End Sub

Arno
KlausMz
Moderator Access


Verfasst am:
10. Dez 2009, 21:07
Rufname:
Wohnort: Irgendwo in der Pfalz


AW: gefilterte Daten an Tabelle anfügen - AW: gefilterte Daten an Tabelle anfügen

Nach oben
       Version: Office 2k (2000)

Hallo,
da ergibst sich erst mal die Frage, warum in eine andere Tabelle?
Warum sollen die gleichen Daten 2x gespeichert werden?

_________________
Gruß
Klaus . . . . . Feedback wäre wünschenswert.
Ich möchte bitte keine unaufgeforderten PN. Fragen bitte im Forum.
Rejnok
Gast


Verfasst am:
10. Dez 2009, 21:18
Rufname:

AW: gefilterte Daten an Tabelle anfügen - AW: gefilterte Daten an Tabelle anfügen

Nach oben
       Version: Office 2k (2000)

Hi KlausMz,

ich fühl mich hier gleich wie zu Hause: auf eine Frage gibt es erst mal eine Gegenfrage!

Es ist bei uns in der Firma die alte Datenstruktur an die ich mich leider halten muß.

Gibt es trotz der scheinbaren Sinnlosigkeit einen Vorschlag für mich?

Arno
KlausMz
Moderator Access


Verfasst am:
11. Dez 2009, 00:28
Rufname:
Wohnort: Irgendwo in der Pfalz

AW: gefilterte Daten an Tabelle anfügen - AW: gefilterte Daten an Tabelle anfügen

Nach oben
       Version: Office 2k (2000)

Hallo,
Zitat:
ich fühl mich hier gleich wie zu Hause: auf eine Frage gibt es erst mal eine Gegenfrage!
Es waren hier schon viele um eine Gegenfrage froh.

Du musst eine Abfügeabfrage mit den gleichen Kriterien wie der Filter als String zusammenbauen und diese Abfrage ausführen.

_________________
Gruß
Klaus . . . . . Feedback wäre wünschenswert.
Ich möchte bitte keine unaufgeforderten PN. Fragen bitte im Forum.
Rejnok
Gast


Verfasst am:
11. Dez 2009, 06:05
Rufname:


AW: gefilterte Daten an Tabelle anfügen - AW: gefilterte Daten an Tabelle anfügen

Nach oben
       Version: Office 2k (2000)

Hallo KlausMz

natürlich sind Gegenfragen besser wie gar keine Antwort. Mich haben sie dazu gebracht den Ansatz noch mal zu überdenken. Meine Antwort sollte auch nicht sarkastisch klingen sondern eher mit einem zwinkernden Auge versehen werden.

Noch mal zum eigentlichen Thema:

Ende der 1990er Jahre hat ein ehemalige Mitarbeiter ein Lagerprogramm in dbase geschrieben. Dieses läuft zur Zeit nur noch auf einem Rechner. Auf neueren funktioniert es nicht. Um nicht irgendwann einmal ganz dumm da zu stehen will ich mit Acces auf die dbase-Datenbank zugreifen. Diese muß ich behalten da auch andere Programme darauf zugreifen. Das wegschreiben der Daten macht insofern Sinn, da die gefilterteten Daten Lagerentnahmen darstellen und aus der Datenbank entfernt werden. Um auch später noch nachvollziehen zu können was ich gelöscht habe, will ich sie mir vorher wegspeichern.
Für Pfrofi-DatenBänker mag das vieleicht keinen Sinn machen. Da meine Acces-Kenntnisse nicht über die Grundlagen hinaus gehen bin ich vielleicht übervorsichtig. Aber so habe ich evtl. die Möglichkeit gelöschte Daten wieder herzustellen.

Gruß, Arno
MissPh!
Office-VBA-Programmiererin


Verfasst am:
11. Dez 2009, 12:31
Rufname:
Wohnort: NRW

AW: gefilterte Daten an Tabelle anfügen - AW: gefilterte Daten an Tabelle anfügen

Nach oben
       Version: Office 2k (2000)

Hallo, hier mal ein Vorschlag:
Code:
Private Sub btnSpeichern_Click()
 On Error GoTo err_proc
    Dim strSQL
   
    strSQL = "Insert Into tblSicherung Select * From tabelle Where " & getFilter()
    CurrentDB.Execute strSQL, 128    ' mit Fehlerkontrolle
end_proc:
    Exit Sub
err_proc:
    msgbox err.description,,err.number
End Sub
Dazu schreibst du noch eine neue Funktion getFilter(), die dir den Filterstring liefert so wie du ihn in Filter_Routine ermittelst.

(natürlich kannst du das auch so umschreiben, dass die neue Funktion auch in Filter_Routine eingesetzt wird)

_________________
Gruß MissPh!
Rejnok.
Gast


Verfasst am:
11. Dez 2009, 13:42
Rufname:

AW: gefilterte Daten an Tabelle anfügen - AW: gefilterte Daten an Tabelle anfügen

Nach oben
       Version: Office 2k (2000)

Hallo nochmal,

Danke MissPH, einen ähnlichen Code habe ich inzwischen auch gefunden und umgestrickt. Funktioniert soweit auch - trotzdem noch zwei Fragen.

1. Frage
Code:
    CurrentDB.Execute strSQL, 128    ' mit Fehlerkontrolle
was hat die 128 für eine Bedeutung/Auswirkung?

2. Frage
Wenn ich in der Form in den jeweiligen Textfelden Werte eingebe und diese dann mit der TAB-Taste verlasse wird der Code ausgeführt und das Feld erhält wieder den Focus. Im Moment ungehe ich das mit dem Code:
Code:
Private Sub Filter_MATCH_AfterUpdate()
    Filter_Routine
    If Nz(Me![Filter_MATCH], "") <> "" Then Me!Filter_GANG.SetFocus
End Sub
Ist aber blöd wenn ich das Feld mit SHIFT+TAB verlasse, der Focus aber trotzdem auf das nächste Feld gesetzt wird.
MissPh!
Office-VBA-Programmiererin


Verfasst am:
11. Dez 2009, 14:31
Rufname:
Wohnort: NRW

AW: gefilterte Daten an Tabelle anfügen - AW: gefilterte Daten an Tabelle anfügen

Nach oben
       Version: Office 2k (2000)

1) 128 steht für die DAO-Konstante dbFailOnError - der Name spricht für sich, oder? ;)

2)
Zitat:
wird der Code ausgeführt und das Feld erhält wieder den Focus.
verstehe ich nicht, muss an deinem Code liegen Confused

Wenn du bei jeder Änderung eines Suchfeldes das Formular neu filterst, wirkt das wie ein Requery und der Cursor wird an den Anfang gesetzt - ist es das?

_________________
Gruß MissPh!
Gast



Verfasst am:
11. Dez 2009, 15:30
Rufname:

AW: gefilterte Daten an Tabelle anfügen - AW: gefilterte Daten an Tabelle anfügen

Nach oben
       Version: Office 2k (2000)

Das wird es sein.

Sobald ich etwas geändert habe und das Feld verlasse - sei es durch TAB, ENTER oder Maus - wird ja die AfterUpdate-Routine ausgeführt und somit neu gefiltert. Kann ich das 'an den Anfang setzen' unterbinden?
MissPh!
Office-VBA-Programmiererin


Verfasst am:
11. Dez 2009, 15:38
Rufname:
Wohnort: NRW

AW: gefilterte Daten an Tabelle anfügen - AW: gefilterte Daten an Tabelle anfügen

Nach oben
       Version: Office 2k (2000)

Nein, aber du kannst das automatische Filtern unterbinden. ;)

Oder doch, du kannst dir das aktive Feld merken und den Cursor wieder drauf setzen...
aber ohne Berücksichtigung von Tab oder Shift+Tab.

Beispiel:
Code:
Private Sub Filter_EBENE_AfterUpdate()
    Dim strAktFeld As String
   
    strAktFeld = Screen.ActiveControl.name
    Filter_Routine
    Me(strAktFeld).SetFocus
End Sub
nur so eine Idee, ungetestet!
_________________
Gruß MissPh!
Rejnok.
Gast


Verfasst am:
11. Dez 2009, 16:14
Rufname:

AW: gefilterte Daten an Tabelle anfügen - AW: gefilterte Daten an Tabelle anfügen

Nach oben
       Version: Office 2k (2000)

Gerade das will ich ja umgehen.

Ohne die Code-Zeile:
Code:
    If Nz(Me![Filter_MATCH], "") <> "" Then Me!Filter_GANG.SetFocus
behält das Feld aus dem ich komme ja den Focus.
MissPh!
Office-VBA-Programmiererin


Verfasst am:
11. Dez 2009, 16:23
Rufname:
Wohnort: NRW

AW: gefilterte Daten an Tabelle anfügen - AW: gefilterte Daten an Tabelle anfügen

Nach oben
       Version: Office 2k (2000)

Jedes der vier Felder behält den Fokus, egal welches?!

Das verstehe ich jetzt aber nicht... Gibt es noch weiteren Code in dem Formular?

_________________
Gruß MissPh!
Rejnok
Im Profil kannst Du frei den Rang ändern


Verfasst am:
11. Dez 2009, 16:51
Rufname:
Wohnort: NRW-OWL

AW: gefilterte Daten an Tabelle anfügen - AW: gefilterte Daten an Tabelle anfügen

Nach oben
       Version: Office 2k (2000)

Wäre vielleicht sinnvoll die DB hochzuladen damit du sie dir anschauen kannst.
Dummerweise find ich dafür keinen Button/Link.
Und das einfügen eines Bildes (Screenshot der Form) klappt auch nicht. Sad

Vieleicht hilft ja der kompl. Code der Form:
Code:
Option Compare Database
Option Explicit

Private Sub Form_Open(Cancel As Integer)
    Me.Filter = ""
    Me.FilterOn = False
End Sub

Private Sub Form_Close()
    Me.Filter = ""
    Me.FilterOn = False
End Sub

Private Sub Filter_EBENE_AfterUpdate()
    Filter_Routine
    If Nz(Me![Filter_EBENE], "") <> "" Then Me!Löschen.SetFocus
End Sub

Private Sub Filter_GANG_AfterUpdate()
    Filter_Routine
    If Nz(Me![Filter_GANG], "") <> "" Then Me!Filter_PLATZ.SetFocus
End Sub

Private Sub Filter_MATCH_AfterUpdate()
    Filter_Routine
    If Nz(Me![Filter_MATCH], "") <> "" Then Me!Filter_GANG.SetFocus
End Sub

Private Sub Filter_PLATZ_AfterUpdate()
    Filter_Routine
    If Nz(Me![Filter_PLATZ], "") <> "" Then Me!Filter_EBENE.SetFocus
End Sub

Private Sub Löschen_Click()
On Error GoTo Err_Löschen_Click
    Dim db As Object
    Dim strSQL As String
   
    Set db = CurrentDb
    strSQL = "INSERT INTO ERFAPDAT_TEMP " & _
                    "( A_MATCH_C, PAL_INHALT, L_GANG, L_PLATZ, " & _
                      "L_EBENE, L_LISTE, L_DATUM, L_GEDRUCKT ) " & _
              "SELECT [A_MATCH_C], [PAL_INHALT], [L_GANG], [L_PLATZ], " & _
                     "[L_EBENE], [L_LISTE], [L_DATUM], [L_GEDRUCKT] " & _
                "FROM LAGER " & _
               "WHERE [A_MATCH_C]= " & Me!Filter_MATCH & " " & _
                 "AND [L_GANG]= " & Me!Filter_GANG & " " & _
                 "AND [L_PLATZ]= " & Me!Filter_PLATZ & " " & _
                 "AND [L_EBENE]= " & Me!Filter_EBENE & ";"
    db.Execute strSQL, 128
    Me.Filter = ""
    Me.FilterOn = False
Exit_Löschen_Click:
    Exit Sub
Err_Löschen_Click:
    If Err = 3075 Then
        MsgBox "Es müssen alle Felder gefüllt sein", vbOKOnly + vbCritical _
             , "Lagerverwaltung Verschieberegal"
        If Nz(Me![Filter_MATCH], "") = "" Then
            Me!Filter_MATCH.SetFocus
          ElseIf Nz(Me![Filter_GANG], "") = "" Then
            Me!Filter_GANG.SetFocus
          ElseIf Nz(Me![Filter_PLATZ], "") = "" Then
            Me!Filter_PLATZ.SetFocus
          ElseIf Nz(Me![Filter_EBENE], "") = "" Then
            Me!Filter_EBENE.SetFocus
        End If
      Else
        MsgBox Err.Description, , Err.Number
    End If
    Resume Exit_Löschen_Click
End Sub

Sub Filter_Routine()
    Dim sKrit As String
   
    sKrit = ""
    If Nz(Me![Filter_MATCH], "") <> "" Then
        sKrit = sKrit & " A_MATCH_C = " & Me![Filter_MATCH]
    End If
    If Nz(Me![Filter_GANG], "") <> "" Then
        If sKrit <> "" Then sKrit = sKrit & " AND "
        sKrit = sKrit & "L_GANG = " & Me![Filter_GANG]
    End If
    If Nz(Me![Filter_PLATZ], "") <> "" Then
        If sKrit <> "" Then sKrit = sKrit & " AND "
        sKrit = sKrit & "L_PLATZ = " & Me![Filter_PLATZ]
    End If
    If Nz(Me![Filter_EBENE], "") <> "" Then
        If sKrit <> "" Then sKrit = sKrit & " AND "
        sKrit = sKrit & "L_EBENE = " & Me![Filter_EBENE]
    End If
    Me.Filter = sKrit
    Me.FilterOn = True
End Sub
KlausMz
Moderator Access


Verfasst am:
11. Dez 2009, 16:54
Rufname:
Wohnort: Irgendwo in der Pfalz

AW: gefilterte Daten an Tabelle anfügen - AW: gefilterte Daten an Tabelle anfügen

Nach oben
       Version: Office 2k (2000)

Hallo,
Zum Hochladen (auch Bilder) musst Du erst der entsprechenden Gruppe beitreten.

Anleitung zum Anhängen von Dateien

Aber bitte mit anonymisierten Daten

Vor dem Zippen (oder Raren) die DB mit dem Accessdiensprogramm (Menü >Extras>Dienstprogramme) komprimieren.

Die Freischaltung zum Upload kann aber etwas dauern.

_________________
Gruß
Klaus . . . . . Feedback wäre wünschenswert.
Ich möchte bitte keine unaufgeforderten PN. Fragen bitte im Forum.
MissPh!
Office-VBA-Programmiererin


Verfasst am:
11. Dez 2009, 17:02
Rufname:
Wohnort: NRW


AW: gefilterte Daten an Tabelle anfügen - AW: gefilterte Daten an Tabelle anfügen

Nach oben
       Version: Office 2k (2000)

Also, ich sehe nichts, was das Verhalten erklären könnte.

Aber wenn sowieso alle Felder gefüllt sein müssen, ehe du was tust, warum verzichtest du nicht einfach auf das
zwischenzeitliche Aktualisieren und legst einen Button zum Filtern an?

_________________
Gruß MissPh!
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Gehe zu Seite 1, 2  Weiter
Diese Seite Freunden empfehlen

Seite 1 von 2
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: 2 tabellen verknüpfen und daten übergeben 5 mihca 2004 05. Jun 2004, 13:22
mihca 2 tabellen verknüpfen und daten übergeben
Keine neuen Beiträge Access Tabellen & Abfragen: Änderungen an abgefragten Daten vornehmen 1 mimey 1139 28. Mai 2004, 22:06
lothi Änderungen an abgefragten Daten vornehmen
Keine neuen Beiträge Access Tabellen & Abfragen: Duplikate einer Tabelle löschen?! 3 Esel 2108 28. Mai 2004, 08:53
lothi Duplikate einer Tabelle löschen?!
Keine neuen Beiträge Access Tabellen & Abfragen: Spaltennamen einer Tabelle ermitteln 1 Alexander Neron 899 27. Mai 2004, 13:47
lothi Spaltennamen einer Tabelle ermitteln
Keine neuen Beiträge Access Tabellen & Abfragen: kein Wert in der Tabelle, dann immer Null (0)?? 3 Michel_9 1005 26. Mai 2004, 14:28
Michel_9 kein Wert in der Tabelle, dann immer Null (0)??
Keine neuen Beiträge Access Tabellen & Abfragen: Daten der Abfrage ausgeben 3 Papa Schlumpf 1007 24. Mai 2004, 17:34
Willi Wipp Daten der Abfrage ausgeben
Keine neuen Beiträge Access Tabellen & Abfragen: aus xls importieren und zeichen anfügen 1 Pafoe 584 26. Apr 2004, 13:31
Mario Kobolla aus xls importieren und zeichen anfügen
Keine neuen Beiträge Access Tabellen & Abfragen: Tabelle formatiert in txt-Datei exportieren 1 robby 1115 12. Apr 2004, 23:10
Helge Tabelle formatiert in txt-Datei exportieren
Keine neuen Beiträge Access Tabellen & Abfragen: Zeilenumbruch nach Einfügen Word Tabelle 2 topflop 1698 30. März 2004, 16:06
Gast Zeilenumbruch nach Einfügen Word Tabelle
Keine neuen Beiträge Access Tabellen & Abfragen: nicht-atomare Daten aus EXCEL importieren 2 Panther 908 29. März 2004, 16:33
Panther nicht-atomare Daten aus EXCEL importieren
Keine neuen Beiträge Access Tabellen & Abfragen: Wert einer Abfrage in Tabelle kopieren? 1 BerlinerWolf 2009 21. März 2004, 12:43
Maya Wert einer Abfrage in Tabelle kopieren?
Keine neuen Beiträge Access Tabellen & Abfragen: Daten als Spaltenüberschriften einer anderen Tabelle 1 Melburnt 685 03. März 2004, 17:11
lothi Daten als Spaltenüberschriften einer anderen Tabelle
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: HTML Editoren Forum