Access-o-Mania

Access-Forum (Deutsch/German) => Bericht => Thema gestartet von: andreasl4099 am Juli 13, 2010, 13:28:25

Titel: leere Textfelder in Bericht mit VBA formatieren
Beitrag von: andreasl4099 am Juli 13, 2010, 13:28:25
Hallo forum!

Hab ein Problem in einem Bericht mit leeren Textfeldern, welche sich mittels VBA nicht formatieren lassen!

Ich ändere je nach einer Bedingung eines anderen Textfeldes die Schriftgröße und die Höhe der Felder und en Huntergrund. Bei Textfeldern mit Inhalt ist das kein Problem. Bei den leeren
(oder Null?) funktioniert das leider nicht. Habe schon mit NZ usw versucht - kein Erfolg!

Hier der Code:

If Me.Output = "Differenz" Then
Me.VHNummer.FontBold = False
Me.VHNummer.FontSize = 7
Me.VHNummer.Height = 250
Me.VHNummer.BackColor = RGB(216, 216, 216)
Else
Me.VHNummer.FontBold = True
Me.VHNummer.FontSize = 8
Me.VHNummer.Height = 300
Me.VHNummer.BackColor = RGB(255, 255, 255)
End If



Bitte um Hilfe

Danke  ???

Titel: Re: leere Textfelder in Bericht mit VBA formatieren
Beitrag von: MzKlMu am Juli 13, 2010, 13:50:59
Hallo,
auch so schon:

If Nz(Me!Output,"") = "Differenz" Then
Titel: Re: leere Textfelder in Bericht mit VBA formatieren
Beitrag von: andreasl4099 am Juli 13, 2010, 14:00:30
Hallo MzKlMu!

Danke für die schnelle Antwort!

Mein Problemfeld ist nicht "Output" sondern "VHNummer"!

Output ist immer gefüllt - nur VHNummer nicht immer!

lg und Danke ;)
Titel: Re: leere Textfelder in Bericht mit VBA formatieren
Beitrag von: database am Juli 13, 2010, 15:10:49
Hi,

If Nz(Me!VHNummer,"") = "Irgendwas" Then

oder

If Nz(Me!VHNummer,0) > 25 Then

Grüße

Peter
Titel: Re: leere Textfelder in Bericht mit VBA formatieren
Beitrag von: DF6GL am Juli 13, 2010, 15:19:26
Hallo,


"Problem in einem Bericht mit leeren Textfeldern, welche sich mittels VBA nicht formatieren lassen!"


halte ich für ein Gerücht, es sei denn, die Felder existieren gar nicht, z. B. weil der Detailbereich wegen Datenmangels gar nicht existiert.
Titel: Re: leere Textfelder in Bericht mit VBA formatieren
Beitrag von: andreasl4099 am Juli 13, 2010, 15:47:50
Hallo

Die Berichtsfelder:

Output                VHNummer
Gross                    123
Differenz               ""

Die Formatierung soll laut 1. Code erfolgen:
Es soll wenn Feld Output den Text "Differenz" erhält das Feld VHNummer grau sein, sonst die Formatierung laut Code erfolgen
Das Problem ist, dass wenn im Feld Output Differenz steht das Feld VHNummer Leer ist!

Habe mich hoffentlich jetzt verständlich ausgedrückt

Danke

lg

Andi
Titel: Re: leere Textfelder in Bericht mit VBA formatieren
Beitrag von: DF6GL am Juli 13, 2010, 16:17:21
Hallo,

das habe ich schon verstanden..


Nur, WO stehen die Felder und  in welcher Ereignisprozedur führst Du den Code aus?

Wenn die Felder im Detailbereich des Berichtes stehen, dann so:

Sub Detailbereich_Format(...)
If nz(Me!Output,"") = "Differenz" Then
Me!VHNummer.FontBold = False
Me!VHNummer.FontSize = 7
Me!VHNummer.Height = 250
Me!VHNummer.BackColor = RGB(216, 216, 216)
Else
Me!VHNummer.FontBold = True
Me!VHNummer.FontSize = 8
Me!VHNummer.Height = 300
Me!VHNummer.BackColor = RGB(255, 255, 255)
End If

