Donnerstag, 3. Januar 2013

Erweiterte Suche in AvERP-Masken

Auf ein Frohes 2013!

Eine Kleinigkeit zur Suche in AvERP, die ich mir merken möchte:

Mann kann nicht nur gegen konstante Werte und Texte Filtern, sondern alle Anzeige-Felder einer AvERP-Maske in Relation setzen.
Variable Daten werden werden über die Spalten-Bezeichnung verglichen, wie von AvERP dem Administrator im rechten unteren Statusfenster abgezeigt.

Damit das nicht zu abstrakt ist:
Ich möchte in der Inventur auswerten, welche Zählmengen größer als der Lager-Istbestand sind, mit Lager-Istbestand > 0.

Beispiel:

Der Inventur Ist-Bestand wird als Eingabefeld E_LIST angezeigt und kann über "LIST", das führende "E_" weglassen, referenziert werden.

Über Hilfe Query-Info "Server-SQL" sieht man, was AvERP daraus macht:

SELECT * FROM V_BINVRK
WHERE (
      (
      ( V_BINVRK.BINV_ID=? /* MLNK_BINV_ID_0 */  )
  AND  ( (BINV_BMAND_ID = 23 OR BINV_BMAND_ID IS NULL)
)
      )
  AND V_BINVRK.LIST > 0
      )
  AND V_BINVRK.ZAEHLMENGE > LIST
Noch ein Beispiel aus den Kundenrechungen:
Finde alle Kundenrechnungen mit 
"GEZAHLT < GESAMT"

Und weiter zum Thema

möchte nach Lagerbeständen > 0 in 2 Lagern nämlich EL und UP suchen.

Das klappt so:



Eingabe nicht in Lager Nr. machen, wäre auch viel zu kurz für eine übersichtliche Eingabe, außerdem scheint AvERP im Hintergrund die ID zum Lager zu ermitteln und mit in die Query zu bauen, so daß alle Versuche, die Ergebnismenge zu vergrößern, fehlschlagen.

Also definiere ich die Suche über den Matchcode.
Mit <>EGAL erhalte ich zunächst alle Matchcodes,
AvERP baut grundsätzlich das Eingabefeld, hier"BSA_MATCHCODE" in das Filter ein, danach kann mit UND und ODER über qualifizierte Ansprache die QUERY erweitert werden.

Also
NOT LIKE 'EGAL' 
AND(BLAGER_MASKENKEY = 'EL' OR BLAGER_MASKENKEY = 'UP')

Ergibt als Server-SQL:
SELECT * FROM V_BARTLH
WHERE (
      (
      F_ANSIUPPERCASE( V_BARTLH.BSA_MATCHCODE ) NOT LIKE 'EGAL' AND(BLAGER_MASKENKEY = 'EL' OR BLAGER_MASKENKEY = 'UP')
      )
  AND V_BARTLH.LIST > 0
      )
  AND V_BARTLH.AKTIV_JN = 'J'




Keine Kommentare:

Kommentar veröffentlichen