MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > Microsoft Access
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 09.10.2018, 11:57   #1
Bebbie
MOF User
MOF User
Standard Acc2010 - Felder in Bericht per VBA verschieben

Hallo zusammen,

ich plane über Access Berichte Angebote anhand vorher ausgewählter Optionen automatisiert zu erstellen.
Was ich soweit hinbekomme ist, dass unterschiedliche Textblöcke bei Bedarf ein- oder ausgeblendet werden.

Jetzt könnte es theoretisch vorkommen, dass je nach Auswahl mehr oder weniger Textfelder benötigt werden.
D.h. ich müsste das Formularlayout so groß machen, dass die maximale Anzahl an Feldern darauf passst.
Wenn jetzt Felder ausgeblendet sind, habe ich auf der Seite aber einen leeren bereich.

Ist es irgendwie per VBA möglich, zu sagen: "Wähle aus den Textfeldern A - Z Textfelder A, B und R und füge diese untereinander im Bericht an."

Vielen Dank.
Bebbie ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.10.2018, 12:00   #2
gpswanderer
MOF Guru
MOF Guru
Standard

Hallo,

Zitat:

Jetzt könnte es theoretisch vorkommen, dass je nach Auswahl mehr oder weniger Textfelder benötigt werden.

da würde ich eher über das Datenmodell nachdenken.
In einer korrekt aufgebauten Datenbank sollte so etwas nicht notwendig sein.

Was sind denn das für Felder die da ein bzw. ausgeblendet werden müssen?

__________________

Gruß
Klaus
Office2016, Win10
gpswanderer ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.10.2018, 12:10   #3
maikek
MOF Guru
MOF Guru
Standard

Moin,
vorausgesetzt das Datenmodell stimmt, kannst du vielleicht mit Standard-Unterberichten arbeiten, die je nach Bedarf ein oder ausgeblendet sind.
maike

__________________

Bitte dein Thema auf erledigt setzen, wenn's durch ist!
MOF Access Stammtisch in Bremen
maikek ist gerade online  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.10.2018, 12:12   #4
Nouba
MOF Guru
MOF Guru
Standard

Dann musst Du halt die Steuerelemente, die alle eine Move()-Methode besitzen, z.B. mit dieser Methode verschieben. Wo ist das Problem?
Nouba ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.10.2018, 13:27   #5
Bebbie
Threadstarter Threadstarter
MOF User
MOF User
Standard

@gpswanderer:
Das hat mit dem Aufbau der Datenbank eher weniger zu tun. Ich konkretisiere mal ein bisschen.
Mein Bericht hat diverse fixe felder im oberen und unteren Seitenbereich.
Im Formular kann ich wählen, ob ein Miet- oder ein Kaufangebot erstellt werden soll. Abhängig davon werden unterschiedliche Textfelder angezeigt, weil der Angebotstext unterschiedlich ist.
Zusätzlich können noch Zusatzpositionen gewählt werden, die wiederum weitere Textfelder einblenden.
Diese sind aber eben nicht immer vorhanden, sodass ggf. leerer Platz im Bericht vorhanden ist.

@Nouba: Von der Move() Methode habe ich noch nichts gehört. Da muss ich mich mal einlesen, ob mir das hilft, wenn ich dazu komme, weiter zu tüfteln.
Bebbie ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.10.2018, 17:04   #6
Michael O.
MOF User
MOF User
Standard

Hallo Bebbie,

Du kannst die Felder mit Ihrer Top- und Left-Eigenschaft neu positionieren. Habe das mal für die Erstellung eines Etikettes verwendet (vieler Daten, wenig Platz), das je nach Einstellungen der Anwendung unterschiedlich viele Nährwerte anzeigt (mit oder ohne Ballststoffe). Du musst noch berücksichtigen, dass Access dabei intern in "Twips" rechnet, deshalb der Multiplikator. Die Felder werden mit einem vertikalen Abstand von 3 mm untereinander angeordnet und das nicht benötigte Feld ausgeblendet. Der Code sieht dann so aus:

