OUS / Benachrichtigung bei Ablauf der Nutzungsdauer eines Dauerschließfaches Schematische Darstellung & Scripts / UB Rostock / Stand: 31.08.2011 - v002 1) Schematische Darstellung des Ablaufs Ablaufschritt / Script 1. sybase / crontab 2. hro<ILN>_read_userdat11_start_script hro<ILN>_read_userdat11_result_script Beschreibung > Prozess zur Generierung der Info-Mails wird 1x täglich gestartet > Script ermittelt via SQL-Abfrage hro<ILN>_read_userdat11_usr_sql alle Benutzer mit Dauerschließfach, dessen Nutzungsdauer in den nächsten xTagen abläuft > Daraus wird eine ausführbare Datei hro<ILN>_read_userdat11_result_script generiert, die mit Ihrer Ausführung für alle selektierten Benutzer den Text generiert und per E-Mail sendet > Zur Protokollierung wird eine E-Mail an den LBS-Admin gesendet > Script erzeugt zu versendende E-Mails mit dem SQLTemplate hro<ILN>_read_userdat11_text_sql und versendet sie > Dazu wird im SQL-Template die jeweilige address_id_nr des Benutzers eingetragen und per SQL-Abfrage (isql) der Text erstellt 2) Ergebnismail Informationsservice Universitätsbibliothek Rostock und Bibliotheken im Ausleihverbund Betreff : Ablauf der Nutzungsdauer Bitte beachten Sie, dass die Nutzungsdauer für Ihr Dauerschließfach in 3 Tagen abläuft. Sie können Ihre Nutzerdaten unter der folgenden Adresse einsehen : https://katalog.ub.uni-rostock.de/loan/DB=1/LNG=DU/USERINFO_LOGIN Mit freundlichen Grüßen Ihre Bibliothek 1 3) Verwendete Scripts sybase / crontab: 10 05 * * * /global/sybase/com/hro62_read_userdat11_start_script batch hro62_read_userdat11_start_script #!/bin/ksh # # hro<ILN>_read_userdat11_start_script # Scriptgenerierung aus LBS-Datenbank mit SQL-Script # ---------------------------------------------------------# historie: # 20.07.10 - created, j.s. - ub hro # # Parameter: $1 = MODE # ---------------------------------------------------------# ---------------------------------------------------------# Parameter fuer Ausfuehrung setzen # ---------------------------------------------------------# Steuerung # --------SCRIPTID=11 # eindeutige Script-Identifikationsnummer ILN=62 # ILN MODE=inter # Ausfuehrungsmode batch oder inter(aktiv) COLUMNWITDH=300 # Spaltenbreite fuer SQL-Text SYBASEUSR=ro-user # RO-User LBS-Datenbank SYBASEUSRPW=passwd # Passwort fuer RO-User LBS-Datenbank [email protected] # Empfaenger LOG-File SLOG="3daysbefore_Dauerschliessfach" # Suject fuer LOG-File # Verzeichnisse # ------------SCRIPTDIR=$HOME/com TMPDIR=$HOME/tmp LOGDIR=$HOME/log # Dateien # ------SQLUSR=hro${ILN}_read_userdat${SCRIPTID}_usr_sql # SQL-Script Nutzerliste SQLTEXT=hro${ILN}_read_userdat${SCRIPTID}_text_sql # SQL-Script Text an Nutzer RESULTSCRIPT=hro${ILN}_read_userdat${SCRIPTID}_result_script # Auszufuehrendes ResultScript MAILTMP=mailtmp_${ILN}_${SCRIPTID}_user_ # fuer Generierung temp. File fuer Mailversand LOGFILE=mailtmp_${ILN}_${SCRIPTID}_log.txt # Logfile SEDSCRIPT=hro_remind_ous_sedscript # sed-Script zum Bearbeiten der SQLAusgabe Nutzerliste # ---------------------------------------------------------# LOGFILE an Administrator senden CR_SUBJECT() { { echo "From: sqlscript" echo "Subject: SQL-LOG_${ILN}: hro${ILN}_read_userdat${SCRIPTID} - ${SLOG}" echo "\nSQL-LOG: hro${ILN}_read_userdat${SCRIPTID} - ${SLOG}\n" echo "Mail-Script fuer reminder service erzeugt und ausgefuehrt: $SCRIPTDIR/$RESULTSCRIPT" echo echo "SCRIPT:" echo "---------------" cat $SCRIPTDIR/$RESULTSCRIPT } > $TMPDIR/$LOGFILE /usr/lib/sendmail -t $1 < $TMPDIR/$LOGFILE } # ---------------------------------------------------------# Start des Main-Scripts # ---------------------------------------------------------- 2 # MODE als Parameter uebergeben if [ $# = 1 ] then if [ $1 = "batch" ] then MODE=batch # Make sure this script is only executed from batch/crontab. # If so read .profile else stop execution #tty 1>/dev/null 2>&1 if [ $? -eq 0 ] then echo "MODE batch can only be executed from batch/crontab !!" exit 1 else . ${HOME}/define_sybase 1>/dev/null 2>&1 # SYBASE='/global/sybase/ASE_120'; export SYBASE fi else MODE=inter fi else MODE=inter fi # Check SYBASEUSR Verbindung zur Datenbank echo exit > $SCRIPTDIR/test_${SYBASEUSR}_pw.login $SYBASE/OCS-12_0/bin/isql -U$SYBASEUSR -P$SYBASEUSRPW i$SCRIPTDIR/test_${SYBASEUSR}_pw.login > $LOGDIR/test_${SYBASEUSR}.ok found="`wc -l $LOGDIR/test_${SYBASEUSR}.ok | awk '{ print $1 } ' | tr -d '[:space:]'`" rm $LOGDIR/test_${SYBASEUSR}.ok if [ $found != "0" ] then echo "\n\tWrong password for user $SYBASEUSR !!\n" exit fi # Loeschen Files der letzten Ausfuehrung { rm $TMPDIR/$LOGFILE rm -f $TMPDIR/${ILN}_*remind${SCRIPTID}.sql rm -f $TMPDIR/${ILN}_*remind${SCRIPTID}.txt rm -f $TMPDIR/${MAILTMP}*.txt } 2> /dev/null # Ausfuehrbare Datei fuer remind service erzeugen { echo CR_REMIND\(\) echo { echo \# Zuerste Mahntext mit Titelliste generieren echo \# Parameterliste echo \# 1 = E-Mail Absender echo \# 2 = E-Mail Empfaenger echo \# 3 = E-Mail Betreff echo \# 4 = address_id_nr Benutzer echo \# ACHTUNG - DIESER AUSDRUCK MUSS MIT DEM INHALT VON @address_id_nr IM SQL-SCRIPT UEBEREINSTIMMEN ! echo SUBST_ADDRESS_ID_NR=\"Xaddress_id_nrX\" echo \# Eigenes SQL-Script fuer Aufstellung genererien, substitute Aufstellung mittels sed echo sed s/\$SUBST_ADDRESS_ID_NR/\$4/ $SCRIPTDIR/$SQLTEXT \>$TMPDIR/${ILN}_\$4_remind${SCRIPTID}.sql echo \$SYBASE/OCS-12_0/bin/isql -U$SYBASEUSR -P$SYBASEUSRPW -w$COLUMNWITDH i$TMPDIR/${ILN}_\$4_remind${SCRIPTID}.sql \> $TMPDIR/${ILN}_\$4_remind${SCRIPTID}.tmp echo \# SQL-Result-File aufbereiten: echo cat $TMPDIR/${ILN}_\$4_remind${SCRIPTID}.tmp \| grep \"#\" \| sed \'s/#//\' \> $TMPDIR/${ILN}_\$4_remind${SCRIPTID}.sed echo cat $TMPDIR/${ILN}_\$4_remind${SCRIPTID}.sed \> $TMPDIR/${ILN}_\$4_remind${SCRIPTID}.txt echo rm -f $TMPDIR/${ILN}_\$4_remind${SCRIPTID}.tmp echo rm -f $TMPDIR/${ILN}_\$4_remind${SCRIPTID}.sed 3 echo { echo echo \"From: \$1\" echo echo \"To:\$2\" \| sed \'s/ /, /\' echo echo \"Subject: \$3\" echo cat $TMPDIR/${ILN}_\$4_remind${SCRIPTID}.txt echo } \> $TMPDIR/${MAILTMP}\$4.txt echo /usr/lib/sendmail -t \$2 \< $TMPDIR/${MAILTMP}\$4.txt 2\>\&1 \>/dev/null echo } } > $SCRIPTDIR/$RESULTSCRIPT case $MODE in 'inter') $SYBASE/OCS-12_0/bin/isql -U$SYBASEUSR -P$SYBASEUSRPW -i$SCRIPTDIR/$SQLUSR | sed f$SCRIPTDIR/$SEDSCRIPT | tee -a $SCRIPTDIR/$RESULTSCRIPT ;; 'batch') $SYBASE/OCS-12_0/bin/isql -U$SYBASEUSR -P$SYBASEUSRPW -i$SCRIPTDIR/$SQLUSR | sed f$SCRIPTDIR/$SEDSCRIPT >> $SCRIPTDIR/$RESULTSCRIPT ;; *) echo "Invalid argument" exit 1 ;; esac sleep 10 # Execute setzen und ausfuehren chmod 755 $SCRIPTDIR/$RESULTSCRIPT $SCRIPTDIR/$RESULTSCRIPT CR_SUBJECT $MAILLOGTO exit 4 hro62_read_userdat11_usr_sql /* ------------------------------------------------------------- */ /* Historie : */ /* ------------------------------------------------------------- */ /* SELECT @@VERSION ; go */ use lbsdb go PRINT PRINT PRINT PRINT PRINT PRINT '' '///////////////////////////////////////////////////////' '62-5. Erinnerungsservice Dauerschliessfaecher' ' --- 3 Tage vor Ablauf der Dauerfrist ---' '///////////////////////////////////////////////////////' '' SELECT "Start information service at"= getdate () go SET ROWCOUNT 0 go DECLARE @iln smallint, @day_diff int, @free_text char(20) /* ----------------------------------------------------------------------------------------------- */ /* Alle Nutzertypen */ /* ----------------------------------------------------------------------------------------------- */ SELECT @iln = 62 /* UB ROSTOCK */, @day_diff = 3 /* Tagesdifferenz */, @free_text = "%Dauerschliessfach%" /* Dauerschliessfach Text aus volume.free_text */ /* SELECT Statement Ausgabe fuer Befehlsdatei */ SELECT "CR_REMIND [email protected] " + CHAR(34) + rtrim(b.email_address) + CHAR(34) + " " + CHAR(34) + "Informationsservice UB Rostock `date +" + CHAR(34) + "%d.%m.%y" + CHAR(34) + "` / Dauerschliessfach - Ablauf der Nutzungsdauer / s n " + b.borrower_bar + CHAR(34) + " " + CONVERT(VARCHAR(20), b.address_id_nr) FROM borrower b, loans_requests l, volume v WHERE b.iln=@iln /* 62 = Rostock */ /* @day_diff Tage vorher erinnern */ AND DATEDIFF(day,GETDATE(),l.expiry_date_loan) /* + r.number1 */ = @day_diff /* Status muss 5 = ausgeliehen sein */ AND l.loan_status = 5 /* email adresse vorhanden */ AND NOT (PATINDEX('%@%', b.email_address) = 0) /* Dauerschliessfach */ AND (v.free_text like @free_text) /* Verknuepfungen der Tabellen */ AND b.iln = l.iln AND l.volume_number = v.volume_number AND b.address_id_nr = l.address_id_nr GROUP BY b.address_id_nr SELECT "End information service at"= getdate () go 5 hro62_read_userdat11_text_sql /* -------------------------------------------------------------------/* hro<ILN>_read_userdat11_text_sql */ /* Text fuer Erinnerung Ablauf Dauerschliessfach in 3 Tagen generieren /* /* Historie: /* 01.07.10 js: created */ /* -------------------------------------------------------------------- */ */ */ */ */ /* LBS-DATENBANK */ use lbsdb go /* HIER ALLGEMEIN VERWENDETE VARIABLEN */ DECLARE @iln int, @address_id_nr int, @day_diff int, @free_text char(20) SELECT @iln = 62, /* ILN */ @day_diff = 3, /* Tagesdifferenz */ @free_text = "%Dauerschliessfach%", /* Dauerschliessfach Text aus volume.free_text */ @address_id_nr = Xaddress_id_nrX /* Substitute-Ausdruck fuer CR_REMIND! */ PRINT '#Informationsservice' PRINT '#Universitätsbibliothek Rostock und Bibliotheken im Ausleihverbund' PRINT '#' PRINT '#Betreff : Ablauf der Nutzungsdauer' PRINT '#' PRINT '#Bitte beachten Sie, dass die Nutzungsdauer für Ihr Dauerschließfach in 3 Tagen abläuft.' PRINT '#' PRINT '#Sie können Ihre Nutzerdaten unter der folgenden Adresse einsehen :' PRINT '#https://katalog.ub.uni-rostock.de/loan/DB=1/LNG=DU/USERINFO_LOGIN' PRINT '#' PRINT '#Mit freundlichen Grüßen ' PRINT '#Ihre Bibliothek' PRINT '#' PRINT '#---------------------------------------------------' PRINT '#' PRINT '#' PRINT '#Information service' PRINT '#Universitaetsbibliothek Rostock and libraries in the lending group' PRINT '#' PRINT '#Subject : Ending of usage period' PRINT '#' PRINT '#Please note that the usage period of your of deposit-box expires in 3 days.' PRINT '#' PRINT '#You can view your user data under the following address :' PRINT '#https://katalog.ub.uni-rostock.de/loan/DB=1/LNG=EN/USERINFO_LOGIN' PRINT '#' PRINT '#Sincerely' PRINT '#Your Library' PRINT '#' go hro_remind_ous_sedscript # sed script zur aufbereitung der kommandodatei informationsservice # 16 zeilen vom anfang loeschen 1,16d # von DELETE-Marke (x rows affected) bis Dateiende loeschen /(/,$d 6 hro62_read_userdat11_result_script CR_REMIND() { # Zuerste Mahntext mit Titelliste generieren # Parameterliste # 1 = E-Mail Absender # 2 = E-Mail Empfaenger # 3 = E-Mail Betreff # 4 = address_id_nr Benutzer # ACHTUNG - DIESER AUSDRUCK MUSS MIT DEM INHALT VON @address_id_nr IM SQL-SCRIPT UEBEREINSTIMMEN ! SUBST_ADDRESS_ID_NR="Xaddress_id_nrX" # Eigenes SQL-Script fuer Aufstellung genererien, substitute Aufstellung mittels sed sed s/$SUBST_ADDRESS_ID_NR/$4/ /global/sybase/com/hro62_read_userdat11_text_sql >/global/sybase/tmp/62_$4_remind11.sql $SYBASE/OCS-12_0/bin/isql -Uro-user -Ppasswd -w300 -i/global/sybase/tmp/62_$4_remind11.sql > /global/sybase/tmp/62_$4_remind11.tmp # SQL-Result-File aufbereiten: cat /global/sybase/tmp/62_$4_remind11.tmp | grep "#" | sed 's/#//' > /global/sybase/tmp/62_$4_remind11.sed cat /global/sybase/tmp/62_$4_remind11.sed > /global/sybase/tmp/62_$4_remind11.txt rm -f /global/sybase/tmp/62_$4_remind11.tmp rm -f /global/sybase/tmp/62_$4_remind11.sed { echo "From: $1" echo "To:$2" | sed 's/ /, /' echo "Subject: $3" cat /global/sybase/tmp/62_$4_remind11.txt } > /global/sybase/tmp/mailtmp_62_11_user_$4.txt /usr/lib/sendmail -t $2 < /global/sybase/tmp/mailtmp_62_11_user_$4.txt 2>&1 >/dev/null } CR_REMIND [email protected] "[email protected]" "Informationsservice UB Rostock `date +"%d.%m.%y"` / Dauerschliessfach - Ablauf der Nutzungsdauer / s n 00289876543" 66286 # u.s.w. 7 Generierung der Verwaltungsliste Dauerschließfächer Diese Liste wird nach dem Schema für Reports analog zur DBS, siehe auch http://www.gbv.de/wikis/cls/Statistiken_mit_Structured_Query_Language_%28SQL%29 , generiert. sybase / crontab: # -- Belegung Mietschliessfaecher BB1 -16 20 * * * /global/sybase/reports/com/ous_062_Dauerschliessfaecher_FREETEXT_execute_cron ro-user passwd ous_062_Dauerschliessfaecher_FREETEXT_execute_cron #!/bin/ksh # # ous_062_Dauerschliessfaecher_FREETEXT_execute # Uebersicht Belegung der Dauerschliessfaecher / Bandselection ueber volume.free_text # Erzeugen eines Reports aus der lbs-database mittels sql-script # --# # ---------------------------------------------------------# Historie: # 03.02.10 js: created # ---------------------------------------------------------CR_SUBJECT() { { echo "From: ub-iuk" echo "Subject: OUS - Belegung: $1" echo "\n" # echo "\nOUS - Belegung: $1\n" # echo ----cat $2 echo ----echo end of log } | /usr/lib/sendmail -t $3 } CR_SUBJECT_new() { { echo "From: ub-iuk" echo "Subject: OUS - Belegung: $1" echo "\n" # echo "\nOUS - Belegung: $1\n" # echo ----cat $2 echo ----echo end of log } > ${HOME}/tmp/mailtmp_62_Dauerschliessfaecher_$1_log.txt /usr/lib/sendmail -t $3 < ${HOME}/tmp/mailtmp_62_Dauerschliessfaecher_$1_log.txt } Dauerschliess_BB1() { echo "OUS - Belegung der Dauerschliessfaecher $1 ..." # Hier muss in VOL_FREETEXT der Text eingetragen werden, der bei den # entsprechenden Bandsaetzen auch in "Freier Text" eingetragen ist !!! case $1 in "BB1") VOL_FREETEXT="Dauerschliessfach-BB1"; break;; *) VOL_FREETEXT="Dauerschliessfach-BB1"; break;; esac EMAIL=$2 EMAIL_ADDRESS=$3 REPORTFILE="ous"$ILN"_Uebersicht_"$VOL_FREETEXT".doc" SQLSTARTFILE="ous"$ILN"_Uebersicht_Dauerschliessfaecher_FREETEXT.sql" SQLFILE="ous"$ILN"_Uebersicht_Dauerschliessfaecher_"$VOL_FREETEXT".sql" LOGFILE="ous"$ILN"_Uebersicht_Dauerschliessfaecher_"$VOL_FREETEXT".log" 8 # *** ACHTUNG - DIESER AUSDRUCK MUSS MIT DEM INHALT VON @free_text IM SQL-SCRIPT UEBEREINSTIMMEN ! *** SUBST_FREETEXT="XXFREETEXTXX" echo echo echo echo echo echo echo echo { "Schliessfach "REPORT-FILE "SQL-FILE "LOG-FILE "E-Mail "E-MAIL-ADR. =$VOL_FREETEXT" =$REPORTBASE/results/$REPORTFILE" =$REPORTBASE/sql/$SQLFILE" =$REPORTBASE/log/$LOGFILE" =$EMAIL" =$EMAIL_ADDRESS" echo "Erstelle Uebersicht der Schliessfachbelegung fuer $VOL_FREETEXT ..." sed s/$SUBST_FREETEXT/$VOL_FREETEXT/ $HOME/reports/sql/$SQLSTARTFILE >$HOME/reports/sql/$SQLFILE rm -f $REPORTBASE/results/$REPORTFILE $SYBASE/OCS-12_0/bin/isql -U$usr -P$bla -S$SERVER -D$DATABASE -w$COLUMNWIDTH i$REPORTBASE/sql/$SQLFILE | tee -a $REPORTBASE/results/$REPORTFILE # rm -f $REPORTBASE/sql/$SQLFILE # Statistik aufbereiten # 1. Zeilen mit "#" herausfiltern (grep) # 2. Zeichen '#' am Zeilenanfang ferausfiltern (sed) # 3. Umlaute/Sonderzeichen ersetzen (sed) cat $REPORTBASE/results/$REPORTFILE | grep "#" | sed 's/#//' > $REPORTBASE/results/$REPORTFILE.sed sed -f $REPORTBASE/com/script.txt $REPORTBASE/results/$REPORTFILE.sed > $REPORTBASE/results/$REPORTFILE rm -f $REPORTBASE/results/$REPORTFILE.sed # if [ "$EMAIL" = "Y" ] then CR_SUBJECT $VOL_FREETEXT $REPORTBASE/results/$REPORTFILE $EMAIL_ADDRESS # fi echo --echo } > $REPORTBASE/log/$LOGFILE } # --- nur fuer unix-account sybase --# Make sure this script is only executed from batch/crontab. # If so read .profile else stop execution #tty 1>/dev/null 2>&1 if [ $? -eq 0 ] then echo "This script can only be executed from batch/crontab mode!!" exit 1 else . ${HOME}/define_sybase 1>/dev/null 2>&1 # SYBASE='/global/sybase/ASE_120'; export SYBASE fi # check if [ $# -lt 2 ] then echo "\n\tUsage: $0 user password\n" exit 1 fi # ----------------------------# --- HIER VARIABLEN SETZEN --# ----------------------------DATABASE=lbsdb ILN=062 # JAHR=2008 - Jahr nicht benoetigt # ----------------------------# --- HIER NUR BEI BEDARF --# ----------------------------- 9 REPORTBASE=$HOME/reports # $SERVER nur setzen, wenn DSQUERY nicht gesetzt ist if [ "`echo $DSQUERY`" = "" ] then SERVER=servername else SERVER=$DSQUERY fi COLUMNWIDTH=250 # -- SQLFILE="ous"$ILN"_Uebersicht_Dauerschliessfaecher_FREETEXT.sql" # ----------------------------# user und password usr=$1 bla=$2 # --- test account --$SYBASE/OCS-12_0/bin/isql -U$usr -P$bla -S$SERVER -i$REPORTBASE/com/test.login > $REPORTBASE/log/test.ok found="`wc -l $REPORTBASE/log/test.ok | awk '{ print $1 } ' | tr -d '[:space:]'`" rm $REPORTBASE/log/test.ok if [ $found != "0" ] then echo "\n\tFalsches Passwort fuer sybase-user ${usr} !!\n" exit else echo "\nVerbindung Sybase-Server erfolgreich - Starten des Reports ...\n" Dauerschliess_BB1 BB1 Y [email protected],[email protected] fi exit ous062_Uebersicht_Dauerschliessfaecher_FREETEXT.sql /* ------------------------------------------- */ /* ous<ILN>_Uebersicht_Dauerschliessfaecher.sql */ /* Liste der offenen Forderungen */ /* */ /* Historie: */ /* 30.01.09 js: created */ /* 24.08.11 js: email_address added */ /* ------------------------------------------- */ /* ---------------------------------------------Enthaelt: Belegung der Dauerschliessfaecher */ /* LBS-DATENBANK */ use lbsdb go /* HIER ALLGEMEIN VERWENDETE VARIABLEN */ DECLARE @iln @fno @free_text int, int, varchar(60) /* HIER START- und END-JAHR, ILN UND FNO FESTLEGEN */ SELECT @iln = 62, @fno = 1, /* stelsel-filenumber */ @free_text = "XXFREETEXTXX" /* Selection volume.free_text - HIER SUBSTITUTE-CODE FUER SHELL-SCRIPT */ 10 /* -------------------------------------------------------- */ /* Kopf */ /* -------------------------------------------------------- */ /* SELECT '#Zum Drucken in Word kopieren:' */ /* SELECT '#- A4 Querformat' */ /* SELECT '#- Einfuegen als Unformatierten Text (Bearbeiten -> Inhalte einfuegen)' */ /* SELECT '#- Schriftart Courier New 10' */ /* PRINT '# ---------------------------------------------------------------------------------------------------' */ /* PRINT '#' */ SELECT '#Uebersicht der Belegung der Dauerschliessfaecher ILN: ', CONVERT(char(3), @iln) SELECT '#Standort ......:', @free_text SELECT '#erzeugt am ....:', CONVERT(char(8), GETDATE(), 4), CONVERT(char(8), GETDATE(), 8) PRINT '#' SELECT '#Sortierung: Aufsteigend nach Ablaufdatum' /* HIER STARTEN DIE ABFRAGEN ... */ PRINT '#' PRINT '# ------------------------------------------------------------------------------------------------------------------' PRINT '# SCHLIESSFACH BARCODE ABLAUFDATUM NUTZERBARCODE BENUTZERNAME BENUTZERTYP EMAIL' PRINT '# ------------------------------------------------------------------------------------------------------------------' SELECT /* Zeile fuer Ausgabe bestimmt */ '#', /* Schliessfach */ " " + CONVERT(char(5), v.volume_information), /* Barcode */ CONVERT(char(13), v.volume_bar), /* Ablaufdatum*/ CONVERT(char(12), l.expiry_date_loan,5), /* s ent n + Benutzerbarcode */ "s ent n " + CONVERT(char(12), b.borrower_bar), /* Benutzername */ CONVERT(char(25), b.query_name), /* Benutzertyp */ CONVERT(char(12), b.borrower_type), /* E-Mail Adresse */ CASE b.email_address WHEN null THEN "-" ELSE "mailto:" + b.email_address END FROM borrower b, volume v, loans_requests l WHERE b.iln = @iln and v.iln = @iln and l.iln = @iln and b.address_id_nr = l.address_id_nr and l.volume_number = v.volume_number and v.free_text like "%" + @free_text + "%" ORDER BY l.expiry_date_loan ASC PRINT '#' PRINT '#' PRINT '#================================= Datei-ENDE =========================================' PRINT '#' PRINT '#' go 11