Skip to end of metadata
Go to start of metadata

Beschreibung

Die Funktion öffnet eine Eingabebox, in der Kategorie und Schlagwort eingegeben werden. Danach sucht die Funktion nach dem Schlagwort und erstellt eine Kategorie mit der entsprechenden Verknüpfungs-ID. Wie Funktion ANS, jedoch Suche im Index AN und mit Trunkierung!

Historie

Datum

geändert von

Beschreibung

2011-05-03

Althaus

neu erstellt

Code

dnb_inhaltserschliessung.js

function __Schlagwortsuche(strKommando,strTrunkierung) {

	var intWinID1	   = application.activeWindow.windowID;
	var intWinID2;
	var swPrompt = utility.newPrompter();
	var strKategorie;
	var strSchlagworte;
	var strIDN = application.activeWindow.getVariable("P3GPP");
	var strSWDIDN;
	var msg;
	var intLength;
	var strText = 	"Eingabeform:       Kategorie Schlagwort(e)\n" + 
					"             z.B.: 5100 Magie\n"               +
					"             oder  5101 feng shui\n";
	var strEingabe = "";
	
	if (application.activeWindow.getVariable("scr") != "MT") {
		__dnbFehler("Fehler","Die Funktion kann nur im Korrekturmodus aufgerufen werden!");
	} else {
		msg = swPrompt.prompt(strTrunkierung,strText,strEingabe,null,null);
		while (msg == true)	{
			strEingabe = swPrompt.getEditValue();
			intLength = strEingabe.length;
			if (intLength < 6) {
				__dnbFehler(strTrunkierung,"Bitte Eingabeform beachten: " + strText);
				msg = swPrompt.prompt(strTrunkierung,strText,strEingabe,null,null);
			} else {
				msg = false;
				strKategorie = strEingabe.substring(0,4);
				strSchlagworte = strEingabe.substring(5,intLength+1);
				__geheZuKat(strKategorie,"",false);
				application.activeWindow.title.insertText(strKategorie + " \n");
				application.activeWindow.title.lineUp(1 , false);
				application.activeWindow.title.endOfField(false);
				
				if (strTrunkierung == "ANSrecn") {
					application.activeWindow.command (strKommando + "\"\"" + strSchlagworte + "\"\"", true);
				} else {
					application.activeWindow.command (strKommando + strSchlagworte, true);
				}
				
				intWinID2 = application.activeWindow.windowID;
				strSWDIDN = application.activeWindow.getVariable("P3GPP");
				if ((strSWDIDN == strIDN) || (application.activeWindow.getVariable("scr") != "8A")) {
					__dnbFehler("Schlagwortsuche","Schlagwort nicht eindeutig zu ermitteln.\n" 
								+ "Mehrere Treffer: Bitte wählen Sie manuell aus und rufen Sie dann die Funktion HoleIDN auf\n"
								+ "Nichts gefunden: Bitte schließen Sie das Fenster und rufen Sie die Funktion ggf. erneut auf!");
				} else {
					application.closeWindow(intWinID2);
					application.activateWindow(intWinID1);
					__geheZuKat(strKategorie,"",true);
					application.activeWindow.title.insertText("!" + strSWDIDN + "!");		
				}
			}
		}
	}
}

function ANSrecn() {

	__Schlagwortsuche("rec n;f an ","ANSrecn");

}
VB-Code
'********************************************************************
Sub ANSrecn()
'********************************************************************

  Call Schlagwortsuche("rec n;f an ","ANSrecn")

End Sub  ' ANSrecn