Code:

Private Sub Report_Open(Cancel As Integer)

Dim var_option_wert As Integer

...

Select Case var_option_wert
    Case 1        ' Variante: Big-Seven
        lbl_ballaststoffe.Visible = False
        txt_ballaststoffe.Visible = False
        
        lbl_brennwert.Top = CLng(8 * 56.7)
        lbl_fett.Top = CLng(11 * 56.7)
        lbl_fs.Top = CLng(14 * 56.7)
        lbl_kh.Top = CLng(17 * 56.7)
        lbl_zucker.Top = CLng(20 * 56.7)
        lbl_ballaststoffe.Top = CLng(29 * 56.7) ' nach unten schieben, ist unsichtbar
        lbl_eiweiss.Top = CLng(23 * 56.7)
        lbl_salz.Top = CLng(26 * 56.7)
        
        txt_brennwert.Top = CLng(8 * 56.7)
        txt_fett.Top = CLng(11 * 56.7)
        txt_fs.Top = CLng(14 * 56.7)
        txt_kh.Top = CLng(17 * 56.7)
        txt_zucker.Top = CLng(20 * 56.7)
        txt_ballaststoffe.Top = CLng(29 * 56.7)  ' nach unten schieben, ist unsichtbar
        txt_eiweiss.Top = CLng(23 * 56.7)
        txt_salz.Top = CLng(26 * 56.7)

    Case 2        ' Variante: Big-Seven plus Ballaststoffe
        lbl_ballaststoffe.Visible = True
        txt_ballaststoffe.Visible = True
        
        lbl_brennwert.Top = CLng(8 * 56.7)
        lbl_fett.Top = CLng(11 * 56.7)
        lbl_fs.Top = CLng(14 * 56.7)
        lbl_kh.Top = CLng(17 * 56.7)
        lbl_zucker.Top = CLng(20 * 56.7)
        lbl_ballaststoffe.Top = CLng(23 * 56.7)
        lbl_eiweiss.Top = CLng(26 * 56.7)
        lbl_salz.Top = CLng(29 * 56.7)
        
        txt_brennwert.Top = CLng(8 * 56.7)
        txt_fett.Top = CLng(11 * 56.7)
        txt_fs.Top = CLng(14 * 56.7)
        txt_kh.Top = CLng(17 * 56.7)
        txt_zucker.Top = CLng(20 * 56.7)
        txt_ballaststoffe.Top = CLng(23 * 56.7)
        txt_eiweiss.Top = CLng(26 * 56.7)
        txt_salz.Top = CLng(29 * 56.7)
End Select
   
End Sub
Viel Erfolg
Michael
Michael O. ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.10.2018, 12:08   #7
Bebbie
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hallo Michael,

die Lösung sieht schon mal gut aus. Nur zur Sicherheit, dass ich es richtig verstehe:
Du gibst zwei Fälle an, das Tool prüft, welcher Fall gerade aktiv ist und setzt dann die Positioneswerte.
Der Wert in Klammer bei CLng gibt dann die Positionierung auf der Seite an und erhöht sich bei dir immer um 3 wegen des Abstandes um 3 mm.
Wenn dann mit 56,7 multipliziert wird, ist der Wert dann ein Millimeterwert von der Oberseite aus gesehen?
Die ausgeblendeten Felder schiebst du dann mit Hilfe dieses Wertes ganz nach unten.

Korrekt?
Bebbie ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.10.2018, 17:57   #8
Michael O.
MOF User
MOF User
Standard

Hallo Bebbie,

freut mich, dass ich helfen konnte.

Du hast es korrekt verstanden. Der Multiplikator 56,7 sorgt für die Umrechnung in die Access-interne Maßeinheit Twips.

Analaog kannst du die horizontale Position mit der Width-Eigenschaft setzen. Spiel einmal damit herum, dann wird alles klar.

Viel Erfolg
Michael
Michael O. ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:52 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.