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. |
...
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