Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Parameterabfrage - Parameter automatisieren und nach XLS exportieren

Begonnen von sumpfeule, September 09, 2024, 08:22:40

⏪ vorheriges - nächstes ⏩

sumpfeule

Parameterabfrage -> Parameter ,,automatisch" wählen und Ergebnisse nach XLS exportieren.
 
Hallo zusammen,
 
folgendes Problem.
 
Ich habe eine Abfrage, welche folgende (relevante) Felder und Gruppierungsmerkmale enthält:
 
Organisationseinheit (gruppiert) und Parameter WIE [Einheit eingeben]
Name (gruppiert)
Tätigkeit (gruppiert)
Aktenzeichen (Anzahl)
 
 
Die Felder Organisationseinheit und Name kommen aus einer Tabelle und Tätigkeit und Aktzeichen aus einer anderen. Verbunden alle über die (nicht angezeigte) ID des Mitarbeiters.
 
Als Ergebnis gibt es dann eine Tabelle, welche wie folgt aussieht
 
Org.-einheit / Name / Tätigkeit / (Anzahl Aktenzeichen) -> für jeden MA dieser Org.-einheit mehrere Einträge.
 
Diese Tabelle wird dann als XLS exportiert und den Leitern der jeweiligen Org.-einheit geschickt. Nur ich arbeite an der DB.
 
Diese Abfrage aber jetzt für jede Org.-einheit laufen zu lassen ist aufwändig – und ich würde das gern irgendwie automatisieren.
 
Kann ich daher eine Art Makro erstellen, welches
 
die Abfrage mit jedem möglichen Parameter (=Org.-einheit) durchführt (die Liste der möglichen Org.-einheiten könnte ich ja in eine andere Tabelle schreiben)
und diese dann als einzelne XLS wegspeichert oder per Mail an einen definierten Kreis (eine XLS = ein Empfänger) wegschickt?

Knobbi38

Hallo Sumpfeule,

hier ein Beispiel, wie man so etwas machen könnte. Anstatt einer "echten" Paramameter-Query wird hierbei eine Tempvar als Where-Condition verwendet, wodurch dann die Abfrage beeinflußt werden kann, z.B.
SELECT * FROM tblData WHERE ID = [TempVar]![SendID]
Der Code für das Versenden kann dann so ablaufen, wobei die Mailempfänger fest vorgegeben sind.
Sub SendXLSperMail()
  Dim rst As DAO.Recordset
  Dim vntTo As Variant
  Dim vntCC As Variant
 
  vntTo = "Annabelle_Six@outlook.ms"
  vntCC = "Kay_Berger@outlook.ms; Christine_Eggers@outlook.ms"
 
  Set rst = CurrentDb.OpenRecordset("SELECT ID FROM tblDemo")
 
  Do Until rst.EOF
   
    Debug.Print rst!ID, MailTo
   
    ' Assign the wherecondition for the query
    TempVars!SendID = rst!ID.Value
   
    ' Open the query and send the object to the recipient(s)
    DoCmd.SendObject acSendQuery, "qryDataByID", acFormatXLSX, _
    To:=vntTo, _
    CC:=vntCC, _
    Subject:="MySubject", _
    MessageText:="MyMessage", _
    EditMessage:=True
  Loop
 
  ' Close recorset and cleanup
  If Not rst Is Nothing Then rst.Close
  Set rst = Nothing
  TempVars.Remove "SendID"
End Sub
Die Datensätze werden hier über die ID selektiert und aus der tblDemo ausgelesen.
Das ist nur natürlich ein Beispiel und das mußt du noch an deine Wünsche anpassen.

Gruß Ulrich

sumpfeule

Hallo Ulrich,

danke für die Antwort! Ich vermute, obiges ist der SQL einer Abfrage und unteres ein VBA-Code (mit letzterem habe ich noch nicht gearbeitet - muss ich mich einfuchsen).

Ich schaue es mir morgen im Büro mal an und melde mich dann.

VG
Ronny