Rich-Text aus MS Access-DB inkl. Formatierung in NiceLabel

Dieses Forum ist für alle NiceLabel Fragen für die deutschen Benutzer.

Moderators: Georges, milos, RobertK, tb, rom, NiceLabel Support Team

Radio_Eriwan
Enthusiast
Posts: 6
Joined: Wed Nov 13, 2013 4:36 pm

Rich-Text aus MS Access-DB inkl. Formatierung in NiceLabel

Post by Radio_Eriwan » Tue Jul 15, 2014 8:15 am

Hallo Forum,

ich hab in einer MS Access-DB ein Feld (Felddatentyp Memo mit Rich-Text Formatierung).
Dieser Inhalt möchte ich auf einer Etikette im NiceLabel mit den entsprechenden Formatierungen platzieren.
Hier zeigt es aber die Formatierungen nicht wie gewünscht an sondern druckt die Formatierung-Tag's wie z.B. <div><strong> etc.
Wie löse ich das Problem?
Vielen Dank für die rasche Hilfe!

NiceLabel Pro Network 6.0 (Build 8442)

Dennis Ehmig
Addict
Addict
Posts: 157
Joined: Fri Mar 28, 2014 2:10 pm

Re: Rich-Text aus MS Access-DB inkl. Formatierung in NiceLab

Post by Dennis Ehmig » Tue Jul 15, 2014 3:26 pm

Hallo,

das Problem hierbei ist, dass das Memo Feld in Access die Formatierung nicht über RTF-Code vornimmt, sondern dazu HTML verwendet.
Das RTF-Feld in unserer Software ist aber nur für richtigen RTF-Code ausgelegt und zeigt das HTML einfach als plain text an.

Eine wirklich einfache Lösung gibt es dafür nicht. Ich sehe 2 machbare Möglichkeiten:
1.) Wenn es um ein Feld geht in dem bspw. einzelne Wörter fett sind, dann müssen Sie den entsprechenden RTF-Code in der Datenbank ablegen.
2.) Wenn es auf mehrere Felder aufgeteilter Text ist, dann können Sie die einzelnen Datenbankfelder in unserem RTF-Feld einbauen und dort passend formatieren.

Gruß
Dennis

Radio_Eriwan
Enthusiast
Posts: 6
Joined: Wed Nov 13, 2013 4:36 pm

Re: Rich-Text aus MS Access-DB inkl. Formatierung in NiceLab

Post by Radio_Eriwan » Wed Jul 16, 2014 9:09 am

OK, ja das tönt wirklich nicht sehr einfach...

Wir sollten schnellstmöglich zum Thema "EU-Verordnungen über die
Kennzeichnung von Allergenen" eine Lösung finden!

Bin um jede Idee und Lösungsansatz sehr froh!
-Neues Datenfeld welches HTML versteht?
Ansatz mit einem Script welches bestimmte Wörter Fett darstellt?

Gruss
Eriwan

Nostradamus
Newcomer
Posts: 4
Joined: Sat Jul 26, 2014 11:57 pm

Re: Rich-Text aus MS Access-DB inkl. Formatierung in NiceLab

Post by Nostradamus » Sun Jul 27, 2014 12:24 am

Hallo,

ich habe den Vorschlag mit dem RTF-Code getestet, bekomme den formatierten Text jedoch weder im Richtextfeld noch im Textfeld dargestellt. In beiden Feldern wird der Code ausgegeben.
Getestet habe ich den Beispielcode aus Wikipedia:

Code: Select all

{\rtf1
 Guten Tag!
 \par
 {\i Dies} ist ein 
 formatierter {\b Text}.
 \par
 Das Ende.
}
sowie RTF-Code den NiceLabel 6.2 im Richtext Bearbeitungs-Fenster erzeugt hat:

Code: Select all

{\rtf1\ansi\deff0{\fonttbl{\f0\fnil\fcharset0 Arial;}}
{\colortbl ;\red0\green0\blue0;}
\viewkind4\uc1\pard\cf1\lang1031\b\fs16 TEST\b0 
\par }
Beide Male wird der Code und nicht der formatierte Text dargestellt.
Welche Einstellung muss ich hier vornehmen damit es klappt?

Am einfachsten Wäre ja die Lösung mit einem Skript, das einfach die zu formatierenden Worte mit bestimmten Tags oder dem RTF umschließt, bzw. mit dem Word das schon von Code umschlossen ist, ersetzt.

