waldbauer.com

waldbauer.com (http://www.waldbauer.com/vb/index.php)
-   SPI OA4 Open Access II/III/IV (2,3,4) Anwender Forum (http://www.waldbauer.com/vb/forumdisplay.php?f=57)
-   -   Stringübernahme in Schirmmaske ... wie programmiere ich die F4 Taste :-) (http://www.waldbauer.com/vb/showthread.php?t=2046)

Stringübernahme in Schirmmaske ... wie programmiere ich die F4 Taste :-)
 
Ist es möglich einen String in die Schirmmaske zu übernehmen?

Beispiel:
Nach erfolgloser Suche in "DOC" soll die suche in "VERTRAG" ausgeführt werden. Die "Vertragsnummer" aus "VERTRAG" soll dann übernommen werden.

local str v=VERTRAG.Vsnr

new docdaten
keys enter docdaten with DOC !!! und dann Übernahme - DOC.Vsnr = v

Nicht bei ENTER nur mit KEYS GET !

Das heisst du mußt entsprechend folgendes machen:

Code:

view daten = from datenbank
use daten
NEW DATEN ! -> Ganz Wichtig damit die Eingabefelder geleert werden
daten.v = VERTRAG.Vsnr
KEYS GET DATEN with MASKE


Also ein wenig habe ich mich versucht, hat nicht geklappt, jedoch glaube ich nicht, dass das die Lösung für mein Problem ist.

Beim testen ist mir dann aufgefallen, dass es vermutlich etwas umfangreicher mit keys list sein muss.

Folgendes möchte ich lösen:

In meinem Dokumentenarchiv gebe ich das gespeicherte Dokument ein.
Nun möchte ich es dem Vertrag zuordnen.
Dazu habe ich in der Schirmmaske ein Feld mit VERTRAGSNUMMER (DVTR#) und Übereinstimmung zu VERTRAG.VERTRAGSNUMMER (VVTR#).

Hier ist ja das bekannte OA-Problem, dass ich nicht noch einmal die Suchenfunktion nutzen kann.

Folglich hätte ich nun gerne mit F4 ein kleines Untermenü aufgerufen, das letztlich die Suche in VERTRAG vornimmt und mit TASTE x oder auch RET die VERTRAG.VERTRAGSNUMMER (VVTR#) in die Spalte DOC.VERTRAGSNUMMER (DVTR#) übernimmt.


Alternativ habe ich mir überlegt genügt die Suche in einen seperatem Fenster, um die korrekte Schreibweise der VERTRAG.VERTRAGSNUMMER zu finden. Mit Verlassen des Feldes DOC.VERTRAGSNUMMER könnte dies dann wieder geschlossen werden.


Da hier die F4-Taste schlecht sein dürfte, da ja damit die Suche in den Übereinstimmungsfeldern vorgenommen wird dachte ich die Auswahl gleich mit einem Menü beim Einfügen eine neuen Dokumentes zu integrieren.

Die Lösung für die fehlende F4-Taste bei Übereinstimmungen wäre ggf. die Bessere.

Du kannst aber innerhalb der Maske natürlich entweder F4 neu belegen oder einfach eine alternative Funktionstaste (F5,F6 etc...) innerhalb der Schirmmaske nützen um weitere Eingaben zuzulassen und damit neue Abfragen machen ?

Das ist nicht das Problem, nicht ganz klar ist mir wie ich die Variable vom einen view ins andere bekomme.

Habe als Haupt"VIEW"

VIEW docdaten = FROM doc
USE docdaten
KEYS LIST docdaten
...
:K_CHANGE:
put in FENST1 at 1,1
KEYS display docdaten with doc

:K_MENU:
...
put in FENSTHILFE at 1,1
MENU VERTICAL
"Suche Vertragsnummer in Vertragstabelle"
VIEW vtrdaten = FROM vtr
USE vtrdaten

Code:

Hier hätte ich jetzt gerne ein Feld, um in der VERTRAG.VSNR
zu suchen und mögliche Treffer als Liste angezeigt zu bekommen.
Die auf den Cursor aktive VERTRAG.VSNR sollte dann mit RET oder F10
in das Feld DOCDATEN.D_VTR# übernommen werden.

"weitere Menupunkte"
:K_UNDO: break
end menu

Hallo Rainer,

Dein "Such-View" lässt Du mit KEYS LIST anzeigen. Nun kann der Anwender blättern. Hat er den gewünschten Datensatz gefunden, kann er mit z.B. :K_DO: dies signalisieren. Dann musst den Wert aus VTRDATEN.VSNR nach DOCDATEN.D_VTR# übertragen. Da das VIEW DOCDATEN noch aktiv ist, kann die Übertragung direkt erfolgen. Dass müsste dann in etwa so aussehen:

Code:

VIEW vtrdaten = FROM vtr
USE vtrdaten
KEYS LIST vtrdaten
:K_DO:  docdaten.d_vtr# = vtrdaten.vsnr
:K_UNDO:  !verlässte die Suche ohne Übernahme
END KEYS
USE vtrdaten END


Schande,
habe gerade bemerkt, dass ich in meiner Erläuterung vom 25.04. das Einbinden in :K_Change: angegeben hatte.
Vom Grundsatz her ja kein Problem, nur Übernimmt mir OA die VSNR nicht, sondern schließt die Schirmmaske und geht wieder auf LIST DOCDATEN

Bis dato habe ich jetzt:
HTML-Code:

:K_INS: 
                  put in kabis2top at 1,1 "Neues Dokument erfassen" filled
                  put in kabis2 at 1,1
                  new docdaten
                  keys enter docdaten with doc
                  :K_DO: insert docdaten;
                        view docdaten = from doc order d_lfd#;
                        use docdaten; find docdaten bottom
                  :K_MENU:
                        screen hilfe
                              put in hilfet at 1,1 "Menu" filled
                              put in hilfe at 1,1
                              put at 5,2 
                              MENU VERTICAL
                                :"VSNR aus Verträgen suchen":
                                        view vtrdaten = FROM vtr
                                        USE vtrdaten
                                        KEYS LIST vtrdaten
                                        :K_DO: docdaten.vsnr = vtrdaten.vsnr
                                        :K_UNDO: !verlässt die Suche ohne Übernahme
                                        END KEYs
                                        USE vtrdaten END
                                       
                              END MENU
                              END SCREEN
                  :K_UNDO:
                  end keys

Liegt das nun am doppelten K_DO und K_UNDO Befehl?
Allerdings habe ich mal K_SELECT getestet, mit dem der Vorgang ebenfalls abgebrochen wird.

Dann würde ich vorher gerne noch eine SUCHVORGABE für die vtrdaten.vsnr machen.

Nein, der Fehler liegt an dem ENTER.

Code:

:K_INS: 
                  put in kabis2top at 1,1 "Neues Dokument erfassen" filled
                  put in kabis2 at 1,1
                  new docdaten
docdaten.vsnr=neuer wert
                  keys display docdaten with doc
                  :K_DO:  insert docdaten;

Durch das NEW DOCDATEN wird die Eingabemaske bereits geleert. Durch das DISPLAY im Keys hingegen können nun vorher bestimmte Felder mit eigenen Werten gefüllt werden.

display ist doch aber für die Darstellung der aktuellen Zeile.

Ich möchte jedoch einen neuen Datensatz in der Tabelle DOC anlegen.

In der Schirmmaske habe ich DOC.VSNR (docdaten.vsnr) als Übereinstimmungsfeld zu VTR.VSNR (vtrdaten.vsnr).
Hier möchte ich nun das bekannte OA-Problem (fehlende Suchfunktion mit F4 bei Übereinstimmungsfeldern) lösen.

Folglich habe ich zwei view's und innerhalb des view's docdaten möchte ich nun bei der Eingabe eines neuen Datensatzes das eine Suche im view vtrdaten verwenden.

KEYS DISPLAY und KEYS ENTER machen beide das Gleiche - der einzige Unterschied besteht darin, daß KEYS ENTER die Schirmmaske leert. KEYS DISPLAY hingegen übernimmt sämtlichen Inhalt aus der aktuellen Zeile. KEYS ENTER leert jedoch beim ENTER bereits nochmals die Eingabemaske (ähnlich dem NEW DATEN) selbst wenn ich vorher einen bestimmten Inhalt definiert habe.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:07 Uhr.

Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.