(GELÖST)(CC/RTC)Dataport - Projektwarteschlange

22. November 2012 10:33

Moin zusammen,

ich versuche einen Dataport in einer Codeunit umzuwandeln/nachzuprogrammieren,weil der NAS ja keine Dataport mag.

Somit hatte ich die frage ob es Seiten gibt oder jemand ein simple Vorlage hat die mir Erklären könnte, wie ich einen Dataport in einer Codeunit nachbilde.

Mir fehlt dort das Programmierwissen, ist das Erste mal das ich das mache.

Gruß
Tahir
Zuletzt geändert von Khenas am 23. November 2012 12:52, insgesamt 1-mal geändert.

Re: (CC/RTC)Dataport - Projektwarteschlange

22. November 2012 10:52

Dataports kann man in der Projektwarteschlange ausführen, wenn man sie über eine Codeunit aufruft.

CodeunitID := 50048;
DATAPORT.RUN(CodeunitID)

Wenn der Dataport keine Eingaben erwartet, sollte es so funktionieren.

Re: (CC/RTC)Dataport - Projektwarteschlange

22. November 2012 10:59

RaiNav hat geschrieben:Dataports kann man in der Projektwarteschlange ausführen, wenn man sie über eine Codeunit aufruft.

CodeunitID := 50048;
DATAPORT.RUN(CodeunitID)

Wenn der Dataport keine Eingaben erwartet, sollte es so funktionieren.


Ich sollte weiter ausholen, ich habe schon eine Codeunit von der ich aus Report und Codeunits starten kann.
Mein Code
Code:
ParameterString_loc := '';
ObjektCodeTxt_loc := '';
ObjektID_loc := 0;
IF ("Parameter String" <> '') THEN BEGIN
  ParameterString_loc := UPPERCASE(COPYSTR("Parameter String",1,1));
  ObjektCodeTxt_loc := COPYSTR("Parameter String",2);
  EVALUATE(ObjektID_loc,ObjektCodeTxt_loc);
  CASE ParameterString_loc OF
    'C' :
    BEGIN
      CODEUNIT.RUN(ObjektID_loc);
    END;
    'R' :
    BEGIN
      REPORT.RUN(ObjektID_loc);
    END;
  END;
END;


Nur wenn ich den Code Anpasse
Code:
ParameterString_loc := '';
ObjektCodeTxt_loc := '';
ObjektID_loc := 0;
IF ("Parameter String" <> '') THEN BEGIN
  ParameterString_loc := UPPERCASE(COPYSTR("Parameter String",1,1));
  ObjektCodeTxt_loc := COPYSTR("Parameter String",2);
  EVALUATE(ObjektID_loc,ObjektCodeTxt_loc);
  CASE ParameterString_loc OF
    'C' :
    BEGIN
      CODEUNIT.RUN(ObjektID_loc);
    END;
    'R' :
    BEGIN
      REPORT.RUN(ObjektID_loc);
    END;
    'D' :
    BEGIN
      DATAPORT.RUN(ObjektID_loc);
    END;
  END;
END;


Nur wird eine Fehlermeldung angezeigt
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: (CC/RTC)Dataport - Projektwarteschlange

22. November 2012 11:14

Dataports und NAS vertragen sich nicht, die Projektwarteschlange kann man dann nur über einen normalen Client aufrufen.
Wie man Dateien erzeugt hatten wir hier neulich, das kann man natürlich auch im Codeunit so nutzen. Importieren kann man darüber via (READ) auch.

Für den RTC kommen noch die Übertragungen vom Client zur Service Tier dazu (Link).

Re: (CC/RTC)Dataport - Projektwarteschlange

23. November 2012 12:12

Hab den Dataport soweit in eine Codeunit umgewandelt.

Nur habe ich einen Fehler drin, wo ich einfach zu Blind bin den zufinden.
Das Problem ist er holt sich den Datensatz und schreibt den in den String "Teilstring", dieser soll das nach jedem ";" die Daten splitten und in die definierten Variablen schreiben.
DIes passiert nicht weil der den restlichen String reinschreibt.

Ein Beispiel:
01;Hamburg;Dose;low;125,2;MT;02.11.2012

Er übergibt der ersten Variable nicht "01" sondern "Hamburg;Dose;low;125,2;MT;02.11.2012".
Ich glaub ich bin einfahc zu Blind um den Fehler zu erkennen

Mein Code.
Code:
Teilstring := pteDataset;
KennNr_txt := '';
Region_txt := '';
Produkt_txt := '';
HighLow_txt := '';
Betrag_txt := '';
Einheit_txt := '';
Datum_txt := '';

OMR_re.RESET;
OMR_re.INIT;

// Feld 1 KennNr.
Teilstring := COPYSTR(Teilstring,STRPOS(Teilstring,';')+1,STRLEN(Teilstring));
KennNr_txt := Teilstring;
OMR_re."Kenn Nr." := KennNr_txt;

// Feld 2 Region
Teilstring := COPYSTR(Teilstring,STRPOS(Teilstring,';')+1,STRLEN(Teilstring));
Region_txt := Teilstring;
OMR_re.Region := Region_txt;

// Feld 3 Produkt
Teilstring := COPYSTR(Teilstring,STRPOS(Teilstring,';')+1,STRLEN(Teilstring));
Produkt_txt := Teilstring;
OMR_re.Produkt := Produkt_txt;

//Feld 4  HighLow Option Feld
Teilstring := COPYSTR(Teilstring,STRPOS(Teilstring,';')+1,STRLEN(Teilstring));
HighLow_txt := Teilstring;
CASE HighLow_txt OF
  'high' :
  BEGIN
    OMR_re."High/Low" := OMR_re."High/Low"::high
  END;
  'low' :
  BEGIN
    OMR_re."High/Low" := OMR_re."High/Low"::low
  END;
END;

//Feld 5 Betrag
Teilstring := COPYSTR(Teilstring,STRPOS(Teilstring,';')+1,STRLEN(Teilstring));
Betrag_txt := Teilstring;
EVALUATE(OMR_re.Betrag,Betrag_txt);

//Feld 6 Einheit
Teilstring := COPYSTR(Teilstring,STRPOS(Teilstring,';')+1,STRLEN(Teilstring));
Einheit_txt:= Teilstring;
OMR_re.Einheit := Einheit_txt;

// Feld 7 Datum
Datum_txt := DELCHR(COPYSTR(Teilstring,1,STRPOS(Teilstring,';')-1),'<',' ');
IF Datum_txt <> '' THEN BEGIN
  EVALUATE(Tag,COPYSTR(Datum_txt,1,2));
  EVALUATE(Monat,COPYSTR(Datum_txt,4,2));
  EVALUATE(Jahr,COPYSTR(Datum_txt,7,4));
  OMR_re.Datum := DMY2DATE(Tag, Monat, Jahr);
END;

OMR_re.INSERT;

Re: (CC/RTC)Dataport - Projektwarteschlange

23. November 2012 12:38

Hat sich erledigt, hab den Fehler gefunden es fehlte eine Befehlzeile komplett