Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Exportieren von Daten ins Excel nach ID und Reiter, Auswählen spezieller Zeit

Begonnen von benjamin.grimm, September 12, 2013, 16:36:39

⏪ vorheriges - nächstes ⏩

benjamin.grimm

Hallo

ich würde gern Daten ins Excel exportieren und hierbei vorher eine spezielle Zeitzone angeben?

Ich habe schon folgenden Code. Wie geb ich das nun mit?

Private Sub Befehl1_Click()
    Dim xlApp As Object         'Excel.Application
    Dim xlBook As Object        'Excel.Workbook
    Dim xlSheet As Object       'Excel.Worksheet
    Dim rstID As DAO.Recordset, tmpStr As String
    Dim rstGr As DAO.Recordset, strSQL As String
    Dim startDate As Date, endDate As Date
   
    startDate = InputBox("Enter the START Date", "Enter a Date", Date())
    endDate = InputBox("Enter the END Date", "Enter a Date", Date())
   
    strSQL = "SELECT SuWID FROM Abfrage_alles GROUP BY SuWID;"
    Set rstID = CurrentDb.OpenRecordset(strSQL)
    If rstID.RecordCount > 0 Then
        Set xlApp = CreateObject("Excel.Application")
        xlApp.Visible = True
        Set xlBook = xlApp.Workbooks.Open("S:\Access\SuW\Excel-Tabellen\ID.xlsm")
        Do While Not rstID.EOF
 
           Set xlSheet = xlBook.Sheets("Tabelle " & rstID.Fields("SuWID"))
            xlSheet.Name = "ID" & rstID.Fields("SuWID")

            Set rstGr = CurrentDb.OpenRecordset("SELECT SAP, Geris, Pauschale, SuWID, Jahr_Y, BT_Name, SAP_Nummer, inception_date FROM Abfrage_alles WHERE ((SuWID = " & rstID.Fields("SuWID")) AND inception_date BETWEEN " & Format(startDate, "\#mm\/dd\/yyyy\#") & " AND " & Format(endDate, "\#mm\/dd\/yyyy\#") & ")")
            xlSheet.Range("A4").CopyFromRecordset rstGr
            rstGr.Close
            rstID.MoveNext
        Loop
    Else
        MsgBox "No information to export", vbInformation, "No data exported"
    End If
    rstID.Close
    Set rstID = Nothing
    Set xlSheet = Nothing
    Set xlBook = Nothing
    Set xlApp = Nothing
End Sub


greetz benjamin

daolix

Hallo
Was isn jetzt mit Zeitzone gemeint? Wo steht diese und WieUndWo willst du diese verarbeiten/weitergeben?

benjamin.grimm

Hi

es handelt sich um Verträge die zu unterschiedlichen Zeitzonen starten (ja ich weiß; hohl erklärt).

Es gibt halt Verträge die zu einer unterschiedlichen Zeit angelaufen sind.

Bsp.

SuWID      Vertragsbeginn

1                     12.12.2008

2                     01.05.2010

3                      03.06.2011

4                    05.06.2012

5                     13.05.2013

6                    17.08.2013

Nun möchte ich beispielsweise, als startdate den 01.01.2013 eingeben und als endate den 01.09.2013.

Ich möchte jetzt das er mir nur die Verträge mit der SuWID 5 und 6 anzeigt.

Grüße Benjamin

DF6GL

Hallo,

es ist vermutlich deshalb verwirrend, weil mit "Zeitzone" eher ein "Zeitpunkt" (Datum, Termin) gemeint ist...



und solches ist hier:
.
.
startDate = InputBox("Enter the START Date", "Enter a Date", Date())   
endDate = InputBox("Enter the END Date", "Enter a Date", Date())
.
.
....AND inception_date BETWEEN " & Format(startDate, "\#mm\/dd\/yyyy\#") & " AND " & Format(endDate, "\#mm\/dd\/yyyy\#") & ")")
.
.

doch schon implementiert...


Wo also ist das Problem?

benjamin.grimm

hey das probelm ist, das er bei dem between in der Zeile

inception_date BETWEEN " & Format(startDate, "\#mm\/dd\/yyyy\#") & " AND " & Format(endDate, "\#mm\/dd\/yyyy\#") & ")")

immer sagt Fehler beim Kompelieren.

An was liegt das ?

DF6GL

Hallo,


das könntest Du ja gleich am Anfang sagen....


Set rstGr = CurrentDb.OpenRecordset("SELECT SAP, Geris, Pauschale, SuWID, Jahr_Y, BT_Name, SAP_Nummer, inception_date FROM Abfrage_alles WHERE SuWID = " & rstID.Fields("SuWID") & " AND inception_date BETWEEN " & Format(startDate, "\#mm\/dd\/yyyy\#") & " AND " & Format(endDate, "\#mm\/dd\/yyyy\#") & ")")

