none
Objekte in Berichte anordnen (nicht so leicht, wie es sich anhört)

    Frage

  • Hallo Liebe Forumsmitglieder,

    ich weiß nicht, ob so eine Frage schon mal so gestellt wurde & ob es dafür einen Thread gibt. Wenn ja, einfach bescheid sagen.

    Wie sieht der Ablauf aus?
    - Beim Öffnen der DB öffnet sich ein Formular. In diesem Formular wählt der Anwender ein Land aus. Alle dazugehörigen Informationen befinden sich im Bericht_01.
    - Der Bericht wird dann lediglich gedruckt.

    Es geht um Folgendes:
    Ich habe ein Land. Für dieses Land gibt es Informationen über das Land, welche ich grafisch in einem Bericht darstellen möchte:
    ---------------------------------------------------------
    Info 1: #hier ist ein Farbverlauf von rot nach grün#
    ---------------------------------------------------------
    Dieser Farbverlauf ist eine ganz normale, ungebundene, durch Copy und Paste eingefügte, Grafik. Nun habe ich noch jeweils ein Rechteck erstellt für die Info. Ich beabsichtige damit, nach "level/ höhe" der Info dieses Rechteck innerhalb des Farbverlaufs zu positionieren. Für JEDES LAND ändert sich ja natürlich dieser Level der Information. Also soll die Positionierung immer automatisch angepasst werden. Die y-Achse verändert sich nicht. Aber die x-Achse. Es darf nicht vor der Raute sein und auch nicht nach der Raute (das kann man ja notfalls berechnen).

    Mein Problem ist nun diese automatische Positionierung.
    Mein Gedanke war, dass ich in den Bericht gehe, Eigenschaften vom Rechteck und es berechnen lasse -> geht aber nicht. Ich kann bei "Links" nur eine feste Zahl eintragen.
    Der andere Gedanke war, dass ich über ein Makro, das gezielte Rechteck auswähle (Bezeichnung zB: Rechteck138) und es so anordne.

    Ich bin aber nicht wirklich weit gekommen. Es ist leider schon etwas über ein Jahr her, dass ich mich mit Makros beschäftigt habe und bitte daher um Eure HILFE.


    lg dergrieche
    Donnerstag, 1. September 2011 13:45

Antworten

  • Hallo,

    dergrieche wrote:

    Aber wie mache ich das mit:
    ---->
    Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
      Me!Rechteck138.Left = 5670 + DeinErrechneterWert
    End Sub

    - Bericht im Entwurf oeffnen.
    - Falls das Eigenschaftsfenster nicht angezeigt wird, F4 um es einzublenden.
    - Im Bericht den Detailbereich durch Klick auf den Bereichskopf markieren.
    - Im Eigenschaftsfenster, Tab Ereignisse in "Bei Formatierung" "(Ereignisprozedur)" auswaehlen.
    - Anschliessend auf die 3 Punkte rechts daneben klicken, der VB-Editor geht auf und es erscheinten folgende Zeilen:

    Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)

    End Sub

    Dazwischen kopierst du die mittlere Zeile aus dem Beispiel.

    Dann wechselst du zurueck und oeffnest den Bericht in der Seitenansicht. In allen anderen Ansichten hat der Code uebrigens keine Auswirkung.

    Gruss - Peter


    Mitglied im http://www.dbdev.org
    FAQ: http://www.donkarl.com


    Freitag, 2. September 2011 20:42
    Moderator

