[gelöst] String teilweise auslesen und in Tabelle einfügen

30. Juli 2010 10:05

Guten Morgen liebes Forum,

für den Anfang mal, bin ein total blutiger Anfänger was Navision betrifft. Arbeite als Praktikant in einer kleineren Firma und man hat mich regelrecht ins kalte Wasser gestoßen. Prgrammierkenntnise sind zwar vorhanden, aber ich hänge hier mal total.... :(

Zu meiner Frage:

Ich habe einen String "mail1;mail2,;mail3, .... usw."
Meine Aufgabe ist es nun, diesen schrittweise aus zu lesen und dann jede einzelne Mail Adresse in eine eigene Zeile einer Tabelle zu schreiben ...
Leider habe ich null Plan bezüglich der richtigen Syntax. Ein kleines Gedankenkonstrukt schwirrt mir zwar im Kopf herum, aber ich bekomme keinen
Code her .... -.-

Ich hätte dies mit einer while Schleife gelöste, die das ";" als Anhaltspunkt nimmt. Ein weiterer Gedanke wäre, dass wenn eine Mail Adresse ausgelesen
worden ist, diese im String gelöscht wird und die nächste an den Anfang rückt. Das ganze wiederholt sich, bis nichts mehr vorhanden ist.

Danke an die, welche sich schon mal die Mühe gemacht haben, das ganze hier durch zu lesen.

mfg movie :)
Zuletzt geändert von movie_addicted am 2. August 2010 08:51, insgesamt 1-mal geändert.

Re: String teilweise auslesen und in Tabelle einfügen

30. Juli 2010 10:15

Hier könnten dir Converstr und dann selectstr weiter helfen.

Sonst ist deine Grundidee natürlich auch vollkommen ok.

Re: String teilweise auslesen und in Tabelle einfügen

30. Juli 2010 10:17

Es gibt da viele Möglichkeiten.

Eine einfache wäre mit Convertstr den String in eine Kommaseparierung zu überführen, da Emails keine Kommas enthalten und dann mit Selectstr die einzelnen E-Mails adressieren.

Schau am besten unter die Hilfe ?->C/Side Reference Guide, da findest du alle Befehle die du benötigst.
http://www.navision24.de ist für Anfänger auch recht nützlich.

Code:
EmailString:=CONVERTSTR(EmailString,';',',');
Email:=SELECTSTR(i,EmailString);


mfg,
winfy
Zuletzt geändert von winfy am 30. Juli 2010 10:25, insgesamt 1-mal geändert.

Re: String teilweise auslesen und in Tabelle einfügen

30. Juli 2010 10:24

War auch schon mein Gedanke:

Die Anzahl der Semikolons ermitteln, dies dann in eine Variable speichern und diese dann als Zählvariable verwenden.
Leider wird das dann doch zu umständlich ....

wie wäre es im Ansatz damit:

Code:
while STRPOS(string1,';')
   string2 := COPYSTR(String, Position);
   table.spaalte := string2;
   delstr(1,';');
   instert
END;

Re: String teilweise auslesen und in Tabelle einfügen

30. Juli 2010 10:36

Im Ansatz richtig :)

Re: String teilweise auslesen und in Tabelle einfügen

30. Juli 2010 10:37

Vielleicht hilft: http://msdn.microsoft.com/en-us/library/dd355257.aspx

Ansonsten wurde ja schon genannt: http://www.navision24.de/befehle/index.html

Re: String teilweise auslesen und in Tabelle einfügen

30. Juli 2010 10:39

hehe =) gut gut, dann auf ans ausprobieren.

Danke für die überaus schnelle Hilfe :-D


mfg movie

Re: String teilweise auslesen und in Tabelle einfügen

30. Juli 2010 11:01

Gerne mache ich das :) momentan bin ich aber noch am tüfteln.
Die Lösung poste ich dann gerne.

Edit:

Hier meine Lösung:

Der "EmailsString" (Email1;Email2;Email3; ....) wird auf ";" überprüft.Ist ein solches vorhanden wird die Position bis zum ";" ausgelesen
und 1 abgezogen. Somit weiß man die Länge der ersten Mail Adresse. Mittels "COPYSTR" kopiert es die erste Mail Adresse in die
Variable "SingleEmail". Danach wird in "EmailsString" die erste Mail Adresse mittels "DELSTR" gelöscht.
Schlussendlich schreibt es dann "SingleMail" in die Tabelle.

Code:
WHILE STRPOS(EmailsString,';') > 0  DO BEGIN
  pos := STRPOS(EmailsString,';');
  pos := pos - 1;   
  SingleEmail := COPYSTR(EmailsString,1, pos);
  ReceiverAdd:=DELSTR(EmailsString, 1 , pos + 1);
  "Table1"."Spalte1" := SingleAdd;
  "Table2"."Spalte2" := "Table1"."Spalte1";
  "Table1".MODIFY;
END;
EmailsString := '';
EXIT(TRUE);


mfg movie