Wird es hier ein Update geben, das das Problem der "Kennzeichnung von Allergenen" in einer Zutatenliste elegant löst? Bis Jahresende muss definitiv eine praktikable Lösung her!

Gruß
Alex

Nostradamus
Newcomer
Posts: 4
Joined: Sat Jul 26, 2014 11:57 pm

Lösung:

Post by Nostradamus » Thu Jul 31, 2014 8:54 pm

Hier ist eine einfache Lösung mit einem VBScript:

Schritt für Schritt Anleitung:
- Neue Funktion anlegen (Menü Daten -> Funktionen -> Neu)
- Namen eingeben (z.B. FuncZutaten) -> unter Funktionsart 'Visual Basic Script' auswählen
- Register 'Detailliert' auswählen -> Inhalt im Eingabefeld (Bitte geben Sie VisualBasic Text ein:) komplett löschen
- Inhalt im Feld 'Ausgabevariablenname' löschen und neue aussagekräftige Variable (z.B. VarZutaten) eingeben
- Im Eingabefenster (Bitte geben Sie VisualBasic Text ein:) u.g. Code angepasst einfügen -> OK drücken.
- Funktionsfenster schließen
- RichTextfeld anlegen -> entweder links im DropDown RichtText-Menü "Existierende Variable benutzen" wählen und die vorher eingetragene Variable (z.B. VarZutaten) auswählen und auf das Etikett klicken damit das Feld erzeugt wird / Oder bei schon bestehendem RichTextfeld in den Eigenschaften für die Inhaltsausgabe ("Wählen Sie wie die Inhalte für das Objekt definiert werden") Funktion (!) auswählen (z.B. FuncZutaten). Als Ausgabevariable steht dann unten auch die vorher angegebe Variable.
- OK drücken und evtl. noch das Layout im RTF-Code der Funktion anpassen

Zum Code:

Angepasst werden muss [TabellenName.FeldName]
Sowie in jeder Zeile jeweils "Allergen1", "Milch" in der zweiten Zeile, etc... durch die Worte, die Fett (oder allgemein Formatiert) dargestellt werden sollen.
Im Grunde macht das Script nichts anderes, als ein Wort mit dem RTF-Code für Fett zu ersetzen {\b Wort} (Achtung: das Leerzeichen nach {\b ist wichtig.)
Die Letzte TempVar = ... Zeile kann beliebig kopiert werden (für jedes Wort eine Zeile) und so alle nötigen Worte nach Wunsch ersetzt werden (wenn es denn vorkommt).

In der letzten Zeile wird der RTF-Code komplettiert und vor und nach "TempVar" der nötige Code eingefügt.
Hier kann die Schriftart, Schriftgröße, etc. angepasst werden. Am einfachsten ist es, sich den Code in einem schon formatierten RichTextfeld anzuschauen und dann anzupassen.
Wichtig ist noch, dass jede Anweisung allein in einer Zeile steht.
Ein Zeilenumbruch in der Result = - Zeile wie es hier im Code dargestellt wird führt zu einer Fehlermeldung.

Viel Spaß damit...

Code: Select all

TempVar = Replace([TabellenName.FeldName],"Allergen1","{\b Allergen1}")
TempVar = Replace(TempVar,"Milch","{\b Milch}")
TempVar = Replace(TempVar,"Allergen3","{\b Allergen3}")
TempVar = Replace(TempVar,"Allergen4","{\b Allergen4}")
Result = "{\rtf1\ansi\deff0{\fonttbl{\f0\fnil\fcharset0 Arial;}}{\colortbl ;\red0\green0\blue0;}\viewkind4\uc1\pard\cf1\lang1031\f0\fs16 "&TempVar&"\f0\fs16}"

PDO
Enthusiast
Posts: 14
Joined: Tue Sep 16, 2014 11:57 am

Re: Rich-Text aus MS Access-DB inkl. Formatierung in NiceLab

Post by PDO » Tue Sep 16, 2014 1:04 pm

Super, mit diesem Code kriege ich es hin.

Nun ist noch das Problem, wenn ich Milch als Allergen programmiere, so wird der "Milch"-Teil zum Beispiel bei Milchsäurebakterien auch fett markiert.

Hat dafür schon jemand eine Lösung?

Nostradamus
Newcomer
Posts: 4
Joined: Sat Jul 26, 2014 11:57 pm

Re: Rich-Text aus MS Access-DB inkl. Formatierung in NiceLab

Post by Nostradamus » Wed Sep 17, 2014 8:38 pm

Versuch ein zusätzliches Zeichen in die Abfrage mit zu nehmen.
Wenn also ein Komma, Leerzeichen, oder ein anderes Zeichen nach der Milch kommt wäre der Code bei einem Komma:

Code: Select all

TempVar = Replace(TempVar,"Milch,","{\b Milch},")
Das Komma steht dann nach der geschweiften Klammer und wird da auch wieder eingefügt - ist somit nicht fett.

----

Eine weitere Möglichkeit (aber mehr Arbeit wenn viele andere Worte beeinflusst werden) wäre es, die Änderung wieder zurück zu ändern.
Der String TempVar enthält nach der ersten Milch-Änderung das Wort Milchsäurebakterien im folgenden Format

Code: Select all

{\b Milch}säurebakterien
also fügst du hierfür eine Zeile ein, die das wieder Rückgängig macht:

Code: Select all

TempVar = Replace(TempVar,"Milch","{\b Milch}")
TempVar = Replace(TempVar,"{\b Milch}säurebakterien,","Milchsäurebakterien")
Aber die erste Lösung ist zu bevorzugen, da du damit gleich alle Probleme mit einem Schlag löst...

Viele Grüße

Dennis Ehmig
Addict
Addict
Posts: 157
Joined: Fri Mar 28, 2014 2:10 pm

Re: Rich-Text aus MS Access-DB inkl. Formatierung in NiceLab

Post by Dennis Ehmig » Fri Sep 19, 2014 8:40 am

Alternativ gäbe es auch die Möglichkeit das Problem mit Hilfe von Regulären Ausdrücken (regular expressions, kurz regex) zu lösen. Diese erlauben es gewisse Muster zu erstellen und anhand von diesen Mustern zu suchen/ersetzen. Damit kann man bspw. nach "Milch" suchen, aber nur gefolgt von einem nicht-Buchstaben.

Mehr Info:
Wikipedia zu Regex
MSDN Artikel zur Regex.Replace Methode in VBScript

PDO
Enthusiast
Posts: 14
Joined: Tue Sep 16, 2014 11:57 am

Re: Rich-Text aus MS Access-DB inkl. Formatierung in NiceLab

Post by PDO » Fri Sep 19, 2014 1:16 pm

Super, vielen Dank für den hilfreichen Tipp.
Das sollte klappen. Unsere Zutaten werden mit Komma getrennt.

PDO
Enthusiast
Posts: 14
Joined: Tue Sep 16, 2014 11:57 am

Re: Rich-Text aus MS Access-DB inkl. Formatierung in NiceLab

Post by PDO » Fri Oct 03, 2014 3:19 pm

Noch ein weiteres Problem ist aufgetaucht.

Wir arbeiten Access-Datenbank basiert, alle Etiketten werden basierend einer Vorlage erstellt. Nun war es bis her so, dass ich für die Zutaten ein normales Textfeld verwendet hatte. Dies sah zum Beispiel so aus.

Haselnusskerne (Absatzwechsel erfolgt in der Datenbank und wird auch so dargestellt)
Hinweis: könnte Rückstände von Schalen- und Fremdteilen enthalen

Variabeleigenschaften: Mehrzeilig, 500, 8, Unformatiert

Um nun aber alle Allergene zu kennzeichnen (Haselnusskerne), verwende ich nun das Rich-Textfeld. Hier übernimmt es den Absatzwechsel (Enter) von der Datenbank nicht. Es nützt also das gesamte Textfeld aus und schreibt somit alles auf eine Linie, im Falle der Haselnüsse. Das ganze wird also sehr unlesbar.

Die Variabeleigenschaften habe ich schon analog dem normalen Textfeld angepasst - hat aber anscheinden keinen Einfluss.

Wie kriege ich das hin, dass es die Absatzwechsel aus der Datenbank übernimmt? Oder was muss ich die "normalen" Absatzwechsel durch ein anderes Zeichen ersetzen ,bereits in der Datenbank?

Dennis Ehmig
Addict
Addict
Posts: 157
Joined: Fri Mar 28, 2014 2:10 pm

Re: Rich-Text aus MS Access-DB inkl. Formatierung in NiceLab

Post by Dennis Ehmig » Mon Oct 06, 2014 9:19 am

Hallo,

ich habe das Ganze bei mir gerade mal ausprobiert (Access 2010, aber .mdb für die DB):
Sowohl in der Textbox als auch im RTF-Feld wird ein in Access eingegebener Zeilenumbruch (CTRL+ENTER) dargestellt. Ich kann mir also nicht ganz erklären, warum es bei Ihnen nicht funktioniert.
Eine Alternative, die in unseren Produkten allerdings "immer" (ich will keine Garantie darauf geben :wink: ) funktionieren sollte, ist den Zeilenumbruch mit

Code: Select all

<CR><LF>
zu ersetzen. Das wird dann intern in die entsprechenden Steuerzeichen für einen Zeilenumbruch umgesetzt.

Ich hoffe das hilft weiter. :)