Alle Antworten

  • Hallo,

    dergrieche wrote:

    Mein Problem ist nun diese automatische Positionierung. [...]

    Darf ich fragen, was in dem Rechteck genau steht? Wenn du eine Grafik
    einfuegst, hat diese auch Eigenschaften wie Legende oder
    Achsenbeschriftungen, die mit den Balken usw. mitwachsen koennen. Warum
    geht das bei dir nicht?

    Gruss - Peter


    Mitglied im http://www.dbdev.org
    FAQ: http://www.donkarl.com

    Donnerstag, 1. September 2011 17:55
    Moderator
  •  

    Darf ich fragen, was in dem Rechteck genau steht? Wenn du eine Grafik
    einfuegst, hat diese auch Eigenschaften wie Legende oder
    Achsenbeschriftungen, die mit den Balken usw. mitwachsen koennen. Warum
    geht das bei dir nicht?

    Gruss - Peter


    Mitglied im http://www.dbdev.org
    FAQ: http://www.donkarl.com

    Hi Peter,

    Hier habe ich ein ScreenShot, der dir noch mal genau zeigen kann, wie des ausschaun soll:

    Also wie du erkennen kannst, habe ich Informationen zu einem Land (natürlich sind es mehrere Länder in der DB ca. 70).
    Für dieses Land habe ich einen Farbverlauf einfach mal in den Bericht gelegt. Soll als Hintergrund dienen, denke mal, dass ist die leichtere Variante. In diesem Hintergrund soll sich das Rechteck bewegen, mit dem Wert der Information (alles schon in einem extra Feld berechnet -> es geht von 0 - 1 in 0,25 Schritten, also 5 Stufen. 0=rot 1=grün.

    Wie sage ich nun dem schwarzen und dem weißen  Balken, der nur als Anzeige dienen soll, dass es sich mit dem Wert der Information bewegen soll?

     

    lg

    Freitag, 2. September 2011 09:46
  • Hallo,

    dergrieche wrote:

    Hier habe ich ein ScreenShot,

    Ah, ein Bild sagt mehr ... ;-)

    Das ist keine Grafik, wie ich erst vermutete, sondern 2 sich ueberlappende
    Rechtecke, richtig?

    Deren Position kannst du ganz leicht mit dem Attribut Left beeinflussen, z.
    B.:

    Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
      Me!Rechteck138.Left = 5670 + DeinErrechneterWert
    End Sub

    ... wobei 567 etwa 1 cm entspricht. Anhand deines Screendumps vermute ich,
    dass der Farbbalken etwa 10 cm von links beginnt. Den exakten Wert fuer
    DeinErrechneterWert musst du auf Basis deiner Schrittweite errechnen.
    Gruss - Peter


    Mitglied im http://www.dbdev.org
    FAQ: http://www.donkarl.com

    Freitag, 2. September 2011 10:11
    Moderator
  • Hi,

    ja das sind sich zwei überlappende Rechtecke :) Sry, wuste nicht, dass das so wichtig ist.
    Ich weiß, dass ich im Bericht das Objekt anklicke und rein theoretisch über LINKS die Position angebe.

    Aber wie mache ich das mit:
    ---->
    Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
      Me!Rechteck138.Left = 5670 + DeinErrechneterWert
    End Sub

    Wo kommt dass denn hin? Ich kann im Eigenschaftenfeld vom Objekt im Feld LINKS nicht sowas eintragen, oder doch? In welchen Generator und wo finde ich den, muss ich das eingeben?+

     

    DANKE für deine Hilfe :)

    Freitag, 2. September 2011 11:23
  • Hallo,

    dergrieche wrote:

    Aber wie mache ich das mit:
    ---->
    Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
      Me!Rechteck138.Left = 5670 + DeinErrechneterWert
    End Sub

    - Bericht im Entwurf oeffnen.
    - Falls das Eigenschaftsfenster nicht angezeigt wird, F4 um es einzublenden.
    - Im Bericht den Detailbereich durch Klick auf den Bereichskopf markieren.
    - Im Eigenschaftsfenster, Tab Ereignisse in "Bei Formatierung" "(Ereignisprozedur)" auswaehlen.
    - Anschliessend auf die 3 Punkte rechts daneben klicken, der VB-Editor geht auf und es erscheinten folgende Zeilen:

    Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)

    End Sub

    Dazwischen kopierst du die mittlere Zeile aus dem Beispiel.

    Dann wechselst du zurueck und oeffnest den Bericht in der Seitenansicht. In allen anderen Ansichten hat der Code uebrigens keine Auswirkung.

    Gruss - Peter


    Mitglied im http://www.dbdev.org
    FAQ: http://www.donkarl.com


    Freitag, 2. September 2011 20:42
    Moderator
  • Hi Peter,

    danke sher für deine Hilfe! Sry für meine späte Rückmeldung, ich war im Urlaub.

    Ich probier das gleich mal aus.

     

    lg

    Montag, 12. September 2011 07:08