[GELĂ–ST] Aus einem String werte ausschneiden, Sicht einbinde

Bild Microsoft Dynamics NAV 3.xx
(ehem. Navision Attain)

[GELĂ–ST] Aus einem String werte ausschneiden, Sicht einbinde

Beitragvon tesarolle » 2. Februar 2007 16:57

Hallo Leute,

nochmal was spezielles. Ich habe eine Tabelle die beinhält eine Spalte, in der folgende Informationen drin stehen (ATTACHMENT).

Es gibt nun das Problem das ich den Anwender natürlich nicht zu jedem Kunden den Inhalt dieser Spalte zeigen möchte, sondern nur den darin evtl. vorkommenden Alarmtext!

In manchen Datensätzen kommt es dann vor das dann dort steht "Alarmtext: " und dann steht ein Text und diesen Text möchte ich pro Datensatz anzeigen.

Also so mĂĽsste das aussehen:
"Alarmtext: Zahlt nicht"

Eigentlich brauche ich einen Filter der mir nach dem Wort Alarmtext+1Leerzeichen alles angezeigt an Text, bis zum ersten "\". Ist das möglich mit Navision?

Die Tabelle resultiert aus einer SQL-Sicht. Oder sollte ich lieber versuchen schon ĂĽber die Sicht nur die Ausschnitte aus den Strings entsprechend zu filtern?
Dateianhänge
Datensätze.pdf
(124.4 KiB) 109-mal heruntergeladen
Zuletzt geändert von tesarolle am 9. Februar 2007 10:48, insgesamt 1-mal geändert.
tesarolle
 
Beiträge: 400
Registriert: 30. Januar 2007 15:47
Wohnort: Berlin

Beitragvon Michael Schumacher » 2. Februar 2007 17:43

mit strpos kannst du start und Endposition ermitteln und mit Copystr den fraglichen Teil extrahieren. Die Onlinehilfe sagt dir, wie genau die Syntax ist.
mfg
Michael Schumacher


Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
Hmmm, ach heut' ist Backup-Tag, also alles schnell nach /dev/nul sichern!
Benutzeravatar
Michael Schumacher
Ehrenmitglied
 
Beiträge: 1762
Registriert: 1. August 2005 11:12
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 3.x, 4.x, 5.x

Beitragvon tesarolle » 2. Februar 2007 17:46

So leicht ist es leider nicht, da es keine feste Positionierung gibt fĂĽr die Stelle an der der eigentlich Alarmtext beginnt! (Siehe Attachment).

Das SchlĂĽsselwort im String ist "Alarmtext: " und dann brauche ich den Text der danach kommt bis zum Begrenzer "\".

Das geht nicht mit festen Positionen.
tesarolle
 
Beiträge: 400
Registriert: 30. Januar 2007 15:47
Wohnort: Berlin

Beitragvon stryk » 2. Februar 2007 17:48

Leider krieg ich das PDF nicht geöffnet ... deshalb kann ich nur vermuten worum's geht.
Ich nehme mal an, wir reden von einer Spalte mit Textinhalt, wobei ein Teil des Textes den "Alarmtext" darstellt. Nun willst eben diesen "Alarmtext" soz. ausschneiden und darstellen, den Rest ignorieren.
Ich nehme an der "\" steht fĂĽr NewLine, also CR/LF.

Dann könnte das Ausschneiden so aussehen:

Code: Alles auswählen
AlarmText := COPYSTR(TextSpalte, STRPOS(TextSpalte, 'Alarmtext:'));
Jörg A. Stryk (MVP - Dynamics NAV)
NAV/SQL Performance Optimization & Troubleshooting
STRYK System Improvement
stryk
Microsoft Partner
Microsoft Partner
 
Beiträge: 767
Registriert: 30. November 2006 12:32
Wohnort: NĂĽrnberg
Realer Name: Jörg Stryk
Bezug zu Microsoft Dynamics: Freiberufler
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Beitragvon tesarolle » 2. Februar 2007 17:57