End Sub
Titel: Re: leere Textfelder in Bericht mit VBA formatieren
Beitrag von: andreasl4099 am Juli 14, 2010, 06:50:53
Hallo Franz!

Die Felder sind im Detailbereich und ich habe es mit deinem Beispiel versucht - leider ohne Erfolg. Es ist nicht Output leer sondern VHNummer und anscheinend lassen sich Felder ohne Inhalt nicht formatieren?!?

Habe auch schon mit z.B:  "Nz (Me!VHNummer,"").FontBold = False "     versucht - geht auch nicht!

noch was:

gibt es die Möglichkeit im bericht die Felder nach einem anderen Feld dynamisch zu erhöhen?

Danke  lg

Andi
Titel: Re: leere Textfelder in Bericht mit VBA formatieren
Beitrag von: bahasu am Juli 14, 2010, 07:37:33
Zitat von: andreasl4099 am Juli 14, 2010, 06:50:53
gibt es die Möglichkeit im bericht die Felder nach einem anderen Feld dynamisch zu erhöhen?

Danke  lg

Andi


Moin Andi
Eventuell erreichst Du Dein Ziel mit der Eigenschaft "Vergrößerbar = Ja". Die findest Du bei den Eigenschaften des Steuerelementes im Reiter Format.


Zum Einstellen der Farbeigenschaften:
Hatte mal festgestellt, dass die per VBA festgelegte Hintergrundfarbe erst dann übernommen wird, wenn ich zuvor bei den Formateigenschaften  im betroffenen Steuerelement die Farbe manuell eingestellt hatte.

Harald
Titel: Re: leere Textfelder in Bericht mit VBA formatieren
Beitrag von: andreasl4099 am Juli 14, 2010, 08:41:35
Morgen Harald

Das eine Feld vergrößert sich je nach Text dynamisch, nur die anderen in der betreffenden Zeile nicht.

lg

Andi
Titel: Re: leere Textfelder in Bericht mit VBA formatieren
Beitrag von: bahasu am Juli 14, 2010, 09:05:47
Zitat von: andreasl4099 am Juli 14, 2010, 08:41:35

... nur die anderen in der betreffenden Zeile nicht.

Hi Andi,
Ist dort die genannte Eigenschaft "Vergrößerbar" auf Ja gesetzt?
Eventuell muß auch im Bereich (vermutlich "Detailbereich") diese Eigenschaft gesetzt werden.

Harald
Titel: Re: leere Textfelder in Bericht mit VBA formatieren
Beitrag von: andreasl4099 am Juli 14, 2010, 09:57:56
Hallo Harald

habe alle Eigenschaften auf vergrößerbar eingestellt - ist diesem Bericht aber egal

lg

Andi
Titel: Re: leere Textfelder in Bericht mit VBA formatieren
Beitrag von: bahasu am Juli 14, 2010, 10:07:56
Hi Andi,

kannst Du deine gezippte Datenbank mit ein paar Testdaten zur Verfügung stellen?

Harald
Titel: Re: leere Textfelder in Bericht mit VBA formatieren
Beitrag von: andreasl4099 am Juli 14, 2010, 15:00:19
Hallo
Habe die Datei angehängt und es funktioniert alles wenn in den Feldern ein Zeichen ist.
Habe zu Probe in einen Datensatz ein Zeichen in die betreffende Spalte (VHNummer) eingefügt.

Es sollten alle Zeilen mit Argument (Differenz) in Output grau hinterlegt werden.
Beim Testdatensatz, welcher in der Tabelle ist, habe ich ein Zeichen geschrieben  und die Schrift mit VBA auch auf grau gestellt.

Viel Spass damit ;D

Lg

Andi

