OBS/Makros und Scripting/Anwendungsbereiche/ListenStable

Aus OBS Wiki
Zur Navigation springen Zur Suche springen


Listen Stable

Konfigurationen für den zusätzlichen Reiter im Listen-Stable

Personenstamm

Reiter 6 Intern vorhanden wenn in der Scribt_Lib ein Eintrag STABLE_PERSONEN vorhanden ist.
Das Makro muss folgende Funktion beinhalten:

 function Stable_Intern(oMyDB:TxDB; cPsNr:String):String;

Beispiel: Preisliste des Kunden anzeigen

//----------------------------------------------------------------------
// Unit Name: Stable_Intern
// Author:    Jr
// Date:      14.04.2021
// Purpose:   Diese Funktion wird im Stable der Personen ausgeführt
//            Achtung nur oMyDB Benutzen, da Nebenläufig
// History:   
//----------------------------------------------------------------------

function Stable_Intern(oMyDB:TxDB; cPsNr:String):String;
var cSQL : String;
    qTmp : TxFQuery;
begin
    cSQL := 'SELECT * FROM ARTI_PL_NAME' + 
            'WHERE pl_aktiv = "1"'  +
            'AND   pl_personenpreis = "1"' +
            'AND    pl_nr = ' + DB_SqlVal(cPsNr);
         
    Result := 'Preisliste der Person'+CRLF+CRLF;
    
    if (DB_SOpen(oDB, cSQL, qTmp)) then begin
    
       While (not qTmp.Eof()) do begin
           AddToken(Result, PadR(qTmp.A2C('pl_nr'), 10, ' ') + ' ' + 
                            PadR(qTmp.A2C('pl_name'), 40, ' ') +
                            CRLF);    
           qTmp.Next;
       End;
       
    End;
    DB_Close(qTmp);
    
end;

Beispiel: Anzeige von Benutzerfeldern

//-----------------------------------------------------------------------------
// Unit Name: Stable_Intern
// Author:    Jr
// Date:      14.04.2021
// Purpose:   Diese Funktion wird im Stable der Personen ausgeführt
// History:   
//-----------------------------------------------------------------------------

function Stable_Intern(oMyDB:TxDB; cPsNr:String):String;
var cSQL      : String;
    qTmp      : TxFQuery;
    cFeldBez  : String;
    cFeldName : String;
    cUID      : String;
    cData     : String;
    cWhere    : String;
begin
    cSQL := 'SELECT tb_feldname, tb_feldbez FROM TB_DEF'+
            ' WHERE tb_tabname = "PERSSTA"'+
            ' AND tb_infonr = ""'+
            ' AND tb_feldlevel <= '+DB_SqlVal(oSystem.Userlevel)+
            ' ORDER BY tb_feldsort';
         
    //Result := 'Benutzer Felder'+CRLF;
    
    if (DB_SOpen(oMyDB, cSQL, qTmp)) then begin
    
        cUID := DB_ReadUID(oMyDB, 'PERSSTA', 'ps_nr='+DB_SqlVal(cPsNr));
    
        While (not qTmp.Eof) do begin
        
           cFeldBez  := qTmp.A2C('tb_feldbez');
           cFeldName := qTmp.A2C('tb_feldname');
           cData     := DB_ReadSQLSysUID(oMyDB, 'USER_PERSSTA', cFeldName, cUID);
       
           AddToken(Result, PadR(cFeldBez, 30, ' ') + ' ' + 
                            PadL(cData   , 40, ' '),
                            CRLF); 
              
           qTmp.Next;
        End;
       
    End;
    DB_Close(qTmp);
end;