'********************************************************************
Private Sub Schlagwortsuche(Kommando,Trunkierung)
'********************************************************************
' Wird von ANSrecn und ANS aufgerufen
 on error resume next
 Dim Text, Schleife,Eingabe
 
  Text = "Eingabeform: Kategorie Schlagwort(e) Operator" & vbCrLf & _
          "             z.B.: 5100 Magie +" & vbCrLf & _
          "             oder  5101 -feng shui ;" & vbCRLf & _
          "     Der Operator ist optional"

  Schleife = vbYes
  Eingabe = ""
  Do
    If Application.ActiveWindow.Variable("scr") <> "MT" Then
      MsgBox "Diese Funktion kann nur im Korrekturmodus aufgerufen werden", _
              vbOKOnly+vbCritical,Titel
    Else
      Eingabe = Trim(InputBox(Text,Titel,Eingabe))
      If Len(Eingabe) = 0 Then
        Schleife = vbAbort
      Else
        If Len(Eingabe) < 6 Then
          MsgBox "Bitte Eingabeform beachten: " & vbCrLf & Text1, _
                vbOKOnly+vbExclamation,Titel
          Schleife = vbNo
        Else
          Call Teilung(Eingabe)
		  If Trunkierung = "ANSrecn" Then
				Suchschlagwort = """" & Suchschlagwort & """"
		  End If
          If Len(Kategorie) > 0 Then
            Schleife = vbYes
            WinID1 = Application.ActiveWindow.WindowID
            Application.ActiveWindow.Command Kommando & Suchschlagwort, True
            WinID2 = Application.ActiveWindow.WindowID
            If WinID1 = WinID2 Then
              MsgBox "Schlagwort nicht gefunden!",vbOKOnly+vbInformation,Titel
              Schleife = vbNo
            Else
              If Application.ActiveWindow.Variable("scr") = "8A" Then ' Vollanzeige
                WinID2 = Application.ActiveWindow.WindowID
                IDN = Application.ActiveWindow.Variable("P3GPP")
                Zeile = Kategorie & " " & Praefix & "!" & IDN & "! " & Suffix & vbCr
                Application.CloseWindow(WinID2)
                Application.ActivateWindow(WinID1)
                Application.ActiveWindow.Title.EndOfBuffer False
          ' Sicherheitsabfrage wegen evtl falscher Cursorpositionierung
              	Application.ActiveWindow.Title.EndOfBuffer True
               	If Len(Application.ActiveWindow.Title.GetSelection) > 0 Then
                   MsgBox "Cursor war nicht am Ende!",vbOKOnly+vbInformation,Titel
              	   Application.ActiveWindow.Title.EndOfBuffer False
              	End If
                Application.ActiveWindow.Title.StartOfField True
                If Len(Application.ActiveWindow.Title.GetSelection) > 0 Then
                	Application.ActiveWindow.Title.EndOfField False
              		Application.ActiveWindow.Title.InsertText vbCr
              	End If
                Application.ActiveWindow.Title.InsertText Zeile
                Schleife = vbYes
              Else ' Kurzanzeige
                If Len(Praefix) = 1 Then
                  Zeile = WinID1 & " " & Praefix & Kategorie & " " & Suffix
                Else
                  Zeile = WinID1 & " " & Kategorie & " " & Suffix
                End If
                Application.ActiveWindow.ClipBoard = Zeile
                Application.ActiveWindow.Command "s k", False              
                Schleife = vbYes
              End If                    
            End If
          Else
            Schleife = vbNo
          End If
        End If
      End IF
    End If
  Loop Until (Schleife = vbYes) Or (Schleife = vbCancel) Or (Schleife = vbAbort)

End Sub ' Schlagwortsuche

'********************************************************************
Private Sub Teilung(Feld)
'********************************************************************
' wird von Schlagwortsuche aufgerufen
on error resume next
Dim Temp, Position

  Kategorie = ""
  Suchschlagwort = ""
  Praefix = ""
  Suffix = ""
  Position = InStr(Feld," ")
  If Position > 0 Then
    Kategorie = Left(Feld,Position-1)
    Temp = Right(Feld,Len(Feld)-Position)
    If Left(Temp,1) = "-" Then
      Praefix = "-"
      Temp = Right(Temp,Len(Temp)-1)
    End If
    If (Right(Temp,1) = ";") Or (Right(Temp,1) = "+") Or (Right(Temp,1) = "#") Then
      Suffix = Right(Temp,1)
      Suchschlagwort = Left(Temp,Len(Temp)-1)
    Else
      Suchschlagwort = Temp
    End If
  Else
    MsgBox "Die Eingabe muss mindestens eine Kategorie und ein Schlagwort enthalten", _
            vbOKOnly+vbCritical,Titel
  End If

End Sub  'Teilung

Seitenanfang

  • No labels