[Anhang gelöscht durch Administrator]
Titel: Re: leere Textfelder in Bericht mit VBA formatieren
Beitrag von: bahasu am Juli 14, 2010, 15:18:28
Zitat von: andreasl4099 am Juli 14, 2010, 15:00:19
Hallo
Habe die Datei angehängt und es funktioniert alles wenn in den Feldern ein Zeichen ist.
Habe zu Probe in einen Datensatz ein Zeichen in die betreffende Spalte (VHNummer) eingefügt.

Es sollten alle Zeilen mit Argument (Differenz) in Output grau hinterlegt werden.
Beim Testdatensatz, welcher in der Tabelle ist, habe ich ein Zeichen geschrieben  und die Schrift mit VBA auch auf grau gestellt.

Viel Spass damit ;D

Lg

Andi

Hi Andi,

Bei der Zeile "Differenz":
- unter a2007 ist der Hintergrund bei mir weiß,
- unter a2003 ist er grau

Willkommen im Club der a2007 geschädigten.
Werde dafür erst am Abend Zeit haben, mir das näher anzuschauen.

Harald
Titel: Re: leere Textfelder in Bericht mit VBA formatieren
Beitrag von: andreasl4099 am Juli 14, 2010, 15:20:57
Hi Harald

Danke für deine Mühe!

Andi
Titel: Re: leere Textfelder in Bericht mit VBA formatieren
Beitrag von: bahasu am Juli 14, 2010, 16:51:48
Hi Andi,

bei diesem Verhalten von a2007 bei Deinem Bericht stoße ich an meine (Verständnis-)Grenzen.

Das Problem bei a2007 scheint darin zu bestehen, dass die "doofe Kiste" gar nicht das Ereignis "Beim Formatieren" durchläuft.
Weder mit Debuggen noch mit einer Testzeile (z.B. msgbox "XYZ") war zu erkennen, dass das aufgerufen wird.

Ich habe im Anhang den Bericht ("Bericht1") neu erstellt: Dort funktioniert das graue Unterlegen.
Dabei habe ich die if-Abfragen etwas übersichtlicher geschrieben.

Die letzten Feinheiten überlasse ich Dir.

Vielleicht kann sich einer der access Gurus mal Deinen Bericht anschauen und ergründen, warum access 2007 das Ereignis "beim Formatieren" nicht durchlaufen will.

Harald

[Anhang gelöscht durch Administrator]
Titel: Re: leere Textfelder in Bericht mit VBA formatieren
Beitrag von: DF6GL am Juli 14, 2010, 21:38:28
Hallo,


mhmm, geht doch...

Der Bericht muß nur in "Seitenansicht" geöffnet werden..  ;)



[Anhang gelöscht durch Administrator]
Titel: Re: leere Textfelder in Bericht mit VBA formatieren
Beitrag von: andreasl4099 am Juli 15, 2010, 07:31:09
Guten Morgen!

Es ist aber nur die erste Zeile grau hinterlegt, und zwar in jener Zeile, in der in der tbl ein Strich ist.
Alle anderen sind nicht hinterlegt!!

"beim Formatieren" dürfte aber doch gehen, sonst wären die anderen Formatierungen ja auch nicht passiert??

lg

Andi
Titel: Re: leere Textfelder in Bericht mit VBA formatieren
Beitrag von: DF6GL am Juli 15, 2010, 09:50:38
Hallo,


also ich glaube, es handelt sich hier um Fehlinterpretationen..


Das Feld wird einwandfrei durch den Code formatiert.
Dass das Feld nicht sichtbar ist, wenn im akt. DS NULL in diesem Feld steht, liegt daran, dass die Eigenschaft "Verkleinerbar" auf "Ja" steht...
Titel: Re: leere Textfelder in Bericht mit VBA formatieren
Beitrag von: andreasl4099 am Juli 15, 2010, 10:03:31
Hallo Franz!

die Bezeichnung "Accessgott" ist noch untertrieben.
Jetzt funktionierts!! ;D

Danke

