Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

...

Datum

geändert von

Beschreibung

2010-08-01

Grund

neu erstellt in Zusammenarbeit mit Herrn Schneider, HeBIS

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;

}

...