stryk hat geschrieben:Leider krieg ich das PDF nicht geöffnet ... deshalb kann ich nur vermuten worum's geht.
Ich nehme mal an, wir reden von einer Spalte mit Textinhalt, wobei ein Teil des Textes den "Alarmtext" darstellt. Nun willst eben diesen "Alarmtext" soz. ausschneiden und darstellen, den Rest ignorieren.
Ich nehme an der "" steht fĂĽr NewLine, also CR/LF.

Dann könnte das Ausschneiden so aussehen:

Code: Alles auswählen
AlarmText := COPYSTR(TextSpalte, STRPOS(TextSpalte, 'Alarmtext:'));
Hallo Stryk,

was wĂĽrde ich nur ohne Dich machen *g*!

Ja Du hast es richtig verstanden, die Datensätze sehen in der einen Spalte so aus:

{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil\fcharset0 Arial;}{\f1\fnil\fcharset0 MS Sans Serif;}} \viewkind4\uc1\pard\fs18 Alarmtext: schwarze Liste \par \f1\fs17 17.01.2007 *Bew\'e4hrung* \par } 11803.0

{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil\fcharset0 Arial;}{\f1\fnil\fcharset0 MS Sans Serif;}} \viewkind4\uc1\pard\fs18 Alarmtext: schwarze Liste \par \f1\fs17 17.01.2007 *Bew\'e4hrung* \par } 10271.0

{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil\fcharset0 Arial;}{\f1\fnil\fcharset0 MS Sans Serif;}} \viewkind4\uc1\pard\fs18 Alarmtext: schwarze Liste \par \pard\f1\fs17 17.01.2007 *Bew\'e4hrung*\fs17 \par } 10230.0

{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil\fcharset0 MS Sans Serif;}} \viewkind4\uc1\pard\f0\fs17 Alarmtext: Frei Haus!!! \par } 10227.0

{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil\fcharset0 Arial;}{\f1\fnil\fcharset0 MS Sans Serif;}} \viewkind4\uc1\pard\fs18 Alarmtext: schwarze Liste \par \pard\f1\fs17 17.01.2007 *Bew\'e4hrung*\fs17 \par } 10316.0


Naja und ich will alles das was NACH dem Wort "Alarmtext: " (man beachte das Leerzeichen nach dem :) herausschneiden bis zu dem Begrenzer "".

Wo muss ich Deinen Codeschnipsel einbauen? Ich rufe im konkreten Fall eine Sicht auf die auf Adressdaetn zugreift, und die schwarzen Schaafe haben einen Alarmtext. Das Navision greift auf diese externe DB zu und soll ermöglichen das diese Adresse eingefügt wird(nach Auswahl über Lookup), allerdings soll im Falle des vorhandenseins von Alarmtexten dieser mit eingefügt werden in der Navision Tabelle beim entsprechenden Datensatz.

Und deswegen brauche ich das Ausschneiden, damit nur dieser angezeigt wird.
tesarolle
 
Beiträge: 400
Registriert: 30. Januar 2007 15:47
Wohnort: Berlin

Beitragvon tesarolle » 2. Februar 2007 18:03

Du bist ja SQL-Profi, am liebsten würde ich das über die Sicht lösten:

SELECT KUNUMMER, ANREDE, NAME, ANSCHR, ZUSATZ, STRASSE, PLZ, ORT, FAX,
CONVERT(varchar(250), ALARM) AS Alarm, SPRACHE, KONDITION
FROM DATENBANK

Aber das geht vermutlich nicht oder???? Dann hätte ich das Problem in Navision gar nicht erst, weil nur noch die "ausgeschnittenen" Alarmtext zur Verfügung ständen.
tesarolle
 
Beiträge: 400
Registriert: 30. Januar 2007 15:47
Wohnort: Berlin

Beitragvon Timo Lässer » 2. Februar 2007 21:07

