Seitenhistorie
...
Datum | geändert von | Beschreibung |
---|---|---|
2010-08-01 | Grund | neu erstellt in Zusammenarbeit mit Herrn Schneider, HeBIS |
Code
dnb_authorityauthorities.js
Codeblock |
---|
function __pndLink (){ /*-------------------------------------------------------------------------------------------------------- __pndLink () Die interne Funktion prüft, ob ein Editfenster geöffnet ist. (Wird vor der Funktion pndLink ausgeführt!) Verwendete Unterfunktionen: Historie: 2010-08-01 Stefan Grund : erstellt --------------------------------------------------------------------------------------------------------*/ return (application.activeWindow.title != null); } function PNDLink() { /*-------------------------------------------------------------------------------------------------------- pndLink () Erstellt Verknüpfungen von der PND zur SWD in unterschiedlichen Feldern (z.B. 315) Verwendete Unterfunktionen: diverse HeBIS-Funktionen, __prompterPruef Historie: 2010-08-01 Stefan Grund : erstellt --------------------------------------------------------------------------------------------------------*/ var tag; var fldtmp; // Kategorie und Inhalt im Pica-Zeichensatz var strtmp; // Feldinhalt im latin1 - Zeichensatz var strlen; // Länge des Feldes var strcmd; // Such-Kommando var waittxt; // Warnungstext für //Weiter// var strstatus; // Status nach Suche var strsize; // Size nach Suche var deskriptor; // Deskriptor für 315 var PPN; // gefundene PPN var winid; // id of edit screen var swinid; // id of search window var tmpid; // id of actual window var exist_a; // true, wenn schon Deskriptor a existiert var trunkiert; // "?" falls Suchbegriff trunkiert, sonst "" if (!application.activeWindow.title) { __hebisError("Dieses Skript kann nur im Korrektur- oder Erfassungsmodus verwendet werden!"); return false; } snapshot = application.windows.getWindowSnapshot; winid = application.activeWindow.windowID; messageBoxHeader = "PND-Link"; tag = application.activeWindow.title.tag; //Belegung verschiedener Variablen je nach zu bearbeitender Kategorie //Suchanfragen können in Verbünden anders lauten, Unterscheidung zB nach Caption des Fensters: //"if (application.activeWindow.getVariable("system").indexOf("ZENTRALKATALOG") == -1 ){ " //etc. switch (tag) { case "310" : messageBoxHeader = "PND Ort"; var strcmd1 = "rec n;f an \""; var strcmd2 = "?\" and nad g not sn [0123456789]?"; // Wenn nur ein Ort gefunden wird, nicht automatisch übernehmen -> muss geprüft werden, // da es sich trotzdem um einen anderen, zufällig gleichnamigen Ort handeln kann var pruef_zwang = "true"; //Bis zu dieser Anzahl werden Datensätze angezeigt, sonst Aufforderung für genauere Suche var set_zu_gross = 1000; break; case "315" : messageBoxHeader = "PND Berufsbezeichnung"; var strcmd1 = "rec n;f sp \""; var strcmd2 = "\" and sn 9.4ab"; exist_a = application.activeWindow.title.findTag(tag + " |a|", 0,false, false,false); var pruef_zwang = "false"; var set_zu_gross = 15; break; case "450" : messageBoxHeader = "PND Affiliation"; var strcmd1 = "rec n;f kor "; var strcmd2 = ""; var pruef_zwang = "false"; var set_zu_gross = 200; break; default: __hebisError("Dieses Skript kann nur Kategorien vom Typ 310, 315 oder 450 " + "bearbeiten"); return false; } application.activeWindow.title.startOfField(false); application.activeWindow.title.wordRight(1,false); if (tag != application.activeWindow.title.tag) { __hebisError("Die Kategorie " + tag + " ist leer; das Skript erwartet als " + "Inhalt einen Suchbegriff."); return false; } application.activeWindow.title.endOfField(true); strtmp = application.activeWindow.title.selection; if (strtmp.charAt(0) == "|") { __hebisError("Der Feldinhalt in Kategorie " + tag + " beginnt mit einem " + "in diesem Skript nicht erlaubten Zeichen: '|'."); return false; } //Ist dieser Teil noch relevant? trunkiert = ""; if (strtmp.lastIndexOf("?") == strtmp.length-1) { // Trunkierung zur Zeit immer erlaubt!! // trunkiert = application.getProfileInt("PND315","allow_wild",0) // if trunkiert = 0 then // msgbox "Das Skript erlaubt keine trunkierte Suche." &vbLf & _ // "Bitte suchen Sie nach vollständigen Berufsbezeichnungen", _ // vbCritical // exit sub // end if if (strtmp.length == 1) { __hebisError("Kategorie " + tag + " enthält keinen sinnvollen Inhalt."); return false; } trunkiert = "?"; //strtmp = strtmp.substr(0,strtmp.length-1); } //Gehe zur zu bearbeitenden Kategorie und markiere den Inhalt (wird später mit PPN überschrieben) application.activeWindow.title.startOfBuffer(false); application.activeWindow.title.find(tag + " "+ strtmp, true ,false ,false); application.activeWindow.title.startOfField(false); application.activeWindow.title.wordRight(1,false); application.activeWindow.title.endOfField(true); strcmd = strcmd1 + strtmp + strcmd2 // strcmd = "rec n;f ans \"" + strtmp + "\"" //GBV-Recherche (Festlegung müsste oben bei switch/case erfolgen) //Festlegung der Indikatoren if (tag == "315") { if (!exist_a) { deskriptor = "|a|"; } else { deskriptor = "|b|"; } } else if (tag == "310") { boxTxt = "Um welche Art von Ort handelt es sich? Geben Sie ein:\n\n" + "\"c\" \t\t --> Geburtsort\n\n" + "\"d\" \t\t --> Sterbeort\n\n" + "\"e\" \t\t --> Wirkungsort"; deskriptor = "|" + __prompterPruef(messageBoxHeader,boxTxt,"c,d,e","") + "|"; //User klickt Abbruch oder gibt nichts ein if (deskriptor == "||" || deskriptor.indexOf("null") > -1) { __hebisError("Abbruch der Funktion!"); return false; } //gilt für 450 } else { deskriptor = ""; } application.activeWindow.command(strcmd,true); strstatus = application.activeWindow.status; newid = application.activeWindow.windowID; if (strstatus == "NOHITS"){ if (tag == "315") { deskriptor = "|c|"; } application.activeWindow.closeWindow(); __hebisError( "Bitte überprüfen Sie noch einmal den Suchstring\n" + " *** " + strcmd + " ***\n\n" + "Möglicherweise liegt ein Schreibfehler vor."); application.activeWindow.title.startOfField(false); application.activeWindow.title.wordRight(1,false); application.activeWindow.title.insertText(deskriptor); application.activeWindow.title.endOfField(true); return false; } if (strstatus != "OK") { application.activeWindow.closeWindow(); __hebisError("Es ist ein unerwarteter Fehler aufgetreten."); return false; } if (application.activeWindow.getVariable("scr") == "GN") application.activeWindow.simulateIBWKey("FR"); setsz = application.activeWindow.getVariable("P3GSZ"); if (setsz > set_zu_gross) { application.activeWindow.closeWindow(); __hebisError( "Die Suche ergab insgesamt " + setsz + " Treffer.\n" + "Bitte schränken Sie den Suchbegriff ein, um die Treffermenge " + "zu reduzieren"); return false; } if (setsz > 1 || pruef_zwang == "true") { msgtxt1 = "Die Suche ergab insgesamt " + setsz + " Treffer.\n"; if (pruef_zwang == "true" && setsz == 1) { msgtxt2 = "Meinten Sie diesen Normdatensatz? \n" + "Wenn Sie ihn zur Verknüpfung verwenden wollen, "; } else { msgtxt2 = "Bitte suchen Sie den entsprechenden Normdatensatz aus,\n" + "den Sie zur Verknüpfung verwenden wollen, und "; } msgtxt3 = "aktivieren Sie dann die Funktion 'PNDLinkCont'.\n\n" + "Sollten Sie keinen entsprechenden Normdatensatz vorfinden,\n" + "so schließen Sie einfach das aktuelle Fenster."; __hebisMsg(msgtxt1 + msgtxt2 + msgtxt3); application.activateWindow(winid); application.activeWindow.title.startOfField(false); application.activeWindow.title.wordRight(1,false); application.activeWindow.title.insertText("|c|"); application.activeWindow.title.startOfField(false); application.activeWindow.title.wordRight(1,false); application.activeWindow.title.endOfField(true); application.activateWindow(newid); global.pnd315keep.winid = winid; global.pnd315keep.newid = newid; global.pnd315keep.fldtmp = "315 |c|"+strtmp; global.pnd315keep.deskriptor = deskriptor; return true; } PPN = application.activeWindow.getVariable("P3GPP"); application.activeWindow.closeWindow(); application.activeWindow.title.insertText(deskriptor + "!" + PPN + "!"); return true; } |
...
Überblick
Inhalte