MS-Office-Forum
Google
   

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > Microsoft Access
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads Der Renner, 11 Entwicklertools für Access, Tipps & Trick und offene Datenbanken zum einzigartigen Preis.
Themen-Optionen Ansicht
Alt 09.02.2018, 14:49   #31
maikek
MOF Guru
MOF Guru
Standard

M, S und A sind Aliasnamen, damit das Ganze was kürzer und übersichtlicher ist. Die Abfrage hat den "echten" Namen im Hintergrund parat, im SQL-Statement gibt es den ja auch an der Stelle
Code:

... tbl_Auftrag AS A ...

Zitat:

in der tbl_Auftragsstatus sind 2 Spalten die ID und der Status. z.B Bearbeitet oder Offen oder Gelöscht.

Die benutzt du aber in der Abfrage überhaupt nicht, weder als Spalte noch als Kriterium.
Wenn die Abfrage beim Ausführen nicht meckert und die richtigen Daten anzeigt, dann bin ich ehrlich gesagt auch überfragt, warum das beim Export nicht klappt.
Teste doch einfach mal den Export der Abfrage nur mit einer Tabelle, dann mit zweien, dann ... , um herauszufinden, ab wann es knirscht.
maike

__________________

Bitte dein Thema auf erledigt setzen, wenn's durch ist!
MOF Access Stammtisch in Bremen
maikek ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.02.2018, 08:51   #32
Andreas_80
Threadstarter Threadstarter
MOF User
MOF User
Standard

Guten Morgen allerseits,

vielen Dank Maike für deine Mühe, Freitag war einfach schon zu viel für mich, hatte so viel im Kopf das ich nicht einmal mehr wusste wie ich an einem Windows PC den User wechseln kann... hahah

Stimmt in der Abfrage werde ich höchst wahrscheinlich die Tabelle Auftragsstatus gar nicht brauchen. Lag wohl daran das ich die Selbe Struktur für eine ähnliche Abfrage genutzt habe.
Ich werde es auch jeden fall mal so versuchen wie du es vorgeschlagen hast.

Allerdings bleibt noch eine Frage offen.
In den Formular das auf dieser Abfrage basiert habe ich einige Texfelder die als Suche dienen. Wenn ich zum Beispiel einen Buchstaben "M" ins Textfeld "txtVorname" eingebe werden mir alle Datensaätze Angezeigt bei denen der Vorname mit "M" beginnt. Nun sollen durch den "Export-Butten" auch nur die Datensätze exportiert werden die Angezeigt werden.

Nach dem ich deine Verbesserung der SQL-Abfrage eingepflegt hatte wurde mir immer der gesammte Datensatz ausgegeben. Egal ob ich nach etwas gesucht hatte oder nicht.
Ich denke das dafür etwas im VBA Code geändert werden muss.
Andreas_80 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.02.2018, 11:17   #33
maikek
MOF Guru
MOF Guru
Standard

Zitat:

In den Formular das auf dieser Abfrage basiert habe ich einige Texfelder die als Suche dienen. Wenn ich zum Beispiel einen Buchstaben "M" ins Textfeld "txtVorname" eingebe werden mir alle Datensaätze Angezeigt bei denen der Vorname mit "M" beginnt. Nun sollen durch den "Export-Butten" auch nur die Datensätze exportiert werden die Angezeigt werden.

Was passiert denn nach der Eingabe? Wird ein Filter gesetzt für das Formular? Oder hast du in der Abfrage noch Kriterien in der Art von "Wie Formulare!DeinFormular!txtVorname"?
Ich bin mir nicht sicher, ob letzteres beim Export berücksichtigt wird.
Vermutlich ist es das Beste, die Methode CopyFromRecordSet anzuwenden und auf die Art das (gefilterte) Formularrecordset zu exportieren.
Ein Codebeispiel findest du hier: http://www.ms-office-forum.de/forum/...d.php?t=260414
maike

__________________

Bitte dein Thema auf erledigt setzen, wenn's durch ist!
MOF Access Stammtisch in Bremen
maikek ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.02.2018, 13:46   #34
Andreas_80
Threadstarter Threadstarter
MOF User
MOF User
Standard

Ach schade Maike,

ich bekomm den Code aus deinem Link nicht zum laufen.
Ich habe auch kein Unterformular. Ich habe in der Abfrage nur ein Kriterium und das ist Sortieren beim namen aufsteigend...
Andreas_80 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.02.2018, 13:47   #35
Andreas_80
Threadstarter Threadstarter
MOF User
MOF User
Standard

Code:

Option Compare Database
Option Explicit



Private Sub cboStatus_Change()


    Status = Me.cboStatus
    Auftragsstatus = Me.cboAuftragsstatus
End Sub



