Dialog zur Zuordnung von Schlüssel-Wert-Paaren.

Dialog zur Zuordnung von Schlüssel-Wert-Paaren. Der Aufruf öffnet einen Dialog, in dem ein Liste von Schlüssel-Werte-Paaren angezeigt wird. In der dritten Spalte der angezeigten Liste können den Werten neue Schlüssel zugeordnet werden. Die Schlüssel-Werte-Paare können wahlweise aus dem Datenpool oder aus Stringlisten geladen werden. Ist eine Anweisung zum Sichern der neuen Zuordnungen gegeben, werden die Änderungen beim Bestätigen des Dialoges automatisch im Datenpool eingetragen. In einer optionalen Liste können die neuen Schlüssel in der Reihenfolge der Paare zurückgegeben werden.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
title String oder char* - Titel des Dialoges
info String oder char* - Beschreibungstext über der Liste
selectStmt String oder char* - SQL- oder xmlquery-Anweisung zum Laden der Schlüssel-Werte-Paare. Die Anweisung darf leer sein. In diesem Fall werden die Schlüssel-Werte-Paare aus den Listen keys und values geladen. Ansonsten muss die Anweisung drei Ergebnisspalten (int, string, string]) liefern, die id des Eintrages, die zum Sichern von Änderungen verwendet wird und Schlüssel und Wert, z.B, \span[src]{select id, key_, value from tt where id > 0.
updateStmt String oder char* - SQL- oder xmlquery-Anweisung zum Sichern geänderter Schlüssel. Die Anweisung wird beim Bestätigen des Dialoges ausgeführt. Es werden nur Schlüssel mit einem Wert != "" gesichert. Die Anweisung darf leer sein. Sie wird ignoriert, wenn selectStmt leer ist. Ansonsten muss die Anweisung zwei ? enthalten. Das erste wird durch den neuen Schlüssel ersetzt, das zweite durch die id des Eintrages, etwa update tt set key_ = ? where id = ?.
keys StringList 0 Liste von Schlüsseln. Diese Liste wird nur verwendet, wenn selectStmt leer ist.
values StringList 0 Liste von Werten. Diese Liste wird nur verwendet, wenn selectStmt leer ist. Sind keys und valuesunterschiedlich lang, werden Einträge nur bis zum Ende der kürzenen Liste beachtet. un
result IDTypeList 0 Liste der neuen Schlüssel. Diese Liste wird ausgefüllt, wenn der Dialog mit Okay bestätigt wurde. Die Einträge enthalten folgende Werte:

idtype::id : Alte ID (bei Listen aus keys und values die alte (1-basierte) Zeilennummer
idtype::id2 : Neu ID (bei Listen aus keys und values die neue (1-basierte) Zeilennummer
idtype::stringid : Neuer Schlüssel. Der Schlüssel muss dabei nicht in der Liste existieren

Beispiel für eine einfache Neuordung von Schlüssel und Wert in einem XMl-Datenpool.

int main ()
{
    key_value_mapping (
     	"ttt",
     	"Zuordnungen der Datei ttt",
     	"'ttt.xml' select id, name2, name node colors.color where id > 0",
     	"'ttt.xml' update name2=? node colors.color where id = ?");
    return 0;
}

In einem SQL-Datenpool sieht die Anweisung fast gleich aus.

int main ()
{
    key_value_mapping (
     	"ttt",
     	"Zuordnungen der Tabelle ttt",
     	"select id, key_, value from ttt where id > 0",
     	"update ttt set key_ = ? where id = ?");
    return 0;
}

Für komplizierte Situationen, in denen die Schlüssel-Werte-Paare nicht über ein einfaches select geladen und über ein einfaches update gesichert werden können, können die StringListen und die Ergebnisliste verwendet werden. Hier ein einfaches Gerüst für das Skript.

int main ()
{
    StringList		keys		= stringlist::alloc ();
    StringList		values		= stringlist::alloc ();
    IDTypeList		mappings	= idtypelist::alloc ();
    IDType			map			= idtype::alloc ();
    int				result;
    int				i;
//Wertepaare sammeln for (i = 0; i < 10; i++) { char key[256], value[256];
sprintf (key, "Key %d", i+1); sprintf (value, "Value %d", i+1); stringlist::append (keys, key); stringlist::append (values, value); }
result = key_value_mapping (   "Leitnummerntausch",   "Zuordung neuer Leitnummern",   "",   "",   keys,   values,   mappings);
//Zuordnungen auswerten if (result == 0) { i = 0; map = idtypelist::first (mappings); while (map) { if (strcmp (idtype::stringid (map), "") != 0) { wlog ("", "Mapping : Entry %d --> '%s', old id %d, new id %d\n",   i+1,   idtype::stringid (map),   idtype::id (map),   idtype::id2 (map)); } map = idtypelist::next (mappings); i = i+1; } } return 0; }

Seit
Version 2.0 R570, 20. Jan. 2008

Verfügbarkeit
priint:comet InDesign® Plug-Ins, comet_pdf

Siehe auch
IDTypeList
StringList

Alphabetic index HTML hierarchy of classes or Java