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 ???
Hallo,
auch so schon:
If Nz(Me!Output,"") = "Differenz" Then
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 ;)
Hi,
If Nz(Me!VHNummer,"") = "Irgendwas" Then
oder
If Nz(Me!VHNummer,0) > 25 Then
Grüße
Peter
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.
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
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
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
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
Morgen Harald
Das eine Feld vergrößert sich je nach Text dynamisch, nur die anderen in der betreffenden Zeile nicht.
lg
Andi
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
Hallo Harald
habe alle Eigenschaften auf vergrößerbar eingestellt - ist diesem Bericht aber egal
lg
Andi
Hi Andi,
kannst Du deine gezippte Datenbank mit ein paar Testdaten zur Verfügung stellen?
Harald
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]
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
Hi Harald
Danke für deine Mühe!
Andi
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]
Hallo,
mhmm, geht doch...
Der Bericht muß nur in "Seitenansicht" geöffnet werden.. ;)
[Anhang gelöscht durch Administrator]
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
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...
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
Hallo,
naja, hat das nicht funktioniert?
Hallo
nein, leider nicht
Hallo,
naja, bei mir geht's...
Vermutlich stellst Du die betroffenen Eigenschaften nicht/falsch ein und benutzt evtl. das falsche Ereignis..
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
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
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
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
Hallo Harald
Es ist dem Bericht egal was ich mache
er will nicht!
Danke
Andi ;D