collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 26
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 1
  • Punkt Benutzer Online:

* Forenstatistik

  • stats Mitglieder insgesamt: 13929
  • stats Beiträge insgesamt: 66086
  • stats Themen insgesamt: 8913
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: Gefilterter Datensats auf Formular soll in Exces exportiert werden.  (Gelesen 1056 mal)

Offline Andreas_80

  • Newbie
  • Beiträge: 25
Hallo zusammen,

habe mich grade durch die Suche gearbeitet, leider konnte ich daraus nicht schlau werden.
Mein Problem ist das ich ein VBA Code habe mit dem ich in einem Formular, basierend auf einer Abfrage,
Datensätze filtern kann.
Klappt auch super. Nun will ich den gefilterten Datensatz per "Export"-Schaltfläche exportieren.

Hier ist mal mein zusammenkopierter Code hahah
Ich glaube das der gefilterte Datensatz in eine Variable oder Objekt gespeichert werden soll damit die Exportfunktion den Wert von dort aus übernimmt. Ich weiß aber nicht wie :-([/color
Hoffe mir kann jemand helfen und es wird nicht all zu kompliziert :-)

Option Compare Database

Private Sub Form_Load()
    Me.txtVorname.SetFocus
End Sub

Private Sub cmdExport_Click()
 Me.Requery
    On Error GoTo Err_cmdExport_Click
    Dim stDocName As String

    stDocName = "abf_Schnellsuche"
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12, stDocName, "C:\Users\buss\Desktop\test.xls", True
    MsgBox "Die Datei wurde als Excel-Datei unter C:\Users\buss\Desktop\test.xls gespeichert!!!"
Exit_cmdExport_Click:
    Exit Sub
Err_cmdExport_Click:
    MsgBox Err.Description
    Resume Exit_cmdExport_Click
End Sub

Private Sub cmdZurückHM_Click()
    DoCmd.Close
    DoCmd.OpenForm "frm_Menü"
End Sub

Private Sub FilterSetzen()
 Dim ctl           As Control
 Dim strFilter     As String
 Dim intkeyascii As Integer
' aktuelles Suchfeld in Variable einlesen
 Set ctl = Me.ActiveControl
' Sonderbehandlung von Leerzeichen (Zeichen Nr. 32)
 If intkeyascii = 32 Then
   ctl = ctl & Chr(32)
'   Initialisierung der Variablen
   intkeyascii = 0
 End If
' strFilter aus den Suchfeldern zusammenstellen (nach System von Reinhard Kraasch)
' Filter bei Nachname, Vorname und Straße nach Like x*, bei Telefon Filter nach Like *x*
' Wenn der Fokus auf dem Suchfeld ist, wird die Text-Eigenschaft abgefragt, ansonsten die Value-Eigenschaft.
 If ctl.Name = "txtNachname" Then
   If Len(Me!txtNachname.Text & vbNullString) > 0 Then strFilter = strFilter & " AND Nachname Like '" & Me!txtNachname.Text & "*'"
 Else
   If Not IsNull(Me!txtNachname.Value) Then strFilter = strFilter & " AND Nachname Like '" & Me!txtNachname.Value & "*'"
 End If

 If ctl.Name = "txtVorname" Then
   If Len(Me!txtVorname.Text & vbNullString) > 0 Then strFilter = strFilter & " AND Vorname Like '" & Me!txtVorname.Text & "*'"
 Else
   If Not IsNull(Me!txtVorname.Value) Then strFilter = strFilter & " AND Vorname Like '" & Me!txtVorname.Value & "*'"
 End If

 If ctl.Name = "txtStraße" Then
   If Len(Me!txtStraße.Text & vbNullString) > 0 Then strFilter = strFilter & " AND Straße Like '" & Me!txtStraße.Text & "*'"
 Else
   If Not IsNull(Me!txtStraße.Value) Then strFilter = strFilter & " AND Straße Like '" & Me!txtStraße.Value & "*'"
 End If

 If ctl.Name = "txtOrt" Then
   If Len(Me!txtOrt.Text & vbNullString) > 0 Then strFilter = strFilter & " AND Ort Like '" & Me!txtOrt.Text & "*'"
 Else
   If Not IsNull(Me!txtOrt.Value) Then strFilter = strFilter & " AND Ort Like '" & Me!txtOrt.Value & "*'"
 End If

 If ctl.Name = "txtPLZ" Then
   If Len(Me!txtPLZ.Text & vbNullString) > 0 Then strFilter = strFilter & " AND PLZ Like '*" & Me!txtPLZ.Text & "*'"
 Else
   If Not IsNull(Me!txtPLZ.Value) Then strFilter = strFilter & " AND PLZ Like '*" & Me!txtPLZ.Value & "*'"
 End If

 If ctl.Name = "txtIdentNr" Then
   If Len(Me!txtIdentNr.Text & vbNullString) > 0 Then strFilter = strFilter & " AND IdentNr Like '*" & Me!txtIdentNr.Text & "*'"
 Else
   If Not IsNull(Me!txtIdentNr.Value) Then strFilter = strFilter & " AND IdentNr Like '*" & Me!txtIdentNr.Value & "*'"
 End If

 If ctl.Name = "txtSteuerNr" Then
   If Len(Me!txtSteuerNr.Text & vbNullString) > 0 Then strFilter = strFilter & " AND SteuerNr Like '*" & Me!SteuerNr.Text & "*'"
 Else
   If Not IsNull(Me!txtSteuerNr.Value) Then strFilter = strFilter & " AND SteuerNr Like '*" & Me!txtSteuerNr.Value & "*'"
 End If

 If ctl.Name = "txtKNR" Then
   If Len(Me!txtKNR.Text & vbNullString) > 0 Then strFilter = strFilter & " AND KNR Like '*" & Me!txtKNR.Text & "*'"
 Else
   If Not IsNull(Me!txtKNR.Value) Then strFilter = strFilter & " AND KNR Like '*" & Me!txtKNR.Value & "*'"
 End If

 If ctl.Name = "txtSVNr" Then
   If Len(Me!txtSVNr.Text & vbNullString) > 0 Then strFilter = strFilter & " AND SVNr Like '*" & Me!txtSVNr.Text & "*'"
 Else
   If Not IsNull(Me!txtSVNr.Value) Then strFilter = strFilter & " AND SVNr Like '*" & Me!txtSVNr.Value & "*'"
 End If

 'Die ersten 5 Zeichen des strFilter abschneiden
 strFilter = Mid(strFilter, 6)
 'Filter setzen
 Me.Filter = strFilter
 Me.FilterOn = True
 'Bei leerem Suchfeld geht der Fokus verloren, daher wieder setzen
 ctl.SetFocus
 'Cursor ans Ende des eingegeben Textes setzen (nach DonKarl FAQ 4.24)
 ctl.SelStart = Len("" & ctl)
 'Speicher freigeben
 Set ctl = Nothing
End Sub

Private Sub txtIdentNr_Change()
    Call FilterSetzen
End Sub

Private Sub txtKNR_Change()
    Call FilterSetzen
End Sub

Private Sub txtNachname_Change()
    Call FilterSetzen
End Sub

Private Sub txtOrt_Change()
    Call FilterSetzen
End Sub

Private Sub txtPLZ_Change()
    Call FilterSetzen
End Sub

Private Sub txtSteuerNr_Change()
    Call FilterSetzen
End Sub

Private Sub txtStraße_Change()
    Call FilterSetzen
End Sub

Private Sub txtSVNr_Change()
    Call FilterSetzen
End Sub

Private Sub txtVorname_Change()
    Call FilterSetzen
End Sub
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23297
Re: Gefilterter Datensats auf Formular soll in Exces exportiert werden.
« Antwort #1 am: Januar 15, 2018, 13:20:46 »
Hallo,

mit

DoCmd.OutputTo acOutputForm, Me.Name, acFormatXLS, "c:\Temp\Test.xls"

werden die im Form gefilterten Datensätze in eine Excel-Datei exportiert.

Offline Andreas_80

  • Newbie
  • Beiträge: 25
Re: Gefilterter Datensats auf Formular soll in Exces exportiert werden.
« Antwort #2 am: Januar 15, 2018, 13:58:01 »
Danke DF6GL,

soweit fuktioniert es auch. Allerdings nimmt Me.Name die Textfeldbezeichnung und die Spaltenbezeichnung.
Und exportiert diese. Siehe Anhang
Die Textfelder "txtVorname etc" sollten nicht mit exportiert werden. :-)
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23297
Re: Gefilterter Datensats auf Formular soll in Exces exportiert werden.
« Antwort #3 am: Januar 15, 2018, 14:06:29 »
Hallo,

