SQL TableBox
Mit diesem Steuerelement können beliebige SQL-Abfragen ausgeführt und die Ergebnisse in einer Tabelle angezeigt werden.
Die Abfrage ist auf maximal 500 Datensätze beschränkt.

Datenbankverbindung (Optional)
Diese kann optional ausgefüllt werden wenn die Abfrage nicht auf die gleiche Datenbank wie die des aktuelle Formular ausgeführt werden soll.
SQL
SQL der die Abfrage Definiert.
Keine Datensätze Text
Text der angezeigt werden soll wenn von der Abfrage keine Datensätze gefunden werden.
Datensatz Limit
Maximale Anzahl an Datensätzen die angezeigt werden. Dieser Wert kann nicht grösser als 500 gesetzt werden. Diese Begrenzung schützt die Applikation vor zu großen Abfragen und verbessert die Performance und Auslastung.
Datensatz Limit Text
Meldung die angezeigt wird wenn mehr als die in RecordLimit angegebene Datensatz Menge von der Abfrage zurück kommt.
Beispiel: "Nur die ersten 100 Datensätze werden angezeigt..."
Spalten
Hier können Sie die Spalten Titel, Breite etc konfigurieren. Wenn hier nichts konfiguriert ist verwendet das Programm Standard Einstellungen.
Klicken Sie Spalte hinzufügen und geben Sie dann bei "Colum Name" den Name der Spalte ein. Bei "Aktion Tooltip Text" können Sie den Text angeben der erscheinen soll wenn der Anwender die Maus auf den Knopf hält.
Mit "Knopf hinzufügen" können Sie spezielle "Aktions Knöpfe" erstellen.
Bei "Tablename" und "Filter" können Spaltenwerte angeben in dem Sie diese in geschweiften Klammern angeben. Die Werte werden dann zur Laufzeit ersetzt. Wenn Sie "Parent." vor den Spaltennamen schreiben wird der Spaltenwert des aktuellen Datensatzes des Dialogs ersetzt.
Aktionsknöpfe
- Open Form: Öffnet ein Formular basierend auf Spaltendaten
- Highlight: Hebt ein Kartenobjekt hervor
- DeleteFeature: Löscht Features (erfordert entsprechende Benutzerrechte)
- ShowInTopologyExplorer: Zeigt Features im Topologie-Explorer an
- Script: Führt eine Funktion eines Skripts aus
Aktion - Open Form
Mit "Open Form" kann ein Formular geöffnet werden.
Geben sie bei "Tablename" den Namen des Formulars ein der geöffnet werden soll. Wenn der Dialogname aus einer Tabellenspalte gelesen werden soll geben Sie den Namen der Spalte in geschweiften Klammern an. Sie können hier ggf. auch den Formular Layoutnamen mit angeben.
Beispiele:
STRASSE
STRASSE.ERFASSUNG
{TABLE_NAME}
{TABLE_NAME}.ERFASSUNG
Geben Sie bei "Filter" den Filter an der zum öffnen des Formulars verwendet werden soll.
Beispiel:
FID={FID}
Aktion - Highlight
Mit "Highlight" kann ein Objekt in der Karte gehighlighted werden.
Geben sie bei "Tablename" den Namen der Tabelle an zu der das zu Highlightende Objekt gehört.
Wenn der Tabellenname aus einer Tabellenspalte gelesen werden soll geben Sie den Namen der Spalte in geschweiften Klammern an.
Beispiele:
STRASSE
{TABLE_NAME}
Geben Sie bei "Filter" den Filter an der zum highlighten des Objektes verwendet werden soll. Sie können hier Spaltenwerte angeben in dem sie diese in geschweiften Klammern angeben. Die Werte werden dann zur Laufzeit ersetzt. Wenn Sie "Parent." vor den Spaltennamen schreiben wird der Spaltenwert des aktuellen Datensatzes des Dialogs ersetzt.
Beispiel:
FID={FID}
Aktion - DeleteFeature
Mit "DeleteFeature" können Sie Feature löschen.
Geben Sie bei Tabelle den Name der Tabelle an in der Feature gelöscht werden sollen. Geben Sie bei "Filter" den Filter an der die zu löschenden Objekte holen soll. Sie können hier Spaltenwerte angeben in dem sie diese in geschweiften Klammern angeben. Die Werte werden dann zur Laufzeit ersetzt. Wenn Sie "Parent." vor den Spaltennamen schreiben wird der Spaltenwert des aktuellen Datensatzes des Dialogs ersetzt.
FID={FID} and FID_BAUM={PARENT.FID}
Beim "Action Image Name" können Sie das Bild und die Farbe für den Knopf wählen.
Die Funktion ist nur ausführbar, wenn der Benutzer über die entsprechenden Löschrechte für die Tabelle verfügt, in der das Feature gelöscht werden soll, sowie Löschrechte für die Tabelle/Form, in der das SQLTableBox Steuerelement steht.
Aktion - ShowInTopologyExplorer
Öffnet den Topologie Explorer und zeigt das Feature im Topologie Explorer an.
Geben sie bei "Tablename" den Namen der Tabelle an. Wenn der Tabellenname aus einer Tabellenspalte gelesen werden soll geben Sie den Namen der Spalte in geschweiften Klammern an.
Beispiele:
STRASSE
{TABLE_NAME}
Geben Sie bei "Filter" den Filter an der verwendet werden soll. Sie können hier Spaltenwerte angeben in dem sie diese in geschweiften Klammern angeben. Die Werte werden dann zur Laufzeit ersetzt. Wenn Sie "Parent." vor den Spaltennamen schreiben wird der Spaltenwert des aktuellen Datensatzes des Dialogs ersetzt.
Beispiel:
FID={FID}
Wenn der Filter mehrere Features zurück liefert wird immer nur das erste Feature im Topologie Explorer angezeigt.
Aktion - Script
Ab Version 27.2.46
Mit der Aktion Script führt ein Aktionsknopf eine Skriptfunktion aus, ähnlich wie ein Script Button. Das Skript kann zusätzlich die Zeile lesen, in der der Knopf geklickt wurde.
Konfiguration der Spalte
| Feld | Bedeutung |
|---|---|
| Aktion | Script |
| ToolTip Text | Text, der beim Überfahren der Schaltfläche angezeigt wird |
| Image Name | Symbol der Schaltfläche, ausgewählt über dieselbe Symbolliste wie Ribbon-Schaltflächen. Ohne Angabe wird ein Standardsymbol verwendet. |
| Script Action Name | Name der Aktion, die beim Klick an das Skript übergeben wird, z.B. ShowDetails. Leerzeichen am Anfang und am Ende werden entfernt. |
Alle Aktionsknöpfe einer SQL TableBox rufen dieselbe Funktion auf. Welcher Knopf geklickt wurde, sagt der Script Action Name, den die Funktion als ersten Parameter erhält.
Skript anlegen
Die SQL TableBox wird erst als skriptfähiges Steuerelement angeboten, wenn mindestens eine Spalte die Aktion Script verwendet. Vorgehen Sie in dieser Reihenfolge:
- Im Formular-Designer die Spalte mit der Aktion Script anlegen, den Script Action Name eintragen und das Formular speichern.
- Im Skripting-Dokument das Formular auswählen und auf Fehlenden hinzufügen klicken. Ist das Formular noch nicht im Skripting-Dokument enthalten, wird es über Hinzufügen aufgenommen; die SQL TableBox wird dabei automatisch übernommen.
- Das Skript kompilieren.
- Überprüfen, ob das Skript dem Projekt zugeordnet ist (Projekt, Liste Scriptings).
Vorsicht: MapEdit Desktop lädt ausschließlich Skripte, die dem Projekt zugeordnet sind. Fehlt die Zuordnung, ist das Skript zwar kompiliert, aber der Aktionsknopf meldet beim Klick die Fehlermitteilung "Scripting Class for ... not found".
Ein Formular, das bereits im Skripting-Dokument enthalten ist, wird nicht erneut automatisch nach neuen Steuerelementen durchsucht. Eine später ergänzte SQL TableBox muss über Fehlenden hinzufügen nachgetragen werden.
Die Funktion heißt wie die SQL TableBox, ohne das führende $, plus _Click. Sie bekommt den Script Action Name des geklickten Knopfes und die Zeile, in der geklickt wurde. Für die TableBox $TABELLE1 wird also folgende Vorlage angelegt, mit einem Zweig je Script Action Name:
public void SqlTableBox1_Click(string actionName, SqlTableBoxRow row)
{
switch (actionName)
{
case "ShowDetails":
break;
case "RecalcRow":
break;
}
}
Die Funktion muss public sein.
Zugriff auf die aktuelle Zeile
Die Zeile ist der zweite Parameter der Funktion. Die Spaltennamen sind die Namen der Spalten innerhalb der SQL-Abfrage der TableBox.
| Element | Beschreibung |
|---|---|
IsRowSelected | false, wenn keine Zeile geklickt oder markiert ist. Vor dem Lesen von Werten immer prüfen. |
StrValue(spalte) | Wert der Zeile als Text |
IntValue(spalte) | Wert als Integer |
LngValue(spalte) | Wert als Long |
DblValue(spalte) | Wert als Double |
BoolValue(spalte) | Wert als Boolean |
DateTimeValue(spalte) | Wert als Datum |
IsNull(spalte) | true, wenn die Zeile in dieser Spalte keinen Wert hat |
ContainsColumn(spalte) | true, wenn die SQL-Abfrage diese Spalte liefert |
ClickedColumnName | Name der Spalte, deren Aktionsknopf geklickt wurde |
Name | Name der SQL TableBox, zu der die Zeile gehört |
Die Zeile ist die Zeile, in der der Aktionsknopf geklickt wurde. Wurde das Skript nicht über einen Aktionsknopf der TableBox gestartet, ist es die vom Benutzer markierte Zeile.
Auf den Datensatz des Formulars wird weiterhin wie gewohnt über this.StrValue("SPALTE") zugegriffen.
Beispiel
public void SqlTableBox1_Click(string actionName, SqlTableBoxRow row)
{
switch (actionName)
{
case "ShowDetails":
string fid = row.StrValue("FID");
string name = row.StrValue("NAME");
this.MsgBox("Leitung " + fid + " / " + name + " im Schrank " + this.StrValue("FID"));
break;
case "RecalcRow":
this.ExecuteSql("update EL_CABLE set LENGTH = ST_Length(GEOM) where FID = " + row.LngValue("FID"));
break;
}
}
Zugriff aus anderen Steuerelementen
Mit GetSqlTableBoxRow lässt sich die markierte Zeile einer SQL TableBox aus jedem Skript des Formulars lesen, zum Beispiel aus einem Script Button. Der Parameter ist der Name des Steuerelements; hat das Formular genau eine SQL TableBox, können Sie ihn weglassen:
public override void Button_Click()
{
var row = this.GetSqlTableBoxRow("$SqlTableBox1");
if (!row.IsRowSelected)
{
this.MsgBox("Bitte zuerst eine Zeile markieren.");
return;
}
this.Highlight("EL_CABLE", "FID = " + row.LngValue("FID"));
}