Wenn man die Lösung von Jörg etwas verfeinert, dann sollte es passen:
Code: Alles auswählen
TempText := COPYSTR(TextSpalte,STRPOS(TextSpalte,'Alarmtext:'));
Alarmtext := DELCHR(COPYSTR(TempText,1,STRPOS(TempText,'\') - 1),'<>',' '); // Überflüssige Leerzeichen löschen wir gleich mit ;-)
Gruß, Timo Lässer

Frage beantwortet? Schreibe bitte "[Gelöst]" vor den Titel deines ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, E-Mail, Instant Messanger, Soziale Netzwerke, Telefon oder Fax! DafĂĽr ist dieses Forum da.
Hier kannst du fĂĽr MSDynamics.de spenden.
Benutzeravatar
Timo Lässer
Administrator
Administrator
 
Beiträge: 5274
Registriert: 14. November 2004 22:18
Wohnort: DE 49716 Meppen
Arbeitsort: DE 49733 Haren (Ems)
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 1.10a - 2018, BC14, BC21

Beitragvon stryk » 2. Februar 2007 21:33

Hmmm ... das mit dem "\" als Trenner ist ein wenig "tricky", da dieser als Zeilenumbruch in Strings interpretiert wird ... vielleicht kann man ja den Sub-String \par auswerten, dann könnte das in NAV so aussehen:

Code: Alles auswählen
AlarmText :=
  COPYSTR(TextSpalte,
    STRPOS(TextSpalte, 'Alarmtext:'),
    STRPOS(TextSpalte, '\par ') - STRPOS(TextSpalte, 'Alarmtext:'));


Was den "SQL Profi" angeht: Danke fĂĽr die Blumen, dem ist aber nicht wirklich so :oops:
Wenn es z.B. um Stringverarbeitung mit TSQL geht, dann wird's "eng" ... hier ein Versuch:

Code: Alles auswählen
SELECT KUNUMMER, ANREDE, NAME, ANSCHR, ZUSATZ, STRASSE, PLZ, ORT, FAX,

  SUBSTRING( CONVERT(varchar(250), ALARM) ,
    CHARINDEX ( 'Alarmtext:' , CONVERT(varchar(250), ALARM)) ,
    (CHARINDEX ( '\par ' , CONVERT(varchar(250), ALARM), CHARINDEX ( 'Alarmtext:' , CONVERT(varchar(250), ALARM)) ) - CHARINDEX ( 'Alarmtext:' , CONVERT(varchar(250), ALARM)))) AS Alarm,

SPRACHE, KONDITION
FROM DATENBANK
Jörg A. Stryk (MVP - Dynamics NAV)
NAV/SQL Performance Optimization & Troubleshooting
STRYK System Improvement
stryk
Microsoft Partner
Microsoft Partner
 
Beiträge: 767
Registriert: 30. November 2006 12:32
Wohnort: NĂĽrnberg
Realer Name: Jörg Stryk
Bezug zu Microsoft Dynamics: Freiberufler
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Beitragvon Timo Lässer » 2. Februar 2007 22:00

Ich habe es jetzt nicht ausprobiert, könnte mir aber gut vorstellen, dass Navision bei STRPOS den \ nicht als Zeilenumbruch interpretiert, da es bei dem Befehl keinen Sinn ergeben würde.

Falls es doch so sein sollte:
Ich sehe gerade in der PDF-Datei, dass vor dem \par zwei nicht druckbare Zeichen (ungleich Leerzeichen) sind.
Vielleicht könnte man die als eindeutigen Trenner nehmen, man müsste nur mal mit einem HexEditor nachsehen, welche Zeichen es genau sind.
Gruß, Timo Lässer

Frage beantwortet? Schreibe bitte "[Gelöst]" vor den Titel deines ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, E-Mail, Instant Messanger, Soziale Netzwerke, Telefon oder Fax! DafĂĽr ist dieses Forum da.
Hier kannst du fĂĽr MSDynamics.de spenden.
Benutzeravatar
Timo Lässer
Administrator
Administrator
 
Beiträge: 5274
Registriert: 14. November 2004 22:18
Wohnort: DE 49716 Meppen
Arbeitsort: DE 49733 Haren (Ems)
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 1.10a - 2018, BC14, BC21

Beitragvon tesarolle » 3. Februar 2007 00:35

Hey ihr beiden, Klasse!!!

Also Stryk Du bist ein SQL Profi! Sieht jetzt so aus das Ergebnis:

Alarmtext: Frei Haus!!!
Alarmtext: schwarze Liste
Alarmtext: schwarze Liste
Alarmtext: schwarze Liste
Alarmtext: schwarze Liste
Alarmtext: Schwarze Liste
Alarmtext: schwarze Liste
Alarmtext: schwarze Liste
Alarmtext: schwarze Liste
Alarmtext: schwarze Liste
Alarmtext: Schwarze Liste 3. Mahnung 2.2.04/dst - Status: D
Alarmtext: Schwarze Liste - Status: D
Alarmtext: Schwarze Liste - Status: D
Alarmtext: schwarze Liste

Ein Problem gibt es allerdings noch, was was Timo gesagt hat stimmt, der Trenner sollten diese beiden nicht druckbaren Zeichen sein vor dem \, denn diese"\" werden hinter dem text als so 4 Ecke angezeigt.

Wie kann man das machen mit der Sicht, das ich bei allen anderen Fällen, wo es keinen Alarmtext im String gibt , er das Feld leert? Denn manchmal steht in den Feldern nur Quatsch drin den ich in NAvision nicht gebrauchen kann.

WAs ich noch nicht hinbekommen habe: Also jetzt nur auf die SQL Sicht bezogen, ich will das nur der Text nach dem Doppelpunkt dasteht
also statt:
Alarmtext: schwarze Liste

soll jeweils immer dastehen:

schwarze Liste

also nur der eigentliche Text. Das wäre meine letzte Bitte an dich stryk! Dann kannst Du dir schonmal nen schönen Blumenstrauss aussuchen *zwinker*!

Naja das mit den nicht druckbaren Zeichen (als eindeutiger Trenner) kriegt man unter Sql vermutlich nicht hin was?

Viele GrĂĽĂźe!
tesarolle
 
Beiträge: 400
Registriert: 30. Januar 2007 15:47
Wohnort: Berlin

Beitragvon Michael Schumacher » 3. Februar 2007 04:14

dann addiere zum charindex noch 11 hinzu, um das Wort Alarmtext mit dem Doppelpunkt und dem Leerzeichen zu ĂĽberspringen.
was die Kästchen angeht, du musst halt ermitteln, welche Chr$ Werte dahinterstecken....
mfg
Michael Schumacher


Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
Hmmm, ach heut' ist Backup-Tag, also alles schnell nach /dev/nul sichern!
Benutzeravatar
Michael Schumacher
Ehrenmitglied
 
Beiträge: 1762
Registriert: 1. August 2005 11:12
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 3.x, 4.x, 5.x

Beitragvon tesarolle » 3. Februar 2007 16:29

Hallo Michael,

das mit dem hinzuzählen funktioniert nicht.

Wie kann ich rausfinden was fĂĽr "Chr$" Werte hinter den Zeichen stehen? Das sind doch die nicht druckbaren Zeichen oder? Mit dem Hexeditor, soweit bin ich schon, aber mit dem kann man doch nicht auf SQL-Tabellen zugreifen??? Kenne mich damit gar nicht aus...
tesarolle
 
Beiträge: 400
Registriert: 30. Januar 2007 15:47
Wohnort: Berlin

Beitragvon Michael Schumacher » 4. Februar 2007 03:26

mit dem Addieren meinte ich so:
SUBSTRING( CONVERT(varchar(250), ALARM) ,
(CHARINDEX ( 'Alarmtext:' , CONVERT(varchar(250), ALARM)) + 11) ,
(CHARINDEX ( '\par ' , CONVERT(varchar(250), ALARM), CHARINDEX ( 'Alarmtext:' , CONVERT(varchar(250), ALARM)) ) - (CHARINDEX ( 'Alarmtext:' , CONVERT(varchar(250), ALARM)) PLUS 11))) AS Alarm,


Statt des Wortes PLUS musst du natĂĽrlich ein Plus-Zeichen einfĂĽgen, was ich hier aus irgendwelchen GrĂĽnden nicht als solches sichtbar machen kann....

und was das ermitteln der Charcodes angeht, du könntest versuchen, einen Datensatz in eine Textdatei zu exportieren und diese dann mit einem HEX-Editor öffnen.

oder aber du ermmittelst die Codes empirisch,
oder, wenn es immer genau 2 Zeichen vor dem /par sind, ziehst du halt 2 von diesem Charindex ab...


[Edit TL: Das Plus-Zeichen '+' funktioniert schon, nur in der Vorschau gibt es wohl ein Problem.]
mfg
Michael Schumacher


Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
Hmmm, ach heut' ist Backup-Tag, also alles schnell nach /dev/nul sichern!
Benutzeravatar
Michael Schumacher
Ehrenmitglied
 
Beiträge: 1762
Registriert: 1. August 2005 11:12
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 3.x, 4.x, 5.x

Beitragvon stryk » 4. Februar 2007 12:42

Mein nächster Versuch wäre dann:

Code: Alles auswählen
SELECT KUNUMMER, ANREDE, NAME, ANSCHR, ZUSATZ, STRASSE, PLZ, ORT, FAX,

  SUBSTRING(
    CONVERT(varchar(250), ALARM),
    CHARINDEX('Alarmtext:', CONVERT(varchar(250), ALARM)) + 11,
    (
      CHARINDEX('\par ', CONVERT(varchar(250), ALARM), CHARINDEX('Alarmtext:', CONVERT(varchar(250), ALARM)))
      - CHARINDEX('Alarmtext:', CONVERT(varchar(250), ALARM))
    ) - 13
  )
  AS Alarm,

SPRACHE, KONDITION
FROM DATENBANK
Jörg A. Stryk (MVP - Dynamics NAV)
NAV/SQL Performance Optimization & Troubleshooting
STRYK System Improvement
stryk
Microsoft Partner
Microsoft Partner
 
Beiträge: 767
Registriert: 30. November 2006 12:32
Wohnort: NĂĽrnberg
Realer Name: Jörg Stryk
Bezug zu Microsoft Dynamics: Freiberufler
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Beitragvon tesarolle » 4. Februar 2007 14:42

Hallo Ihr beiden!!!

Erstmal vielen Dank für Eure Mühe! Habe beide Eure Vorschläge ausprobiert, es entsteht jeweils nun das selbe Problem. Beim Aufrufen der Sicht auf SQL Seite kommt die Meldung: "Ungültiger Längenparameter (length) wurde an die Substring-Funktion übergeben"...

Auf dem SQL-Server zeigt er zumindest das gewünschte Ergebnis an und dann kkommt aber die o..g. Melddung. Wenn ich die Sicht aus Navision heraus aufrufe hängt sich der Client auf...

Noch Ideen auf Euerer Seite?
tesarolle
 
Beiträge: 400
Registriert: 30. Januar 2007 15:47
Wohnort: Berlin

Beitragvon Michael Schumacher » 4. Februar 2007 14:57

das wird vermutlich am 2.Teil liegen, d.h. wenn der Teilstring \par nicht gefunden wird, gibt es einen negativen Wert, was natĂĽrlich nicht erlaubt ist.
hier musst du also wohl auch noch eine IF Abfrage mit in den Befehl aufnehmen.
Jörg, du bist wieder dran mit Fleißkärtchen verdienen :mrgreen:
mfg
Michael Schumacher


Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
Hmmm, ach heut' ist Backup-Tag, also alles schnell nach /dev/nul sichern!
Benutzeravatar
Michael Schumacher
Ehrenmitglied
 
Beiträge: 1762
Registriert: 1. August 2005 11:12
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 3.x, 4.x, 5.x

Beitragvon tesarolle » 4. Februar 2007 15:15

test
Dateianhänge
AUSGABE DADR0003.xls
(31.89 KiB) 36-mal heruntergeladen
tesarolle
 
Beiträge: 400
Registriert: 30. Januar 2007 15:47
Wohnort: Berlin

Beitragvon tesarolle » 4. Februar 2007 15:16

Mhn, hat nun endlich geklappt :-) Oben die Datei muss man in *.txt umbenennen. Ist eine txt datei, komisch das hier keine txt angenommmen werden...

Jedenfalls suche ich nun nach den nicht druckbaren Zeichen hinter mmeinen alarmtexten, sonst fĂĽhrt das nur zu weiteren problemen mit dem +13 - 11 usw...
tesarolle
 
Beiträge: 400
Registriert: 30. Januar 2007 15:47
Wohnort: Berlin

Beitragvon tesarolle » 4. Februar 2007 17:03

Hallo Michael, er ist noch nicht gelöst!

Ich habe nur da oben geschrieben das das hochladen der txt datei endlich geklappt hat. Das Problem mit der Fehlermeldung in der Sicht besteht immer noch...
tesarolle
 
Beiträge: 400
Registriert: 30. Januar 2007 15:47
Wohnort: Berlin

Beitragvon tesarolle » 4. Februar 2007 17:11

Habe noch ne Frage, im Anhang in der Bilddatei habe ich im Hexeditor auf die nicht druckbaren Zeichen gezoomt, wie frage ich das ab???

Die letzte funktionierende Version :-) meiner Sicht ist ja die hier:

SELECT KUNUMMER, ANREDE, NAME, ANSCHR, ZUSATZ, STRASSE, PLZ, ORT, FAX,

SUBSTRING( CONVERT(varchar(250), ALARM) ,
CHARINDEX ( 'Alarmtext:' , CONVERT(varchar(250), ALARM)) ,
(CHARINDEX ( '\par ' , CONVERT(varchar(250), ALARM), CHARINDEX ( 'Alarmtext:' , CONVERT(varchar(250), ALARM)) ) - CHARINDEX ( 'Alarmtext:' , CONVERT(varchar(250), ALARM)))) AS Alarm,

SPRACHE, KONDITION
FROM DATENBANK
Dateianhänge
nicht_druckbare_Zeichen.JPG
tesarolle
 
Beiträge: 400
Registriert: 30. Januar 2007 15:47
Wohnort: Berlin

Beitragvon Michael Schumacher » 4. Februar 2007 17:30

Ja, das ist das ganz normale CRLF (Chr$(13) + chr$(10)).
Ich müsste jetzt die Onlinedoku zur Hand haben um die Syntax für den SQL-Befehl nennen zu können....
mfg
Michael Schumacher


Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
Hmmm, ach heut' ist Backup-Tag, also alles schnell nach /dev/nul sichern!
Benutzeravatar
Michael Schumacher
Ehrenmitglied
 
Beiträge: 1762
Registriert: 1. August 2005 11:12
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 3.x, 4.x, 5.x

Beitragvon stryk » 5. Februar 2007 11:12

Hmmm ... ist natĂĽrlich schwierig, wenn man nicht weiĂź, wie der Fehler zustande kommt ... ich denke, daĂź es durch so 'ne Konstellation kommt:

Statt ...Alarmtext: schwarze Liste##\par...

steht ...Alarmtext:##\par...

kann das sein? In dem Fall könnte man den Offset ein wenig ändern ...
Also, noch'n Versuch:

Code: Alles auswählen
SELECT KUNUMMER, ANREDE, NAME, ANSCHR, ZUSATZ, STRASSE, PLZ, ORT, FAX,

  LTRIM(SUBSTRING(
    CONVERT(varchar(250), ALARM),
    CHARINDEX('Alarmtext:', CONVERT(varchar(250), ALARM)) + 10,
    (
      CHARINDEX('\par ', CONVERT(varchar(250), ALARM), CHARINDEX('Alarmtext:', CONVERT(varchar(250), ALARM)))
      - CHARINDEX('Alarmtext:', CONVERT(varchar(250), ALARM))
    ) - 12
  ) )
  AS Alarm,

SPRACHE, KONDITION
FROM DATENBANK
Jörg A. Stryk (MVP - Dynamics NAV)
NAV/SQL Performance Optimization & Troubleshooting
STRYK System Improvement
stryk
Microsoft Partner
Microsoft Partner
 
Beiträge: 767
Registriert: 30. November 2006 12:32
Wohnort: NĂĽrnberg
Realer Name: Jörg Stryk
Bezug zu Microsoft Dynamics: Freiberufler
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Beitragvon tesarolle » 5. Februar 2007 11:49

Hallo Jörg,

bin ja ĂĽberhaupt dankbar das Du mir noch schreibst :-)!