naja, von diesen Sonderwünschen hast Du nicht erwähnt.

Es bleibt dann nur, eine Abfrage dynamisch zusammen zu stellen , die die nötigen Felder (evtl. mit Aliasnamen) selektiert und mit dem Filterkriterium des Forms als Where-Condition  (bzw. die Parameters-Section der Abfrage zu nutzen)  die gewünschten DS aus der Tabelle filtert.

Diese Abfrage kann dann mit Transferspreadsheet in eine xls-Datei exportiert werden.

Offline Andreas_80

  • Newbie
  • Beiträge: 25
Re: Gefilterter Datensats auf Formular soll in Exces exportiert werden.
« Antwort #4 am: Januar 15, 2018, 14:36:16 »
ooookay,
dann versuch ich mich mal damit. Danke dir.
 

Offline Andreas_80

  • Newbie
  • Beiträge: 25
Re: Gefilterter Datensats auf Formular soll in Exces exportiert werden.
« Antwort #5 am: Februar 09, 2018, 12:24:27 »
Hallo DF6GL,

habe mich jetzt wirklich lange mit der Thematik rum geschalgen und es leider nicht geschafft.

     DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12, "abf_Bearbeiten", _
        Application.CurrentProject.Path & "\DatenExport.xlsx", True

Mit dieser Methode bekomme ich folgenden Fehler: Zirkelbezug durch 'abf_Bearbeiten' verursacht.

