Antwort schreiben...
 
Themen-Optionen Thema durchsuchen
Alt 22.07.2008, 19:45   #1
RKabis
Registrierter Benutzer
Variable für Abfrage und Druckmaske

Ist es möglich eine Variable für die Abfrage bzw. erforderliche Druckmaske zu verwenden?

Beispiel: Habe für "Historische Werte" für jedes Kalenderjahr eine Tabelle mit zugehöriger Druckmaske.

Abfrage wäre:

local int jjjj = "2007"

get in hilfe at 2,2 jjjj

local view v1daten = from FAM,VTR&jjjj\\
SELECT ...\\

:"drucken":
use v1daten
PRINTER IS "HPDJ C20"
REPORT v1daten WITH vst&jjjj
PRINTER END


Möchte alse in einem Hilfefenster die gewünscht Jahreszahl eingeben, so dass ich die Abfrage von

VTR2007

und beim Druckauftrag die Druckmaske

VST2007

erhalte.


Funktioniert auf diesen Weg ja nicht und soll nur im Ansatz zeigen was ich meine.
RKabis ist offline   Mit Zitat antworten
Alt 22.07.2008, 21:07   #2
waldbauer.com
Entwickler
Wenn du die Variable vorher richtig definierst - JA

local str jjjj = "2007"

get in hilfe at 2,2 jjjj
jjjj = "vst"&jjjj

REPORT v1daten WITH jjjj
waldbauer.com ist offline   Mit Zitat antworten
Alt 22.07.2008, 21:34   #3
RKabis
Registrierter Benutzer
O.K., d. h. aber, dass ich drei Variablen brauche.

Habe ja die Abfrage ( VTRjjjj ) und die Druckmaske ( VSTjjjj ) und möchte aber die Jahreszahl nur einmal eingeben.

local str jjjj = "2007"

get in hilfe at 2,2 jjjj

VTRjjjj = "vtr"&jjjj
VSTjjjj = "vst"&jjjj

ABFRAGE from KND,VTRjjjj

REPORT v1daten WITH VSTjjjj

Wäre das so korrekt?
RKabis ist offline   Mit Zitat antworten
Alt 22.07.2008, 22:17   #4
waldbauer.com
Entwickler
Ja das sieht "gut" aus

Nur musst du natürlich die beiden Variablen VTRJJJJ und VSTJJJJ als STR definieren.
waldbauer.com ist offline   Mit Zitat antworten
Alt 23.07.2008, 07:41   #5
RKabis
Registrierter Benutzer
Versuch Mißlungen

Variable wird zwar korrekt umgesetzt (Anzeige am Bildschirm) aber

bereits der Compiler reklamiert die Datei VTRJJJJ.
Erkennt innerhalb der view-Abfrage VTRJJJJ also nicht als Variable an, sondern sucht nach VTRJJJJ.DF.

Die Druckmaske wird mit VSTJJJJ auch nicht ausgewählt.


War ein Versuch wert. Mach dann eben jedes Jahr eine neue Routine.
RKabis ist offline   Mit Zitat antworten
Alt 23.07.2008, 11:56   #6
waldbauer.com
Entwickler
Nimm das Compilerhandbuch zu Hand und schlag Seite 106 auf - vielleicht hast du ja irgendwo einen Fehler im Programm.

EDIT:
Das Beispiel arbeitet mit einem VIEW Befehl - im Unterschied zum PREVIEW müssen hier die Felder natürlich nicht bekannt sein. Der Vorteil des PREVIEW lilegt darin, daß dem Compiler die Datenbankstruktur quasi zur Laufzeit schon bekannt ist. Demnach ist ein PREVIEW auch wesentlich schneller als ein VIEW.
waldbauer.com ist offline   Mit Zitat antworten
Alt 23.07.2008, 13:33   #7
RKabis
Registrierter Benutzer
Danke, lt. Fehlerprotokoll ist nun vermutlich die Tabelle richtig erkannt, allerdings hapert es jetzt mit den Begrenzungszeichen \\.

Bis dato hatte ich

FROM Tabelle1, Tabelle2\\
SELECT Feld1, Feld2,\\
Feld3 ...

NEU:
FROM Tabelle1, & Variable1\\
SELECT Feld1, Feld2,\\
Feld3 ...

ODER
FROM Tabelle1, & Variable1 & 'SELECT Feld1, Feld2,'\\
Feld3 ...

Beide neuen Varianten zeigen lt. Fehlerprotokoll, dass die Folgezeile nicht richtig erkannt wird. Allerdings muss die Versuche jetzt zurück stellen. Stöbere dann später mal im Compiler-Handbuch.
RKabis ist offline   Mit Zitat antworten
Alt 23.07.2008, 17:45   #8
Heinz_Richartz
Registrierter Benutzer
Hi,

ein dynamisches View muss im Compiler via String-Variable 'vordefiniert' werden. Dazu weist Du die gesamte Abfrage einer String-Variablen zu. Darin können dann alle Teile variabel sein: Datenbank, Bedingungen, Sortierung ... Im Programm musst Du dann bei der ersten konkreten Ansprache einer Spalte des Views den Typ voranstellen (der Compiler kann den Typen ja nicht feststellen, denn beim Compilieren ist noch nicht bekannt, wie die Abfrage lautet). Z.B. (*STR)test.name. Es schadet nicht, den Typen jedes mal anzugeben.

Für die Druckmaske geht das nicht. Die kannst Du meines Wissens nur über eine Bedingungen festlegen:
IF drucktyp = "2000"
REPORT test WITH druckmaskenname
ELSE IF drucktyp = 2001"
REPORT test WITH druckmaskenname
....

Schöne Grüße
Heinz_Richartz ist offline   Mit Zitat antworten
Alt 23.07.2008, 18:34   #9
RKabis
Registrierter Benutzer
Schade, wenn das mit der Druckmaske nicht geht muss ich so oder so immer manuell ergänzen. Dann kann ich die Routine einfach vervielfältigen und je benötigtem Kalenderjahr ein eigenes View machen und jährlich ergänzen.

Vielen Dank für Eure erneute Mithilfe.
RKabis ist offline   Mit Zitat antworten
Alt 23.07.2008, 22:15   #10
Heinz_Richartz
Registrierter Benutzer
Die Flinte gehört nicht gleich ins Korn. Manchmal hakt nur einfach eine Patrone, der Abzug klemmt oder es ist ne Platzpatrone dabei ... Wo ist das wirkliche Problem? Wieso musst Du für jedes Jahr eine eigene Druckmaske haben? Kann man vielleicht einen Druck einfach selber ausprogrammieren? Das ist meistens gar nicht so schwer. Gib mir ein paar mehr Informationen und dann sehen wir weiter.
Heinz_Richartz ist offline   Mit Zitat antworten


Antwort schreiben...

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Abfrage bringt HEAP Error waldbauer.com SPI OA4 Open Access II/III/IV (2,3,4) Anwender Forum 7 03.04.2008 18:24
OpenAccess Druckmaske K. Barthel SPI OA4 Open Access II/III/IV (2,3,4) Anwender Forum 6 06.01.2008 22:11
Nach Abfrage mit Formel eine Zufallszahl einfügen waldbauer.com SPI OA4 Open Access II/III/IV (2,3,4) Anwender Forum 8 28.11.2007 16:24
Abfrage in Programmierer RKabis SPI OA4 Open Access II/III/IV (2,3,4) Anwender Forum 5 12.07.2007 16:24
Zwischensumme im PMK Druckmaske greatmgm SPI OA4 Open Access II/III/IV (2,3,4) Anwender Forum 2 04.01.2007 07:09