Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Variable Anzahl von Feldern im Bericht
zurück: SQL-String erzeugen: ... man muß sich bloß zu helfen wissen weiter: Bezug auf Formular/Unterformular Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Tutorial Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Willi Wipp
Moderator


Verfasst am:
07. Aug 2004, 13:26
Rufname:
Wohnort: Raum Wiesbaden

Variable Anzahl von Feldern im Bericht - Variable Anzahl von Feldern im Bericht

Nach oben
       

Hi Folks,

es kommt vor, dass man die Anzahl der Felder in einem Bericht (auch Formular) variabel haben moechte.
Einen moeglichen Loesungsansatz moechte ich hier kurz vorstellen:

Man erstellt eine Rumpfabfrage z.B. DeineAbfrage mit allen in Frage kommenden Feldern.

Dann erstellt man ein Formular mit einer entsprechenden Anzahl von Kontrollkaestchen z.B. JnDeineId, JnDeineZahl, ...
Auf dem Formular erstellt man eine Befehlsschaltflaeche z.b. BtnDoIt.
Fuer BtnDoIt setzt man bei dem Ereignis Beim Klicken (Click) den Wert [Ereignisprozedur] ([Event Procedure]).
In dieser Prozedur prueft man die Kontrollkaestchen und baut den entsprechenden SQL-Code auf.
Dann aendert man den SQL-Code der Abfrage ueber die Auflistung Querydefs und die Eigenschaft SQL.
Danach oeffnet man den Bericht.
Code:
' Menue: Extras -> Verweise Microsoft DAO 3.xx Object Library muss aktiv sein!
Option Compare Database
Option Explicit

Private Sub Report_Open(Cancel As Integer)
    Dim lAktuell    As Long
    Dim lAnzahl     As Long
    Dim lBreite     As Long
    Dim db          As DAO.Database
    Dim rs          As DAO.Recordset
    Dim fld         As DAO.Field
   
    Set db = CurrentDb
    Set rs = db.OpenRecordset(Me.RecordSource)
    lAktuell& = 0
    lAnzahl& = rs.Fields.Count
    lBreite& = 8000 / lAnzahl& 'Passt ungefaehr fuer Hochformat
    For Each fld In rs.Fields
        With Me("Feld" & lAktuell&)
            .ControlSource = fld.Name
            .Width = lBreite&
            .Left = (lBreite& + 150) * lAktuell&
            .Visible = True
        End With
        With Me("Feld" & lAktuell& & "_lbl")
            .Caption = fld.Name
            .Width = lBreite&
            .Left = (lBreite& + 150) * lAktuell&
            .Visible = True
        End With
        lAktuell& = lAktuell& + 1
    Next fld
    Set fld = Nothing
    rs.Close
    Set rs = Nothing
    Set db = Nothing
End Sub
Dann erstellt man einen Bericht (Tabellarisch) mit DeineAbfrage als Datenherkunft (RecordSource).
Danach setzt man als Feldnamen Feld0, Feld1, Feld2, ...
Die entsprechenden Bezeichnungsfelder nennt man Feld0_lbl, Feld1_lbl, ...
Fuer die Felder setzt man die Eigenschaft Vergroesserbar (CanCrow) auf Ja (True).
Fuer alle Felder und Bezeichnungsfelder setzt man die Eigenschaft Sichtbar (Visible) auf Nein (False).
Fuer das Bericht-Ereignis Beim Oeffnen Oeffnen waehlt man [Ereignisprozedur] ([Event Procedure]).
In dieser Prozedur oeffnet man die Abfrage und prueft die Anzahl der Felder und berechnet die Feldbreite.
Dann setzt man fuer die Felder die Eigenschaft Steuerelementinhalt (ControlSource),
Breite (Width), Links (Left) und Sichtbar (Visible).
Fuer die Bezeichnungsfelder setzt man die Eigenschaft Caption (Bezeichnung),
Breite (Width), Links (Left) und Sichtbar (Visible).
Code:
' Menue: Extras -> Verweise Microsoft DAO 3.xx Object Library muss aktiv sein!
Option Compare Database
Option Explicit

Private Sub BtnDoIt_Click()
    Dim sSQL    As String
    Dim db      As DAO.Database
   
    ' Auswahl der darzustellenden Felder
    If Me!JnDeineId Then sSQL$ = sSQL$ & "DeineId AS [Deine ID], "
    If Me!JnDeinDatum Then sSQL$ = sSQL$ & "DeinDatum AS [Dein Datum], "
    If Me!JnDeineZahl Then sSQL$ = sSQL$ & "DeineZahl AS [Deine Zahl], "
    If Me!JnDeinText Then sSQL$ = sSQL$ & "DeinText AS [Dein Text], "
    If Me!JnDeinMemo Then sSQL$ = sSQL$ & "DeinMemo AS [Dein Memo], "
    If sSQL$ = "" Then
        MsgBox "Es muss mindestens ein Feld ausgewählt sein!", _
               vbExclamation, "Feld auswählen!"
      Else
        ' SQL-Code fertigstellen und der Abfrage zuweisen
        sSQL$ = "SELECT " & Left$(sSQL$, Len(sSQL$) - 2) & _
               " FROM   DeineTabelle"
        Set db = CurrentDb
        db.QueryDefs("DeineAbfrage").SQL = sSQL$
        Set db = Nothing
        ' Bericht oeffnen
        DoCmd.OpenReport "DeinBericht", acViewPreview
        DoCmd.Close acForm, Me.Name
        DoCmd.Maximize
        DoCmd.RunCommand acCmdFitToWindow
    End If
End Sub
Man kann das Beispiel natuerlich beliebig erweitern und noch andere Eigenschaften der Felder setzen.
Hier wurde eine einheitliche Breite gewaehlt.