PDO
Enthusiast
Posts: 14
Joined: Tue Sep 16, 2014 11:57 am

Re: Rich-Text aus MS Access-DB inkl. Formatierung in NiceLab

Post by PDO » Thu Oct 16, 2014 9:07 am

Leider funktioniert in der Datenbank eingegeben weder:

Shift + Enter
Ctrl + Enter
noch der angegeben Code.

Allerdings ist die Datenbank Access 2010 aber mit der Endung .accdb.

Gibt es eine Einstellung die darauf Einfluss hat oder liegt es tatsächlich an der Dateiendung oder ein anderer Lösungsansatz?

Dennis Ehmig
Addict
Addict
Posts: 157
Joined: Fri Mar 28, 2014 2:10 pm

Re: Rich-Text aus MS Access-DB inkl. Formatierung in NiceLab

Post by Dennis Ehmig » Thu Oct 16, 2014 12:59 pm

Ich kann Ihr Problem leider bei mir nicht nachvollziehen :?

Anbei finden Sie eine ZIP mit einer accdb und einem Etikett. Im Etikett befinden sich ein Text, eine Textbox und ein RTF-Feld, die alle die Inhaltsspalte der Datenbank anzeigen. Sowohl der Datenbankeintrag mit CTRL+ENTER als auch <CR><LF> funktionieren bei mir.
Attachments
zeilenumbruch.zip
(23.05 KiB) Downloaded 233 times

PDO
Enthusiast
Posts: 14
Joined: Tue Sep 16, 2014 11:57 am

Re: Rich-Text aus MS Access-DB inkl. Formatierung in NiceLab

Post by PDO » Thu Oct 16, 2014 2:26 pm

Ich habe nochmals probiert.
Erstelle ich das RTF-Feld mit den Zutaten ohne vorher programmierter Variable (Variable ohne VBScript aus der Datenbank)- so übernimmt es die in der Datenbank gemachten Zeilenumbrüche.

Erstelle ich nun aber das RTF-Feld mit der Variable (Allergene fett markieren, ) so übernimmt es die
Zeilenumbrüche nicht.

Schliesse also daraus, dass es am VBScript liegt? Bzw. der Code noch einen Zusatz benötigt? Hier meinen erstellten provisorischen Test-Code. Schrift und Grösse habe ich im Code bereits abgeändert:

Code: Select all

TempVar = Replace([Abf_Nice_Label_PRIMA_Pistor_gross.TAB_Artikelstamm_Zusammensetzung_d],"Nuss","{\b Nuss}")
TempVar = Replace(TempVar,"Milch,","{\b Milch,}")
TempVar = Replace(TempVar,"Weizen,","{\b Weizen,}")
TempVar = Replace(TempVar,"Haselnusskerne","{\b Haselnusskerne}")
Result = "{\rtf1\ansi\deff0{\fonttbl{\f0\fnil\fcharset0 Myriad Pro Cond;}}{\colortbl ;\red0\green0\blue0;}\viewkind4\uc1\pard\cf1\lang1031\f0\fs14 "&TempVar&"\f0\fs14}"
Danke

Dennis Ehmig
Addict
Addict
Posts: 157
Joined: Fri Mar 28, 2014 2:10 pm

Re: Rich-Text aus MS Access-DB inkl. Formatierung in NiceLab

Post by Dennis Ehmig » Fri Oct 17, 2014 12:41 pm

Hmm, eventuell hat die Einbettung in den RTF Code in der Tat etwas damit zu tun...
Haben Sie es mal mit unserer neuen Funktion für die Allergene aus der Version 6.3 probiert? Vielleicht erzielt diese ja das gewünschte Ergebnis. Beispiele dazu finden Sie bei uns auf der Homepage: http://www.nicelabel.de/eu-food-allergen-labeling

Post Reply