Also ich habe mir die komplette Tabelle nochmal angeschaut, das mit dem "\par" als Trenner kann ich wohl knicken, weil in manchen Datensäten die Strings auch wieder etwas anders aussehen können. Der Fehler kommt mit Deinem letzten Versuch leider auch.

Ich habe rausgefunden das man anstatt "\par" den trenner fĂĽr nicht druckbare Zeichen (CRLF) nehmen kann!

Allerdings versuche ich gerade in Erfahrung zu bringen wie ich das dann abfrage, also das CLRF (:-. Bisher konnte mir das noch niemand sagen!
tesarolle
 
Beiträge: 400
Registriert: 30. Januar 2007 15:47
Wohnort: Berlin

Beitragvon stryk » 5. Februar 2007 13:07

Ich stell' mich jeder Herausforderung 8-)

Code: Alles auswählen
...
SELECT
  LTRIM(SUBSTRING(
    CONVERT(varchar(250), ALARM),
    CHARINDEX('Alarmtext:', CONVERT(varchar(250), ALARM)) + 10,
    (
      CHARINDEX((char(13) + char(10)), CONVERT(varchar(250), ALARM), CHARINDEX('Alarmtext:', CONVERT(varchar(250), ALARM)))
      - CHARINDEX('Alarmtext:', CONVERT(varchar(250), ALARM))
    ) - 10
  ))
  AS Alarm,
...
Jörg A. Stryk (MVP - Dynamics NAV)
NAV/SQL Performance Optimization & Troubleshooting
STRYK System Improvement
stryk
Microsoft Partner
Microsoft Partner
 
Beiträge: 767
Registriert: 30. November 2006 12:32
Wohnort: NĂĽrnberg
Realer Name: Jörg Stryk
Bezug zu Microsoft Dynamics: Freiberufler
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Beitragvon tesarolle » 5. Februar 2007 14:14

WOW, Super, es funktioniert jetzt!1!!!!!

Noch eine Frage, die letzte!

Jetzt ist es ja so das er wenn er Alarmtexte findet in den Strings das entsprechend ausgibt, aber bei denen wo nicht "Alarmtext" drin vorkommt die bleiben in der Sicht ja unverändert.

Der String ist bei diesen DDatensätzen dann ziemlich lang und sieht unschön aus, ich möchte wenn kein Alarmtext gefunden wurde das das Feld leer ist (mit wert null in der sicht angezeigt wird). Sodass am Ende halt nur die eigentlichen Alarmtexte bei den Datensätzen stehen wo eben welche da sind und wenn es keine Alarmtexte gibt die Felder einfach leer sind.

Geht das in dem Kontext unserer Sicht?
tesarolle
 
Beiträge: 400
Registriert: 30. Januar 2007 15:47
Wohnort: Berlin

Nächste

ZurĂĽck zu NAV 3.xx

Wer ist online?

Mitglieder in diesem Forum: Majestic-12 [Bot] und 1 Gast