//SCRIPT :MCEXT.GRID.MCFSCR
//Helper: ÄÜÖßäöü
//Scriptfunktion MCEXT.GRID
//Zeigt eine tabellarische Auswahl (DataGridView) direkt aus einer Datenbankabfrage an.
//Anzeige, Rueckgabe, Suche und Theme sind dynamisch steuerbar.
//--------------------------------------------------------------------------------
//Parameter:
//1) Titel
//Titelzeile des Dialogs.
//2) Beschreibung
//Beschreibungstext (max. 3 Zeilen empfohlen).
//3) RETSQL
//Datenquelle + SQL-Abfrage in einem String.
//Format:
//TYP#{CONN_ODER_PFAD}#SELECT ...
//TYP:
//SQL = SQL Server
//MDB = Access
//leer = Standard ist SQL
//CONN_ODER_PFAD:
//bei SQL: kompletter ConnectionString oder {SQLCON}
//bei MDB: Pfad zur MDB (z.B. {APPPATH}\DATABASE\STAMMDAT.mdb)
//bei MDB wird automatisch der passende OLEDB Provider ergänzt
//Beispiele:
//SQL#{SQLCON}#SELECT * FROM Kunden ORDER BY Name
//MDB#{APPPATH}\DATABASE\STAMMDAT.mdb#SELECT * FROM Patienten
//#{SQLCON}#SELECT * FROM Tabelle (TYP leer = SQL)
//4) DISPLAYFIELDS
//Welche Spalten angezeigt werden sollen (Komma-getrennt).
//Leer = alle Spalten.
//Beispiel:
//DISPLAYFIELDS=Name,Ort,Datum
//5) RETFIELDS
//Welche Spalten zurueckgegeben werden (Komma-getrennt).
//Leer = alle Spalten.
//Beispiel:
//RETFIELDS=ID,Name
//6) SEARCHFIELDS
//Auf welchen Spalten die Suche ausgefuehrt wird (Komma-getrennt).
//Suche erfolgt nur bei ENTER und nur als Beginn-Match (Prefix).
//Wenn leer ? Meldung "Keine Suchfilter (SEARCHFIELDS=) gesetzt!"
//Beispiel:
//SEARCHFLD=Name,Ort
//7) MinSelect
//Minimale Anzahl auszuwählender Zeilen.
//0 = keine Mindestanzahl.
//8) MaxSelect
//Maximale Anzahl auszuwählender Zeilen.
//0 = unbegrenzt.
//9) FormWidth
//Fensterbreite in Pixel.
//1 oder leer = volle Bildschirmbreite.
//10) FormHeight
//Fensterhöhe in Pixel.
//1 oder leer = volle Bildschirmhöhe.
//11) ThemeIniPath
//Pfad zur Theme-INI-Datei.
//Beispiel:
//{APPPATH}\CONFIG\THEME.INI
//12) ThemeMode
//Theme-Abschnitt aus der INI.
//--------------------------------------------------------------------------------
//Rueckgabe:
//Mehrere Datensaetze: ; getrennt
//Mehrere Felder pro Datensatz: | getrennt
WIDTH="1024"
HEIGHT="768"
INI_COLOR={APPPATH}\CONFIG\SYSTEM_COLOR.INI
THEME="DARK"
CONN=""
DBTYP=""
TITEL="Patientenauswahl"
BESCHREIBUNG=""
BESCHREIBUNG={BESCHREIBUNG}Wahlen Sie die gewünschten Patienten{RET}Mehrfachauswahl möglich.
//Entweder SQL oder Access
IFBLOCK{DBTYP=SQL}
SQL_CONN=DB.GETMCDMSSTDCONNECTSTRING{}
CONN=sql#{SQL_CONN}#Select ...
ELSE
CONN=mdb#{APPPATH}\DATABASE\STAMMDAT.mdb#SELECT PatientID, Name, Vorname, GebDatum, AufDatum, Entdatum, Strasse, PLZ, Ort FROM Patientenstammdaten ORDER BY Name
RETFIELDS="PATIENTID,Name"
//DISPLAYFIELDS="Name,ID,Datum"
SEARCHFIELDS="Name"
//CONN="mdb#\\Aspis\d\Kliniken\Stammdat RZW\2026-01-02-132118-Verwaltung-wichtige-Dateien\DATABASE\Stammdat.mdb#SELECT Patientid, Name, vorname FROM Patientenstammdaten ORDER BY Name"
//RETFIELDS="ID,PATIENTID"
//DISPLAYFIELDS="Name,ID,Datum"
//SEARCHFIELDS="Name,Vorname"
ENDIF
ERG=MCEXT.GRID{{TITEL},{BESCHREIBUNG},{CONN},{DISPLAYFIELDS},{RETFIELDS},{SEARCHFIELDS},1,,{WIDTH},{HEIGHT},{INI_COLOR},{THEME}}
IFBLOCK{ERG=}
EXIT=EXITSCRIPT{}
ELSEIF{ERG=ERR_DB}
EXIT=EXITSCRIPT{}
ENDIF
DLG=DLGMESSAGE{{ERG}{RET}{RET}Testscript wird hier beendet!}
EXIT=EXITSCRIPT{}
//GO{START}
DS.MULTISELECT="1"
GRID_ANZ=""
GRID_ANZ=SPLIT{{ERG},;,ORDER_RG_GES}
//Setze Variablen für 301 Rechnungsversand
DS.RUN="30"
DS.ANLASS="30"
DS.AUFTRAGTYP="RG"
COUNTER="0"
DO{}
ORDER_ROW=""
TMP_ARRAY=""
DS.ORDERID=""
DS.PATIENTID=""
COUNTER=SUM{{COUNTER}+1}
ORDER_ROW=GETVAR{ORDER_RG_GES{COUNTER}}
TMP_ARRAY=SPLIT{{ORDER_ROW},|,ORDERFIELDS}
DS.ORDERID=GETVAR{ORDERFIELDS1}
DS.PATIENTID=GETVAR{ORDERFIELDS2}
XMLRUN=RUN{{APPPATH}\CONFIG\Scripts\XML-301\XML-RUN-OUT.MCFSCR,*,DS.ERRMSG,False}
IFBLOCK{COUNTER={GRID_ANZ}}
EXIT{}
ENDIF
LOOP{}
DLG=DLGMESSAGE{GesamtERROR: {DS.ERRMSG}}