benjamin.grimm

hi,

danke für deine Hilfe,

ich bekomme, aber leider immer noch einen Fehler.

Ich habe noch inception_date in Vertragsbeginn umbenannt und die amerikanische Datumsdarstellung verwendet.

Es tritt folgender Fehler auf:

Laufzeitfehler 3075 :

Überzählig: ) in Abfrageausdruck SuWID = 2 and vertragsbeginn between #2000-01-01# and # 2013-09-16#)

Private Sub Befehl2_Click()

   Dim xlApp As Object         'Excel.Application
   Dim xlBook As Object        'Excel.Workbook
   Dim xlSheet As Object       'Excel.Worksheet
   Dim rstID As DAO.Recordset, tmpStr As String
   Dim rstGr As DAO.Recordset, strSQL As String
   Dim startdate As Date, enddate As Date
   
   startdate = InputBox("Enter the START Date", "Enter a Date", Date)
   enddate = InputBox("Enter the END Date", "Enter a Date", Date)
   
   strSQL = "SELECT SuWID FROM Abfrage_alles GROUP BY SuWID;"
   Set rstID = CurrentDb.OpenRecordset(strSQL)
   If rstID.RecordCount > 0 Then
       Set xlApp = CreateObject("Excel.Application")
       xlApp.Visible = True
       Set xlBook = xlApp.Workbooks.Open("S:\Access\SuW\Excel-Tabellen\ID.xlsm")
       Do While Not rstID.EOF
 
          Set xlSheet = xlBook.Sheets("Tabelle " & rstID.Fields("SuWID"))
           xlSheet.Name = "ID" & rstID.Fields("SuWID")

[size=10pt][size=10pt][color=blue][b]Set rstGr = CurrentDb.OpenRecordset("SELECT SAP, Geris, Pauschale, SuWID, Jahr_Y, BT_Name, SAP_Nummer, Vertragsbeginn, Vertragsende FROM Abfrage_alles WHERE SuWID = " & rstID.Fields("SuWID") & " AND Vertragsbeginn BETWEEN " & Format(startdate, "\#yyyy\-mm\-dd\#") & " AND " & Format(enddate, "\#yyyy\-mm\-dd\#") & ")")[/b][/color][/size][/size]
           xlSheet.Range("A4").CopyFromRecordset rstGr
           rstGr.Close
           rstID.MoveNext
       Loop
   Else
       MsgBox "No information to export", vbInformation, "No data exported"
   End If
   rstID.Close
   Set rstID = Nothing
   Set xlSheet = Nothing
   Set xlBook = Nothing
   Set xlApp = Nothing
End Sub

DF6GL

Hallo,

die Fehlermeldung sagt es doch:

Eine Klammer ist zuviel:

SuWID = 2 and vertragsbeginn between #2000-01-01# and # 2013-09-16#)



...& " AND " & Format(enddate, "\#yyyy\-mm\-dd\#")  & ")"     )

benjamin.grimm

Ja super. Vielen Dank


Das klappt schon mal perfekt.

Es werden jetzt keine Daten mehr ans Access übertragen.

Er überträgt aber immer noch die Informationen den Namen des Worksheets zu ändern.



benjamin.grimm

Wie kann ich verhindern das er den Namen an die Reiter im Excel weitergibt?

bahasu

Hi,

Zitat von: benjamin.grimm am September 18, 2013, 09:59:45
Wie kann ich verhindern das er den Namen an die Reiter im Excel weitergibt?

was passiert, wenn Du die Zeile

' xlSheet.Name = "ID" & rstID.Fields("SuWID")

deaktivierst?

Harald
Servus

benjamin.grimm

Hi danke für deine Antwort.


Es soll ja nur deaktiviert werden, falls der vertragsbeginn nicht in der eingegebenen Zeit liegt :)

??? ???

bahasu

Hi,

mal ins Blaue formuliert:
Set rstGr = CurrentDb.OpenRecordset("SELECT SAP, Geris, Pauschale, SuWID, Jahr_Y, BT_Name, SAP_Nummer, Vertragsbeginn, Vertragsende FROM Abfrage_alles WHERE SuWID = " & rstID.Fields("SuWID") & " AND Vertragsbeginn BETWEEN " & Format(startdate, "\#yyyy\-mm\-dd\#") & " AND " & Format(enddate, "\#yyyy\-mm\-dd\#")")
if rstGr.recordcount > 0 then
           xlSheet.Name = "ID" & rstID.Fields("SuWID")
           xlSheet.Range("A4").CopyFromRecordset rstGr
end if


Harald
Servus