Zum Hauptinhalt springen
Version: Preview

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.

Bitte beachten

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​

FeldBedeutung
AktionScript
ToolTip TextText, der beim Überfahren der Schaltfläche angezeigt wird
Image NameSymbol der Schaltfläche, ausgewählt über dieselbe Symbolliste wie Ribbon-Schaltflächen. Ohne Angabe wird ein Standardsymbol verwendet.
Script Action NameName 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:

  1. Im Formular-Designer die Spalte mit der Aktion Script anlegen, den Script Action Name eintragen und das Formular speichern.
  2. 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.
  3. Das Skript kompilieren.
  4. Ü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.

ElementBeschreibung
IsRowSelectedfalse, 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
ClickedColumnNameName der Spalte, deren Aktionsknopf geklickt wurde
NameName 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"));
}