---
title: 04 Beispielprojekt
description: "Damit ein neues QuickForms-Projekt genutzt werden kann, müssen die Formularstruktur, die Projektkonfiguration und die Datenbankanbindung passend eingerichtet werden. Für Benutzer, die noch nie mit QuickForms gearbeitet haben, ist wichtig zu wissen, dass ein Teil dieser Arbeit bereits durch das Setup…"
url: "https://aspi-gmbh.de/docs/04-beispielprojekt/"
updated: "2026-03-11"
category: SDK / QuickForms
---

# 04 Beispielprojekt

Damit ein neues QuickForms-Projekt genutzt werden kann, müssen die Formularstruktur, die Projektkonfiguration und die Datenbankanbindung passend eingerichtet werden. Für Benutzer, die noch nie mit QuickForms gearbeitet haben, ist wichtig zu wissen, dass ein Teil dieser Arbeit bereits durch das Setup unterstützt wird.

## Empfohlene Vorgehensweise für Einsteiger

Für Benutzer, die erstmals ein Projekt anlegen, empfiehlt sich folgende Reihenfolge:

| Aktion | Ausführung |
| --- | --- |
| **Vorbereiten** |  |
| 1. APF-Datei(en) erstellen oder übernehmen | MCDMS>>Designer |
| 2. APF-Datei(en) für SQL-Server konfigurieren | Akte>>Aktendefinition |
| 3. Formular in der Akte starten | Beim Erststart wird eine neue SQL-Tabelle erzeugt |
| 4. MCHOME für Projekt konfigurieren | Editor>>\HCFG\ |
| **Ausführen** |  |
| 5. Projekt starten und APF auswählen | MCHOME>>QuickForms |
| 5.1 Automatisch erzeugte Konfiguration prüfen | Editor |
| 5.2 Titel, Matchcode und Formularpfad kontrollieren | Editor |
| 5.3 Stammdatenquelle prüfen/einrichten | Editor |
| 5.4 SQL-Zusatztabelle anbinden | Editor |
| 5.5 Feldlisten und Sichtbarkeit definieren | Editor |
| 5.6 Suchfelder und Selektionen ergänzen | Editor |
| 5.7 optionale Scripts einbinden | Editor |
| 5.8 Projekt starten und mit Testdaten prüfen | QuickForms |

Wird im Setup eine APF-Datei ausgewählt, **erzeugt das System die zugehörige Projektkonfiguration automatisch**. Dadurch muss die `projekt.cfg` nicht immer komplett manuell von Grund auf erstellt werden. In der Praxis wird die automatisch erzeugte Konfiguration anschließend nur noch geprüft und an die gewünschten Anforderungen angepasst.

Der typische Ablauf sieht wie folgt aus.

## Projekt vorbereiten

Zunächst wird festgelegt, welches Formular abgebildet werden soll. Dabei sollte klar sein:

- welche Stammdaten als Basis dienen
- welche zusätzlichen Formularfelder erfasst werden sollen
- ob pro Stammdatensatz nur ein Eintrag oder mehrere Einträge möglich sein sollen
- ob zusätzliche Scripte für Neu, Speichern oder Löschen benötigt werden

Ein neues Projekt besteht in der Regel mindestens aus:

- einer APF-Datei für die Felddefinition
- einem Eintrag in der Projektkonfiguration
- optional einer SQL-Zusatztabelle
- optional zusätzlichen Scripts

## APF-Datei erstellen oder bereitstellen

Im ersten Schritt wird die APF-Datei erstellt oder aus einem bestehenden Projekt übernommen. In dieser Datei wird definiert, welche Felder im Formular vorhanden sind und wie sie dargestellt werden.

Die APF-Datei enthält insbesondere:

- die Formularfelder
- Feldtypen
- Pflichtfeldkennzeichen
- maximale Feldlängen
- Auswahlwerte für Comboboxen
- Farben
- Aliasnamen
- ReadOnly-Eigenschaften

Die APF-Dateien bilden damit die fachliche Grundlage des Formularprojekts.

## Formular für die Verwendung vorbereiten

Konfigurieren Sie die Formulare so, das auf die entsprechenden SQL-Tabellen verwiesen werden kann, wie z.B.:

![](https://aspi-gmbh.de/wp-content/uploads/2026/03/image-30.png)

Konfigurieren Sie in der Akte die entsprechenden Berechtigungen **Akte>>Benutzer**

**Starten Sie die Formulare aus der Akte. Bei Neustart eines Formulars werden die Tabellen automatisch im SQL-Server angelegt. Dieser Schritt ist unbedingt notwendig, da MCDMS zusätzliche Felder in der Tabelle erzeugt, die für die weitere Aktenverwendung notwendig sind.**

## Grundeinstellungen

Konfigurieren Sie das Projekt für die Ausführung in MCHOME. In unserem Beispiel verwenden wir eine eigene INI-Datei. Sie können den Teil [Anschreiben] auch in einer bestehenden Konfigurationsdatei verwenden:

```javascript

                [MAIN]
TITLE=Beispiel QuickForms
BUTTONBASE=BACKBUTTONSSHADDOWRECT-GLASS.PNG
CHANGECOLOR=
SCALEFACTOR=1,0
OFFSETTOP=0
OFFSETLEFT=0

[Anschreiben]
ACTIVATE=True
CtrlTyp=BUTTON
AdminOnly=False
ONLY_USERS=
TooltipText=MC-DMS Anschreiben
Internal=True
Execute=MCDMS-QuickForms.exe
ExecParam={APPPATH}FORMULARBSP_PROJEKT
ProcessName=mcstammdat
ClosebyTerminate=True
OnlyOne=True
AssigndMatchcode=
Image=STANDARDVerwaltungMCDMS.png
```

## Projekt starten und im Setup anlegen

Anschließend wird das Projekt im Setup eingerichtet. Dabei wird die gewünschte APF-Datei(en) ausgewählt.

![](https://aspi-gmbh.de/wp-content/uploads/2026/03/image-31.png)

![](https://aspi-gmbh.de/wp-content/uploads/2026/03/image-32.png)

Wichtig ist: Bei der Auswahl der APF-Datei wird die zugehörige Konfiguration automatisch erzeugt. Das bedeutet, dass das System bereits einen Grundaufbau für das Projekt anlegt. Dazu gehören typischerweise:

- der Projektname
- der Titel
- der Verweis auf die APF-Datei
- grundlegende Einstellungen für das Formular

Dadurch entfällt für neue Benutzer ein großer Teil der manuellen Ersteinrichtung.

Nach diesem Schritt sollte die erzeugte Konfiguration geöffnet und geprüft werden.

In dem Projektverzeichnis \BSP_PROJEKT\ befinden sich jetzt z. B.:

![](https://aspi-gmbh.de/wp-content/uploads/2026/03/image-33.png)

## Projektdefinition prüfen und ergänzen

Nach der automatischen Erstellung wird die Projektdefinition in der `projekt.cfg` überprüft und angepasst.

Wichtige Einstellungen im Abschnitt `[SETTINGS]` sind:

- `MATCHCODE`
  eindeutiger interner Name des Projekts
- `TITEL`
  Bezeichnung, die in der Oberfläche angezeigt wird
- `ENABLED`
  aktiviert oder deaktiviert das Projekt
- `LISTVIEW`
  steuert die Listenansicht
- `MEHRMALIGERSTELLBAR`
  legt fest, ob mehrere Formulareinträge pro Stammdatensatz möglich sind
- `PRIMARYID`
  fachlicher Schlüssel der Stammdaten, meist `PatientID`
- `FORMULAR`
  Pfad zur APF-Datei

Optional können hier auch zusätzliche Funktionen aktiviert werden, etwa:

- `RUN_NEW`
- `RUN_SAVE`
- `RUN_DELETE`
- `AKTECHECK`
- `MATCHCODEMENU`

Wenn ein Projekt nur einen Formulareintrag pro Patient haben soll, wird `MEHRMALIGERSTELLBAR` entsprechend deaktiviert. Wenn Verlaufs- oder wiederkehrende Dokumentationen erfasst werden sollen, wird diese Option aktiviert.

## Stammdatenquelle einrichten

Im nächsten Schritt wird die Datenquelle für die Stammdaten konfiguriert. Diese Stammdaten bilden die Basisliste, auf der das Formular arbeitet.

Dafür werden im Abschnitt `[DATABASE]` unter anderem folgende Angaben benötigt:

- `DATABASE_TYP`
- `DATABASE_CONNECTIONSTRING`
- `StandardDatabase`
- `DATABASE_StandardOrder`
- `DATABASE_EDIT`

Hier wird festgelegt, ob die Stammdaten aus Access, SQL Server oder einer anderen unterstützten Quelle geladen werden.

In vielen Projekten werden die Stammdaten nur angezeigt und nicht bearbeitet. In diesem Fall bleibt `DATABASE_EDIT=FALSE`.

## SQL-Zusatztabelle konfigurieren

Wenn das Formular zusätzliche Daten speichern soll, wird eine konnektierte Formulardatenbank eingerichtet.

Dafür sind insbesondere diese Einstellungen relevant:

- `DB_CONNECT=TRUE`
- `DB_CONNECT_EDIT=TRUE` oder `FALSE`
- `DB_CONNECT_TYP`
- `DB_CONNECT_SOURCE`
- `DB_CONNECT_PRIMARYID`
- `DB_CONNECT_FIELDS`

Hier ist die Unterscheidung der beiden Schlüssel besonders wichtig:

- `PRIMARYID` ist der fachliche Schlüssel des Stammdatensatzes, zum Beispiel `PatientID`
- `DB_CONNECT_PRIMARYID` ist der technische Primärschlüssel des Formulardatensatzes, zum Beispiel `FRMID`

Diese beiden Werte dürfen nicht verwechselt werden.

`DB_CONNECT_SOURCE` verweist auf die Tabelle oder Datenquelle, in der die Formulardaten gespeichert werden.

`DB_CONNECT_FIELDS` enthält alle Felder, die aus der Formulartabelle geladen und gespeichert werden sollen. Dazu gehören in der Regel:

- der technische Primärschlüssel
- der fachliche Verknüpfungsschlüssel
- die Formularfelder
- optionale technische Felder wie `ErstelltAm` oder `GeändertAm`

## Sichtbarkeit und Verhalten der Felder festlegen

Nachdem die Felder grundsätzlich angebunden sind, können weitere Einstellungen ergänzt werden.

Wichtige Optionen sind:

- `DB_CONNECT_HIDDENFIELDS`
  Felder, die intern vorhanden sind, aber nicht angezeigt werden sollen
- `DB_CONNECT_NOCOPYFIELDS`
  Felder, die bei neuen Einträgen oder Kopiervorgängen nicht übernommen werden sollen
- `DB_CONNECT_SORTFIELDS`
  Felder, die in der Oberfläche sortierbar sein sollen
- `DB_CONNECT_SELECT`
  Feld, das bei mehrfach vorhandenen Datensätzen als sprechende Bezeichnung verwendet wird

Diese Einstellungen sind besonders dann wichtig, wenn technische Felder wie `PATIENTID`, `FRMID` oder interne Statusfelder nicht sichtbar sein sollen.

## Formularfelder definieren

Im Abschnitt `[DB_FORMULAR_FIELDS]` werden die einzelnen Felder des Formulars fachlich beschrieben.

Jedes Feld erhält dort seine Eigenschaften, beispielsweise:

- Feldtyp
- Feldlänge
- Pflichtkennzeichen
- Format
- Farben
- Aliasname
- ReadOnly-Status

Ein typischer Eintrag kann zum Beispiel so aussehen:

`PSA=1;9;N;;Black;#98dede;PSA Wert;0`

Ein Auswahlfeld kann beispielsweise so definiert werden:

`MELDEANLASS=5;255;J;statusaenderung,statusmeldung;Black;White;Anlass;1`

Damit ist direkt festgelegt:

- dass es sich um ein Auswahlfeld handelt
- welche Werte erlaubt sind
- dass das Feld ein Pflichtfeld ist
- wie es angezeigt wird
- ob es editierbar ist

## Suchabfragen definieren

Im Abschnitt `[SELECTIONS]` können vorbereitete Abfragen hinterlegt werden. Diese dienen dazu, unterschiedliche Datenbestände oder Filter direkt auswählbar zu machen.

Beispiele sind:

- alle aktuellen Patienten
- Patienten der letzten 90 Tage
- nur bestimmte Fachabteilungen
- Test- oder Musterabfragen

Das erleichtert den Einstieg für Benutzer, weil nicht jedes Mal eine neue Abfrage erstellt werden muss.

## Suchfelder konfigurieren

Im Abschnitt `[SUCHFELDER]` wird festgelegt, nach welchen Feldern innerhalb der Daten gesucht werden kann.

Typischerweise sind das zum Beispiel:

- Name
- Vorname
- Fallnummer
- Geburtsdatum
- PatientID

Damit wird die Standardsuche für den Benutzer definiert.

## Optionale Scripts einbinden

Wenn das Projekt zusätzliche Abläufe benötigt, können Scripts eingebunden werden.

Dazu gehören insbesondere:

- `RUN_NEW` für die Vorbelegung oder Neuerstellung
- `RUN_SAVE` für Aktionen nach dem Speichern
- `RUN_DELETE` für Folgeaktionen nach dem Löschen
- Menüeinträge im Abschnitt `[RUN]`

Gerade bei `RUN_NEW` ist wichtig, dass das Script die Variable `SCRIPT.RESULT` zurückliefert. Nur wenn sie auf `TRUE` gesetzt ist, werden die zurückgegebenen Werte in die aktuelle Zeile übernommen.

Scripts können verwendet werden, um:

- Felder automatisch vorzubelegen
- Folgeprozesse zu starten
- Exporte zu erzeugen
- Register- oder Schnittstellenprozesse anzustoßen

## Projekt erstmals starten

![](https://aspi-gmbh.de/wp-content/uploads/2026/03/image-34-1024x494.png)

Nach der Konfiguration wird das Projekt zum ersten Mal gestartet.

Dabei sollte Schritt für Schritt geprüft werden:

- wird das Projekt in der Oberfläche angezeigt
- wird die richtige APF-Datei geladen
- werden die Stammdaten korrekt angezeigt
- werden die Formularfelder korrekt eingeblendet
- sind Pflichtfelder, Farben und Aliasnamen wie gewünscht gesetzt
- werden versteckte Felder tatsächlich nicht angezeigt
- funktioniert die Suche
- funktionieren vorbereitete Selektionen

## Neuen Datensatz testen F9

Im nächsten Schritt sollte ein neuer Formulareintrag testweise angelegt werden.

In unserem Beispiel sind die RUN-Scripte aktiviert

```javascript

                RUN_NEW={APPPATH}FORMULARBSP_PROJEKTDEMO_NEW.MCFSCR
RUN_SAVE={APPPATH}FORMULARBSP_PROJEKTDEMO_SAVE.MCFSCR
RUN_DELETE={APPPATH}FORMULARBSP_PROJEKTDEMO_DELETE.MCFSCR
```

Dabei ist zu prüfen:

- wird ein neuer Datensatz korrekt erzeugt
- wird bei Bedarf ein `RUN_NEW`-Script aufgerufen
- werden Vorbelegungen übernommen
- funktioniert die Pflichtfeldprüfung
- funktioniert die Feldlängenprüfung
- werden die Daten in die richtige SQL-Zusatztabelle gespeichert
- wird der technische Schlüssel, zum Beispiel `FRMID`, korrekt erzeugt

Wichtige Hinweise und Angaben zu den Parametern finden Sie über der jeweiligen Sektion, z.B.:

```javascript

                //Format:FeldTyp;FeldLänge;FeldPflicht;FeldFormat kann z. B. sein Datum: dd.mm.yyyy und bei Combobox:1,2,3,4,5;Vordergrund;Hintergrund;Aliasname
//Mögliche Werte für Farben: '#000000' oder 'black' siehe auch 'https://www.w3schools.com/colors/colors_picker.asp'
//Die Felder ERSTELLTAM und DATE werden von MCDMS automatisch bei Datenbankerstellung generiert und müssen hier vorhanden sein!
```

## Bestehenden Datensatz ändern

Anschließend sollte ein bestehender Datensatz testweise geändert werden.

Dabei ist zu prüfen:

- werden Änderungen korrekt erkannt
- werden nur Formularfelder bearbeitet
- funktioniert das Speichern ohne Fehler
- werden Zeitstempel wie `GeändertAm` korrekt gesetzt
- bleiben Stammdaten unverändert

## Mehrfacherstellbare Projekte testen

Wenn `MEHRMALIGERSTELLBAR=TRUE` gesetzt ist, sollte zusätzlich geprüft werden:

- können mehrere Formulareinträge pro Stammdatensatz angelegt werden
- erscheint die Funktion zur Auswahl vorhandener Einträge
- wird die definierte Bezeichnung aus `DB_CONNECT_SELECT` korrekt angezeigt
- funktionieren Sortierung und Auswahl der vorhandenen Datensätze

## Benutzerspezifische Einstellungen prüfen

Zum Abschluss sollte geprüft werden, ob die benutzerspezifischen Einstellungen korrekt übernommen werden. Dazu gehören je nach Projekt und Programmstand beispielsweise:

- Fensterposition
- Spaltenbreiten
- letzte Auswahl
- Sortierung
- Suchzustände

Diese Werte werden typischerweise in der `user.ini` gespeichert und beeinflussen die persönliche Arbeitsumgebung des jeweiligen Benutzers, nicht jedoch die eigentliche Projektdefinition.

## Typische Fehlerquellen bei einem neuen Projekt

Gerade bei der ersten Einrichtung treten häufig dieselben Fehler auf. Besonders zu beachten sind:

- `PRIMARYID` und `DB_CONNECT_PRIMARYID` wurden verwechselt
- Feldnamen in APF und SQL-Tabelle stimmen nicht exakt überein
- Pflichtfelder wurden definiert, aber beim Test nicht befüllt
- Feldlängen in der Konfiguration sind zu klein gewählt
- technische Felder wie `PATIENTID` oder `FRMID` fehlen in der Feldliste
- `DB_CONNECT_FIELDS` enthält nicht alle benötigten Felder
- ein Script liefert kein `SCRIPT.RESULT=TRUE`
- die SQL-Zusatztabelle ist korrekt angebunden, aber `DB_CONNECT=TRUE` fehlt
- das Projekt wurde im Setup angelegt, die automatisch erzeugte Konfiguration wurde aber nicht vollständig geprüft

  [Download Beispielprojekt](https://aspi-gmbh.de/wp-content/uploads/2026/03/MCDMS-QuickForms_Beispielprojekt.zip)