PS: Gibt es eine Möglichkeit alle Felder in einer Zeile dynamisch an eine Spalte anzugleichen?
Habe es schon mit einem Verweis auf die wegen der Textlänge erhöhte Spalte versucht. (Me.Output.Height = me.VHNummer.Height)!

Danke an den Bodensee

lg

Andi
Titel: Re: leere Textfelder in Bericht mit VBA formatieren
Beitrag von: DF6GL am Juli 15, 2010, 11:05:40
Hallo,

naja, hat das nicht funktioniert?
Titel: Re: leere Textfelder in Bericht mit VBA formatieren
Beitrag von: andreasl4099 am Juli 15, 2010, 11:08:42
Hallo

nein, leider nicht
Titel: Re: leere Textfelder in Bericht mit VBA formatieren
Beitrag von: DF6GL am Juli 15, 2010, 11:24:58
Hallo,

naja, bei  mir geht's...

Vermutlich stellst Du die betroffenen Eigenschaften nicht/falsch ein und  benutzt evtl. das falsche Ereignis..

Titel: Re: leere Textfelder in Bericht mit VBA formatieren
Beitrag von: andreasl4099 am Juli 15, 2010, 12:12:26
Hallo

habe es beim Formatieren und wie im Code angeführt versucht.

If Me.Output = "Differenz" Then
Me.VHNummer.FontBold = False
Me.VHNummer.FontSize = 7
Me.VHNummer.Height = 250
Me.VHNummer.BackColor = RGB(216, 216, 216)
Else
Me.VHNummer.FontBold = True
Me.VHNummer.FontSize = 8
Me.VHNummer.Height = Me.Output.Height
Me.VHNummer.BackColor = RGB(255, 255, 255)
End If

Einen weiterer Versuch war mit einer Schleife  "Wenn  Output >300 dann VHNummer.Height = Me.Output.Height


alles ohne Erfolg   ???

lg
Titel: Re: leere Textfelder in Bericht mit VBA formatieren
Beitrag von: bahasu am Juli 15, 2010, 15:49:23
Zitat von: andreasl4099 am Juli 15, 2010, 10:03:31
PS: Gibt es eine Möglichkeit alle Felder in einer Zeile dynamisch an eine Spalte anzugleichen?

Hi

Vielleicht sind die folgenden Zeilen, was Du suchtst:
Private Sub Detailbereich_Format(Cancel As Integer, FormatCount As Integer)

If Nz(Me.Output) = "Differenz" Then
    Me.Output.FontBold = False
    Me.Output.FontSize = 8
    Me.Output.Height = 250
    Me.Output.BackColor = RGB(216, 216, 216)


Else
    Me.Output.FontBold = True
    Me.Output.FontSize = 9
    Me.Output.Height = 300
    Me.Output.BackColor = RGB(255, 255, 255)

End If



    Dim ctl As Control
   
    For Each ctl In Me.Detailbereich.Controls
        ctl.FontBold = Me.Output.FontBold
        ctl.FontSize = Me.Output.FontSize
        ctl.Height = Me.Output.Height
        ctl.BackColor = Me.Output.BackColor
    Next ctl
End Sub
Titel: Re: leere Textfelder in Bericht mit VBA formatieren
Beitrag von: andreasl4099 am Juli 16, 2010, 11:50:37
Hallo

Habe jetzt das mit den ctl versucht - es will nicht

ich werde den Bericht nun so lassen!

Danke für eure Mühe!!

lg

Andi
Titel: Re: leere Textfelder in Bericht mit VBA formatieren
Beitrag von: bahasu am Juli 16, 2010, 13:26:37
Hi Andi

und zum Schluß noch eine Frage von mir:
Wie verhält sich der Bericht, wenn Du bei den Eigenschaften im Reiter "Format" als Wert für "Standardansicht = Seitenansicht"  einträgst?

Harald
Titel: Re: leere Textfelder in Bericht mit VBA formatieren
Beitrag von: andreasl4099 am Juli 19, 2010, 07:13:47
Hallo Harald

Es ist dem Bericht egal was ich mache

er will nicht!

Danke

Andi ;D