Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Linschi am Juli 23, 2021, 15:21:17

Titel: Aus Abfrage die Datensätze in eine Excel übertragen
Beitrag von: Linschi am Juli 23, 2021, 15:21:17
Hi!

Ich will die Datensätze eine Abfrage in eine vorhanden Exceldatei kopieren.

Eine neue Excel zu erstellen funktioniert leider nicht weil die bedingten Formatierungen welche ich benötige verloren gehen.

Folgender VBA Code funktioniert zwar mit Tabellen innerhalb der DB aber leider nicht mit meiner Abfrage.

Worin liegt mein Fehler?

Code:

Private Sub Befehl3_Click()
    Dim xlApp As Object ' Excel.Application
    Dim xlBook As Object ' Excel.Workbook
    Dim xlSheet As Object ' Excel.Worksheet
    Dim rst As DAO.Recordset

    Set xlApp = CreateObject("Excel.Application")
    xlApp.Visible = True

Set xlBook = xlApp.Workbooks.Open("Pfad")
    Set xlSheet = xlBook.sheets("Tabellensheet")

    Set rst = CurrentDb.OpenRecordset("Abfrage")
 

xlSheet.Range("A2").CopyFromRecordset rst
    rst.Close
    Set rst = Nothing
    Set xlSheet = Nothing
    Set xlBook = Nothing
    Set xlApp = Nothing
End Sub

Eine Tabelle wird wie gewünscht in das Excelsheet nach A2 kopiert die Abfrage leider nicht.
Titel: Re: Aus Abfrage die Datensätze in eine Excel übertragen
Beitrag von: DF6GL am Juli 23, 2021, 17:05:48
Hallo,


zeige bitte mal den SQL-String der Abfrage..
Titel: Re: Aus Abfrage die Datensätze in eine Excel übertragen
Beitrag von: Linschi am Juli 28, 2021, 14:28:29
Hallo.

Die SQL Abfrage schaut folgender Maßen aus:

SELECT Tag0.DC_SN,
Tag0.PLC_METER_STATUS,
Tag0.ID,
Tag0.LIFECYCLE_STATUS,
Tag0.APPLICATION_FIRMWARE_VERSION,
Tag0.PARENT_INSTALLATION_POINT_ID,
DateDiff("d",DateValue(Format(Mid(Tag0.LAST_READING_DATE_LP2_24H,1,10),"yyyy-mm-dd")),Date()) AS Heute, DateDiff("d",DateValue(Format(Mid(Tag1.LAST_READING_DATE_LP2_24H,1,10),"yyyy-mm-dd")),Date()-1) AS Gestern, DateDiff("d",DateValue(Format(Mid(Tag2.LAST_READING_DATE_LP2_24H,1,10),"yyyy-mm-dd")),Date()-2) AS TagM2, DateDiff("d",DateValue(Format(Mid(Tag3.LAST_READING_DATE_LP2_24H,1,10),"yyyy-mm-dd")),Date()-3) AS TagM3, DateDiff("d",DateValue(Format(Mid(Tag4.LAST_READING_DATE_LP2_24H,1,10),"yyyy-mm-dd")),Date()-4) AS TagM4, DateDiff("d",DateValue(Format(Mid(Tag5.LAST_READING_DATE_LP2_24H,1,10),"yyyy-mm-dd")),Date()-5) AS TagM5, DateDiff("d",DateValue(Format(Mid(Tag6.LAST_READING_DATE_LP2_24H,1,10),"yyyy-mm-dd")),Date()-6) AS TagM6, MeterStatus.[LP Aktiv],
MeterStatus.[Gesperrt],
Tag0.LAST_READING_DATE_LP2_24H AS Tag0_LAST_READING_DATE_LP2_24H,
Tag1.LAST_READING_DATE_LP2_24H AS Tag1_LAST_READING_DATE_LP2_24H,
Tag2.LAST_READING_DATE_LP2_24H AS Tag2_LAST_READING_DATE_LP2_24H,
Tag3.LAST_READING_DATE_LP2_24H AS Tag3_LAST_READING_DATE_LP2_24H,
Tag4.LAST_READING_DATE_LP2_24H AS Tag4_LAST_READING_DATE_LP2_24H,
Tag5.LAST_READING_DATE_LP2_24H AS Tag5_LAST_READING_DATE_LP2_24H,
Tag6.LAST_READING_DATE_LP2_24H AS Tag6_LAST_READING_DATE_LP2_24H,
Tag0.REGION_GROUP_OR_SERVICE_CENTER_ID

FROM ((((((Tag0 LEFT JOIN Tag2 ON Tag0.[ID] = Tag2.[ID]) LEFT JOIN Tag3 ON Tag0.[ID] = Tag3.[ID]) LEFT JOIN Tag4 ON Tag0.[ID] = Tag4.[ID]) LEFT JOIN Tag5 ON Tag0.[ID] = Tag5.[ID]) LEFT JOIN Tag6 ON Tag0.[ID] = Tag6.[ID]) LEFT JOIN Tag1 ON Tag0.[ID] = Tag1.[ID]) LEFT JOIN MeterStatus ON Tag0.ID= MeterStatus.ID;


Es sind um Grunde 7 Tabellen welche kombiniert werden und 7 Spalten welche berechnet werden.
Titel: Re: Aus Abfrage die Datensätze in eine Excel übertragen
Beitrag von: DF6GL am Juli 28, 2021, 15:32:00
Hallo,

CopyFromRecordset dürfte die VBA-Funktionen in der Selectliste nicht auflösen könnten..


Was passiert, wenn Du lediglich Folgendes schreibst:
.
.
Tag0.LAST_READING_DATE_LP2_24H -Date() AS [Heute],
Tag1.LAST_READING_DATE_LP2_24H -Date() AS Gestern,

usw.
.

Welchen Datentyp haben diese Felder : LAST_READING_DATE_LP2_24H