Private Sub cmdImport_Click()
    Dim FSO As New FileSystemObject

        
    If Nz(Me.txtfilename, "") = "" Then
        MsgBox "Bitte Datei öffnen!"
        Exit Sub
    End If
    
    If FSO.FileExists(Nz(Me.txtfilename, "")) Then
        ExcelImport.ImportExcelSpreadsheet Me.txtfilename, FSO.GetFileName(Me.txtfilename)
    Else
        MsgBox "Eine Datei mit diesem Namen existiert nicht!"
    End If
    Me.txtfilename = ""
End Sub

Private Sub cmdÖffnen_Click()
    Me.txtfilename = DateiAuswaehlen
End Sub


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

Private Sub Bemerkungsfeld_DblClick(Cancel As Integer)
        Dim textfeld As TextBox
        Set textfeld = Me.ActiveControl
        uf_Bemerkungen.tb_Bemerkungen.Text = textfeld.Text
        uf_Bemerkungen.Show
        If uf_Bemerkungen.abbruch = False Then _
        textfeld.Text = uf_Bemerkungen.tb_Bemerkungen.Text
End Sub

Private Sub cmdExport_Click()



'    On Error GoTo Err_cmdExport_Click
'    Dim sSQL As String
'    Dim qdf As DAO.QueryDef
'
'    sSQL = "SELECT * " & "FROM " & Me.RecordSource & " WHERE " & Me.Filter
'    If Not QueryExists("DatenExport") Then
'        Set qdf = CurrentDb.CreateQueryDef("DatenExport", sSQL)
'      Else
'        CurrentDb.QueryDefs("DatenExport").SQL = sSQL
'    End If
'    DoCmd.OutputTo acOutputQuery, "DatenExport", acFormatXLS, , True
'    DoCmd.DeleteObject acQuery, "DatenExport"
'    MsgBox "Export erfolgreich!", vbInformation
'Exit_cmdExport_Click:
'    Exit Sub
'Err_cmdExport_Click:
'    DoCmd.DeleteObject acQuery, "DatenExport"
'    MsgBox "Das Überschreiben der bestehenden Datei ist fehlgeschlagen!" & _
'           vbCrLf & vbCrLf & "Bitte vergewissern Sie sich, dass kein " & _
'           "anderes Programm auf die Datei zugreift.", _
'           vbExclamation + vbOKOnly
'    Resume Exit_cmdExport_Click




'Const qry As String = "abf_Bearbeiten"
'Const myPath As String = "C:UsersbussDocuments"
'DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12, qry, True





End Sub

Private Sub cmdHauptmenü_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 = "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

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

 If ctl.Name = "txtKammernummer" Then
   If Len(Me!txtKammernummer.Text & vbNullString) > 0 Then strFilter = strFilter & " AND Kammernr Like '*" & Me!txtKammernummer.Text & "*'"
 Else
   If Not IsNull(Me!txtKammernummer.Value) Then strFilter = strFilter & " AND Kammernr Like '*" & Me!txtKammernummer.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 Markiert_Click()

End Sub

Private Sub txtAuftragsnummer_Change()
    Call FilterSetzen
End Sub

Private Sub txtIdentNr_Change()
    Call FilterSetzen
End Sub

Private Sub txtKammernummer_Change()
    Call FilterSetzen
End Sub

Private Sub txtKNR_Change()
    Call FilterSetzen
End Sub

Private Sub txtNachname_Change()
    Call FilterSetzen
End Sub

Private Sub txtSteuerNr_Change()
    Call FilterSetzen
End Sub

Private Sub txtSVNr_Change()
    Call FilterSetzen
End Sub

Private Sub txtVorname_Change()
    Call FilterSetzen
End Sub
Das ist mal mein Code mit den verschiedenen filter und allem anderen blödsinnigem zeug hahah
Andreas_80 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.02.2018, 13:48   #36
Andreas_80
Threadstarter Threadstarter
MOF User
MOF User
Standard

in der Auskommentierten Export-Funktion

mekert er immer bei dieser Zeile:

Code:

 DoCmd.DeleteObject acQuery, "DatenExport"
Andreas_80 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.02.2018, 13:48   #37
maikek
MOF Guru
MOF Guru
Standard

Zitat:

In den Formular das auf dieser Abfrage basiert habe ich einige Texfelder die als Suche dienen. Wenn ich zum Beispiel einen Buchstaben "M" ins Textfeld "txtVorname" eingebe werden mir alle Datensaätze Angezeigt bei denen der Vorname mit "M" beginnt. Nun sollen durch den "Export-Butten" auch nur die Datensätze exportiert werden die Angezeigt werden.

Zumindest hast du ja wohl ein Formular. Das hat auch ein Recordset, das sich exportieren lässt.
maike

__________________

Bitte dein Thema auf erledigt setzen, wenn's durch ist!
MOF Access Stammtisch in Bremen
maikek ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.02.2018, 13:54   #38
maikek
MOF Guru
MOF Guru
Standard

Code:

sSQL = "SELECT * " & "FROM " & Me.RecordSource & " WHERE " & Me.Filter
'...
'    DoCmd.DeleteObject acQuery, "DatenExport"
Heißt die Abfrage, die Grundlage des Formulars ist, möglicherweise ebenfalls "DatenExport"?

Was heißt "meckert er"? Normalerweise steht da mehr als ein "Mäh".

maike

__________________

Bitte dein Thema auf erledigt setzen, wenn's durch ist!
MOF Access Stammtisch in Bremen
maikek ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.02.2018, 14:34   #39
Andreas_80
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hi Maike,

nein die Abfrage heißt "abf_Bearbeiten" und das Formular "frm_Bearbeiten"
DatenExport heißt dann die exportierte bzw erstellte Excel-Datei.

Er meckert das er das Access Objekt "DatenExport" nicht finden kann.

zusätzlich habe ich im Modul noch folgenden Code:
Code:

Function QueryExists(queryName As String) As Boolean
    Dim myName As String
    On Error Resume Next
    myName = CurrentDb.QueryDefs(queryName).Name
    QueryExists = Not (myName = "")
End Function
Andreas_80 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.02.2018, 14:36   #40
Andreas_80
Threadstarter Threadstarter
MOF User
MOF User
Standard

mal funktionier der Export und beim zweiten mal dann wieder nicht.
Andreas_80 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.02.2018, 14:50   #41
maikek
MOF Guru
MOF Guru
Standard

Code:

Private Sub cmdExport_Click()
On Error GoTo Err_cmdExport_Click
Dim sSQL As String
Dim qdf As DAO.QueryDef

sSQL = "SELECT * FROM " & Me.RecordSource & " WHERE " & Me.Filter

Debug.Print sSQL 'Kontrolle im Direktfenster (Öffnen mit strg + g)

    If Not QueryExists("DatenExport") Then
        Set qdf = CurrentDb.CreateQueryDef("DatenExport", sSQL)
    Else
        CurrentDb.QueryDefs("DatenExport").SQL = sSQL
    End If

    DoCmd.OutputTo acOutputQuery, "DatenExport", acFormatXLS, , True
    DoCmd.DeleteObject acQuery, "DatenExport"
    MsgBox "Export erfolgreich!", vbInformation

Exit_cmdExport_Click:
    Exit Sub

Err_cmdExport_Click:
MsgBox Err.Number & " "  & Err.Description
If QueryExists("DatenExport") Then DoCmd.DeleteObject acQuery, "DatenExport"
MsgBox "Das Überschreiben der bestehenden Datei ist fehlgeschlagen!" & _
          vbCrLf & vbCrLf & "Bitte vergewissern Sie sich, dass kein " & _
          "anderes Programm auf die Datei zugreift.", _
          vbExclamation + vbOKOnly
Resume Exit_cmdExport_Click

End Sub
Ich hab' mal eine Kontrolle (Debug.Print) für den SQL-String eingefügt und das Löschen der Abfrage bei Fehler von ihrem Vorhandensein abhängig gemacht.
Probiers mal so.

maike

__________________

Bitte dein Thema auf erledigt setzen, wenn's durch ist!
MOF Access Stammtisch in Bremen
maikek ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.02.2018, 14:56   #42
maikek
MOF Guru
MOF Guru
Standard

Wo hast du denn diese Funktion her? Sollte die nicht alle Abfragen durchsuchen? Also so etwa:
Code:

Function QueryExists(queryName As String) As Boolean
On Error Resume Next
For each QueryDef in CurrentDb.QueryDefs
   If QueryDef.Name = queryName then 
      QueryExists = true
      Exit For
   End If
Next QueryDef
On Error goto 0   
End Function
maike

__________________

Bitte dein Thema auf erledigt setzen, wenn's durch ist!
MOF Access Stammtisch in Bremen
maikek ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.02.2018, 15:10   #43
Andreas_80
Threadstarter Threadstarter
MOF User
MOF User
Standard

Zitat:

Wo hast du denn diese Funktion her? Sollte die nicht alle Abfragen durchsuchen? Also so etwa:

Aus dem Internet, frag mich bitte nicht wo genau das hab ich vergessen.
Andreas_80 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.02.2018, 15:17   #44
Andreas_80
Threadstarter Threadstarter
MOF User
MOF User
Standard

Zitat:

MsgBox Err.Number & " " & Err.Description

hier kommt dann folgende Meldung: 3131 Syntaxfehler in FORM-Klausel
Danach kommt die Meldung aus der nächsten Msgbox: Das überschreiben der bestehenden...
Andreas_80 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.02.2018, 15:18   #45
Andreas_80
Threadstarter Threadstarter
MOF User
MOF User
Standard

ich bewundere deine Geduld Maike. :-)
Andreas_80 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:27 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2010 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günther Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.
Beachten Sie bitte auch unsere Nutzungsbedingungen.