wenn ich statt der Abfrage eine Tabelle nehme, funktioniert der Export.
deinen Vorschlag von oben konnte ich nicht umsetzen. :-(
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 7229
Re: Gefilterter Datensats auf Formular soll in Exces exportiert werden.
« Antwort #6 am: Februar 09, 2018, 12:30:18 »
Hallo,
Du hast ein berechnetes Feld wie ein Tabellenfeld benannt.

Der Fehler wird in der Abfrage verursacht, der oben gezeigte Code ist daher nebensächlich. Zeige besser die Abfrage (SQL).
Gruß
Klaus
 

Offline Andreas_80

  • Newbie
  • Beiträge: 25
Re: Gefilterter Datensats auf Formular soll in Exces exportiert werden.
« Antwort #7 am: Februar 09, 2018, 12:35:59 »
SELECT tbl_Master.Anrede, tbl_Master.Titel, tbl_Master.Vorname, tbl_Master.Nachname, tbl_Master.Name1, tbl_Master.Name2, tbl_Master.Straße, tbl_Master.PLZ, tbl_Master.Ort, tbl_Master.Geburtstag, tbl_Master.Telefon, tbl_Master.[E-Mail], tbl_Master.IdentNr, tbl_Master.SteuerNr, tbl_Master.KNR, tbl_Master.[SV-Nr], tbl_Master.[Dokumenten-Nr], tbl_Master.EHZ, tbl_Master.KNZ, tbl_Master.Bemerkungsfeld, tbl_Master.Status_ID, tbl_Status.Status, tbl_Master.AufSt_ID, tbl_Auftrag.Auftragsnr, tbl_Auftrag.Kammernr, tbl_Auftrag.Quartal, tbl_Auftrag.Dienstleistung
FROM tbl_Status INNER JOIN (tbl_Auftrag INNER JOIN (tbl_Auftragsstatus INNER JOIN tbl_Master ON tbl_Auftragsstatus.AufSt_ID = tbl_Master.AufSt_ID) ON tbl_Auftrag.Aufttrags_ID = tbl_Master.Auftrags_ID) ON tbl_Status.Status_ID = tbl_Master.Status_ID
ORDER BY tbl_Master.Vorname;

das ist die SQL-Abfrage
die aus zwei Tabellen die in einer 1:n Beziehung stehen erstellt wurde.
« Letzte Änderung: Februar 09, 2018, 13:00:58 von Andreas_80 »
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23297
Re: Gefilterter Datensats auf Formular soll in Exces exportiert werden.
« Antwort #8 am: Februar 09, 2018, 22:41:10 »
Hallo,

und bei dieser Abfrage kommt Fehlermeldung "Zirkelbezug"?

Ansonsten werden die Felder und die Überschriften auch nur genau so exportiert, wie sie im SQL-String auftauchen.  Wenn die Überschriften anders benannt werden sollen, müssen Alias-Namen verwendet werden.

Bist Du zudem sicher, alle diese Daten exportieren zu wollen?

Offline Andreas_80

  • Newbie
  • Beiträge: 25
Re: Gefilterter Datensats auf Formular soll in Exces exportiert werden.
« Antwort #9 am: Februar 12, 2018, 10:52:52 »
Hallo DF6GL,

genau so ist es, bei dieser Abfrage kommt die besagte Fehlermeldung.
Aiasnamen hatte ich versucht. Damit hat es auf funktioniert.
ja ich muss leider alle genannten spalten exportieren.
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23297
Re: Gefilterter Datensats auf Formular soll in Exces exportiert werden.
« Antwort #10 am: Februar 12, 2018, 11:14:27 »
Hallo,


ich sehe 4 Tabellen...

Zitat
ON tbl_Auftrag.Aufttrags_ID =

ist dies korrekt?

Was passiert, wenn die Abfrage im Abfrageentwurf ausgeführt wird?


Verzichte zudem auf Sonder- und Leerzeichen in Namen (hier speziell das Minus-Zeichen)

Auch möglich:  Transferspreadsheet, bzw. Excel kommt mit diesen Sonderzeichen in den Überschriften nicht klar.



Offline Andreas_80

  • Newbie
  • Beiträge: 25
Re: Gefilterter Datensats auf Formular soll in Exces exportiert werden.
« Antwort #11 am: Februar 12, 2018, 11:18:04 »
Alles klar, werde ich berückdichtigen.

ja es sind 4 Tabellen. ON tbl_Auftrag.Aufttrags_ID = das tt ist ein Tippfehler und wurde auch so überall übernommen. Sollte nicht daran liegen.