_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)


Zuletzt bearbeitet von Willi Wipp am 28. Sep 2012, 06:21, insgesamt 6-mal bearbeitet
Willi Wipp
Moderator


Verfasst am:
07. Aug 2004, 13:33
Rufname:
Wohnort: Raum Wiesbaden


Beispiel-DB: Variable Anzahl von Feldern im Bericht - Beispiel-DB: Variable Anzahl von Feldern im Bericht

Nach oben
       

Beispiel-Datenbank (A97)
_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)



Variable_Anzahl_Von_Feldern_Im_Bericht.zip
 Beschreibung:
Kleine Beispiel-Datenbank fuer Variable Anzahl von Feldern im Bericht

Download
 Dateiname:  Variable_Anzahl_Von_Feldern_Im_Bericht.zip
 Dateigröße:  28.32 KB
 Heruntergeladen:  958 mal

JoachimG
Accessverdreher


Verfasst am:
22. Jan 2008, 15:22
Rufname:
Wohnort: Hamburg

AW: Variable Anzahl von Feldern im Bericht - AW: Variable Anzahl von Feldern im Bericht

Nach oben
       

Hallo Willi Wipp,

zunächst einmal: Großartig! Very Happy
Ich bastele Deine Vorlage gerade für meine Anwendung nach, etwas komplexer leider, weil mein Chef so gerne noch Operatoren wie <, >, =, "enthält" usw. aus Kombinationsfelder auswählen möchte und dann unbedingt Textfelder braucht, in die er Filter eingeben kann Rolling Eyes , aber es funktioniert!
Aber eine Frage(zwei) hätte ich noch, als vba-Analphabet:
Du schreibst in Deinem Code
Code:
    If Me!JnDeineId Then sSQL$...
' bzw.
    lAktuell& = 0
Welche Funktion haben hier "$" bzw. "&"?
Vielen Dank

_________________
Feedback ist toll Very Happy
Gruß Joachim
Willi Wipp
Moderator


Verfasst am:
22. Jan 2008, 16:06
Rufname:
Wohnort: Raum Wiesbaden


Re: Beispiel-DB: Variable Anzahl von Feldern im Bericht (II) - Re: Beispiel-DB: Variable Anzahl von Feldern im Bericht (II)

Nach oben
       

Hi JoachimG,

dabei handelt es sich um veraltete (aber immer noch zulaessige) Kennzeichnungen fuer den Variablentyp.
$ ==> String / & ==> Long / ...

Bitte Nachfragen zu diesem Thema im Forum Access Programmierung / VBA
beim Thema Variable Anzahl von Feldern im Bericht (Nachgefragt) stellen.

_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: Anzahl der aktuellen Tage von Lebensjahren berechnen 2 grosseblaueaugen 5448 07. Sep 2005, 11:56
grosseblaueaugen Anzahl der aktuellen Tage von Lebensjahren berechnen
Keine neuen Beiträge Access Tabellen & Abfragen: DB Neuorganisation mit Auslagerung von Feldern / Bezeihungen 5 Katja2 483 25. Jul 2005, 16:41
Thunderbird DB Neuorganisation mit Auslagerung von Feldern / Bezeihungen
Keine neuen Beiträge Access Tabellen & Abfragen: Problem beim Bericht oeffnen, wenn Parameter von Formular 11 Gast1 994 21. Jul 2005, 15:28
Nindigo Problem beim Bericht oeffnen, wenn Parameter von Formular
Keine neuen Beiträge Access Tabellen & Abfragen: im Bericht werden "falsche" Daten angezeigt 19 Sonic 1598 07. Jun 2005, 08:14
Sonic im Bericht werden "falsche" Daten angezeigt
Keine neuen Beiträge Access Tabellen & Abfragen: Bericht über best. Zeitraum erstellen 22 JensS 2815 25. Mai 2005, 15:38
mapet Bericht über best. Zeitraum erstellen
Keine neuen Beiträge Access Tabellen & Abfragen: Anzahl der Datensätze zählen (im Formular oder Bericht) ? 3 anna-bolika 3757 31. März 2005, 12:50
Dalmatinchen Anzahl der Datensätze zählen (im Formular oder Bericht) ?
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage und Bericht, einzelne Datensätze filtern 1 Jens 669 10. März 2005, 15:22
Jens Abfrage und Bericht, einzelne Datensätze filtern
Keine neuen Beiträge Access Tabellen & Abfragen: Zeichenfolge in Text suchen und Anzahl ermitteln 3 Phantom 1277 06. März 2005, 09:28
stpimi Zeichenfolge in Text suchen und Anzahl ermitteln
Keine neuen Beiträge Access Tabellen & Abfragen: Feld aus n Records in n Feldern eines Records zusammenfassen 0 frank58 589 31. Dez 2004, 12:05
frank58 Feld aus n Records in n Feldern eines Records zusammenfassen
Keine neuen Beiträge Access Tabellen & Abfragen: Ermitteln Anzahl der Arbeitstage eines Monates 4 schnecke 5033 01. Dez 2004, 11:58
schnecke Ermitteln Anzahl der Arbeitstage eines Monates
Keine neuen Beiträge Access Tabellen & Abfragen: Anzahl der Datensätze anzeigen? 3 MichaelB 1123 19. Okt 2004, 12:45
lothi Anzahl der Datensätze anzeigen?
Keine neuen Beiträge Access Tabellen & Abfragen: variable Spalte in Abfrage anzeigen -abhängig vom Tagesdatum 1 Lars 1194 10. Sep 2004, 13:54
Lars variable Spalte in Abfrage anzeigen -abhängig vom Tagesdatum
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Microsoft-Excel Diagramme