Wartung / Maintencance - Upgrade Version 8.5.12 - Mittwoch/Wednesday - 2024-08-28 07:30-09:00 a.m.
Seitenhistorie
Anker | ||||
---|---|---|---|---|
|
Inhalt |
---|
Beschreibung
Auszug |
---|
Die Funktion sucht nach Eingabe eines Textes in einer der PND-Felder 310, 315 oder 450 in der GKD oder SWD und erstellt bei nur einem gefundenen Treffer die entsprechende Verknüpfungen z.B. zur Berufsbezeichnung in der SWD. Werden mehrere Treffer in der SWD gefunden, so muss nach Auswahl des relevanten SWD-Satzes die Funktion PNDLinkCont ausgeführt werden. |
Historie
Datum | geändert von | Beschreibung |
---|---|---|
2010-08-01 | Grund | neu erstellt in Zusammenarbeit mit Herrn Schneider, HeBIS |
Code
dnb_authorities.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