Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: luana am Juni 29, 2017, 10:22:31

Titel: Gefilterte Tabellen aus Query als CSV Exportieren
Beitrag von: luana am Juni 29, 2017, 10:22:31
Hallo, ich bin neu hier habe leider keinerlei Erfahrung mit VBA und versuche mich nun für ein Projekt an diese Sache. (wurde ins eiskalte Wasser geschmissen)

Ich schildere mal mein Ziel:
Ich habe eine Abfrage in Access erstellt, mit der ich alle Tabellen aus der aktuellen DB anzeige.
Die Tabellen die nicht angezeigt werden sollen starten mit "CST-". Diesen Selektion habe ich natürlich hinbekommen.
Nun möchte ich über VBA (mittels Button in einer FORM) alle selektierten Tabellen aus dem query (also alle Tabellen die nicht "CST-*" sind) als CSV exportieren.
Der Export für ALLE tabellen gelingt mir, jedoch nicht für die Selektion.

mein Code

Private Sub Command0_Click()
     Dim AktTable As TableDef
   Dim i As Integer
     
     i = 0

     For Each AktTable In CurrentDb.TableDefs
       
         If AktTable.Attributes = 0 Then
             DoCmd.TransferText acExportDelim, acFormat, _
                                       AktTable.Name, _
                                       "C:\" & AktTable.Name & ".csv", True, ""
                                       i = i + 1
         End If
    Next AktTable
     MsgBox (i & "CSV's " & "created")
End Sub


Die Suchfunktion war nicht so erfolgreich. Ich hoffe ihr könnt mir helfen :([/size][/size]
Titel: Re: Gefilterte Tabellen aus Query als CSV Exportieren
Beitrag von: Lachtaube am Juni 29, 2017, 10:50:21
Du kannst die Name-Eigenschaft vom TableDef-Objekt auswerten.

If Left$(AktTable.Name, 4) <> "CST-" Then 'exportiere

PS: Warum verwendest Du Minuszeichen (-) in Tabellennamen?
Titel: Re: Gefilterte Tabellen aus Query als CSV Exportieren
Beitrag von: luana am Juni 29, 2017, 11:09:25
danke dir für die Antwort. ich werde das mal schnell versuchen.
Die Datenbank wurde vor 5 Monaten von einem erstellt, der bald das Unternehmen verlässt. Somit muss ich erstmal alles so nehmen wie es ist.
Titel: Re: Gefilterte Tabellen aus Query als CSV Exportieren
Beitrag von: luana am Juni 29, 2017, 12:29:34
Danke dir vielmals, das hat wunderbar funktioniert.

Nun möchte ich den nächsten Schritt machen und über Button alle Löschabfragen , die auch "delete records" heißen starten.
ich habe soeben rausgefunden, dass es passend zu TableDefs auch QueryDefs gibt. kann man da auch die einzelnen
Namen ansprechen?
..
Dim qry As QueryDef
   ..
If Left$(Qry.Name,14) <> "Delete records " Then 
DoCmd.OpenQuery Qry.Name, acViewNormal, acEdit

?? geht sowas?.. Wenn ich das versuche, dann meckert er :(

(sorry Leute, ich habe von Programmierung keinerlei Ahnung und kämpfe mich nun seit vorgestern damit herum. Dementsprechend bin ich ein absoluter nichtskönner und werde mich über das wochenende reinknien. danke für euer verständnis)
Titel: Re: Gefilterte Tabellen aus Query als CSV Exportieren
Beitrag von: DF6GL am Juni 29, 2017, 14:00:34
Hallo,


Aktionsabfragen  (delete, drop, Insert, Update) müssen mit

Docmd RunSQl   ....

oder Currentdb.Execute  ....

ausgeführt werden.
Titel: Re: Gefilterte Tabellen aus Query als CSV Exportieren
Beitrag von: luana am Juli 05, 2017, 09:26:13
Hi Leute,
da ich jetzt erst aus dem Kurzurlaub zurück bin konnte ich nicht früher antworten. Danke euch auf jeden Fall.
Ich habe das ganze etwas abgeändert und exportiere nun (auch) alle Abfrageergebnisse als CSV.
Zuvor Schreibe ich alle benötigten Abfragen in einer Extra Tabelle "table_chris".

Hier der Code - vllt nicht der schönste, aber er scheint zu funktionieren lol.


Public Sub Command23_Click()

        Dim AktQry As QueryDef
        Dim db As DAO.Database
        Dim rst As DAO.Recordset
        Set db = Application.CurrentDb
        Set rst = db.OpenRecordset("table_Chris")
         Dim AppShell As Object
     Dim BrowseDir As Variant
     Dim Pfad As String
       
Set AppShell = CreateObject("Shell.Application")
     Set BrowseDir = AppShell.BrowseForFolder(0, "Ordner auswählen", &H1000, 17)
     On Error Resume Next
     Pfad = BrowseDir.items().Item().Path
     If Pfad = "" Then Exit Sub
     MsgBox Pfad
     On Error GoTo 0
     
     Do While Not rst.EOF
       
       
        'DoCmd.TransferText acExportDelim, acFormat, _
                                       rst!QryName, _
                                       Pfad & "\" & rst!QryOutput & ".csv", True, ""
       
       
         rst.MoveNext
   
     Loop


End Sub


Titel: Re: Gefilterte Tabellen aus Query als CSV Exportieren
Beitrag von: luana am Juli 05, 2017, 10:13:49
ich bräuchte nochmal eure hilfe.

angenommen, bei der obigen schleife kommt heraus, dass eine abfrage nicht funktioniert (name falsch whatever).
gibt es da eine möglichkeit den fehler zu überspringen, zum nächsten zu gehen aber die fehler alle am ende aufzuzählen? wenn ja, wie macht man sowas?
Titel: Re: Gefilterte Tabellen aus Query als CSV Exportieren
Beitrag von: DF6GL am Juli 05, 2017, 10:48:35
Hallo,

möglich ist das schon, das muss aber selber ausprogrammiert werden.

Aber wozu denn?  Auftretende (Entwicklungs-) Fehler sind sofort zu eliminieren und nicht erst nach Feierabend...  ;)


Laufzeitfehler können natürlich in z. B. einer Tabelle geloggt werden.  Inwieweit bei solchen Fehlern ein weiterer Codeablauf sinnvoll ist, kann ich nicht beantworten.



Schon mal was von "Folgefehlern" gehört?

Titel: Re: Gefilterte Tabellen aus Query als CSV Exportieren
Beitrag von: luana am Juli 05, 2017, 10:59:02
Hi,
danke für deine schnelle Antwort.
Ich habe keine bis kaum keine Kenntnisse in der Programmierung und versuche mich so schnell wie möglich einzuarbeiten, daher seid bitte nachsichtig mit mir lol

Weshalb ich die Fehler "aufzählen"  und am Ende zusammen aufgelistet ausgeben möchte hat folgenden Hintergrund.

Die Datenbank beinhaltet ca. 90 Queries und einige davon funktionieren nicht.
Da ich aber faul bin, möchte ich nicht jeden einzelne Abfrage manuell aufrufen um zu schauen obs ausgeführt wird.
Titel: Re: Gefilterte Tabellen aus Query als CSV Exportieren
Beitrag von: DF6GL am Juli 05, 2017, 11:09:29
Hallo,


ZitatDa ich aber faul bin


Faulheit erzeugt lediglich exponentiellen Arbeitsaufwand...  bringt also nichts.


Wirf "On Error GoTo 0"   heraus und schon läuft der Code durch, ohne Rücksicht auf Verluste...

Am Ergebnis (den erzeugten csv-Dateien) sieht Du ja, welche funktionieren (und damit, welche nicht)
Titel: Re: Gefilterte Tabellen aus Query als CSV Exportieren
Beitrag von: luana am Juli 05, 2017, 11:14:16
Danke, hilft mir nicht weiter :)
Ich denke, dass in diesem Fall faulheit keine Arbeit erzeugt, sondern in der Zukunft Zeit spart.

Danke dir trotzdem :)
Titel: Re: Gefilterte Tabellen aus Query als CSV Exportieren
Beitrag von: Lachtaube am Juli 05, 2017, 11:35:20
Luana, kommt Dir dieser Code entgegen?

Private Sub Command23_Click()

   Dim Pfad As String, q() As String, i As Long

   Pfad = CreateObject("Shell.Application") _
          .BrowseForFolder(0, "Ordner auswählen", &H1000, 17) _
          .Items().Item().Path()
         
   If Len(Pfad) = 0 Then Exit Sub
   
   'MsgBox Pfad

   On Error Resume Next

   With CurrentDb.OpenRecordset("table_Chris", dbOpenSnapshot)

      ' ggf. Kommentar entfernen
      '.MoveLast
      '.MoveFirst

      ReDim q(.RecordCount - 1)

      Do Until .EOF

         DoCmd.TransferText acExportDelim, acFormat, _
                            !QryName, _
                            Pfad & "\" & !QryOutput & ".csv", True
         If Err Then s(i) = !QryName: i = i + 1
         .MoveNext
      Loop
      .Close
   End With

   If i > 0 Then
      ReDim Preserve q(i - 1)
      MsgBox Join(s, vbCrLf), , "Fehlerhafte Abfragen"
   End If

End Sub
Titel: Re: Gefilterte Tabellen aus Query als CSV Exportieren
Beitrag von: luana am Juli 05, 2017, 12:02:40
vielen dank!
das hilft mir auf jeden fall weiter. Krass, wenn ich das gewusst hätte.

danke dir vielmals

ich glaube da war ein kleiner Fehler vorhanden

If Err Then [b]q(i)[/b] = !QryName: i = i + 1
Titel: Re: Gefilterte Tabellen aus Query als CSV Exportieren
Beitrag von: Lachtaube am Juli 05, 2017, 12:09:35
Gut mitgedacht. :)
Titel: Re: Gefilterte Tabellen aus Query als CSV Exportieren
Beitrag von: luana am Juli 05, 2017, 12:15:13
danke,

ach und unten auch      MsgBox Join(q, vbCrLf), , "Fehlerhafte Abfragen"

ich danke euch allen nochmal.
ich habe irgendwie nun Interesse an Programmierung gefunden und werde ab dem 12.07 definitive mit paar tutorials starten :)
Titel: Re: Gefilterte Tabellen aus Query als CSV Exportieren
Beitrag von: luana am Juli 06, 2017, 11:52:51
Sorry, dass ich das thema nochmal aufmachen muss.

Ich habe gesehen, dass mein vorgänger Abfragen mit Tabellenalias gebastelt hat.
Diese lassen sich irgendwie nur manuell exportieren. Woran könnte das liegen, dass es über den code nicht funktioniert?

google spuckt da leider relative wenig raus
Titel: Re: Gefilterte Tabellen aus Query als CSV Exportieren
Beitrag von: Lachtaube am Juli 06, 2017, 12:23:49
Dann entferne doch einmal die Aliase aus einer solchen Abfrage, um sicherzustellen, dass Deine Annahme richtig ist.