[Gelöst] RTC Stored Procedure ausführen

21. November 2018 18:03

Hi,

ich würde gerne eine SQL Stored Procedure aus Nav (via C/AL) ausführen.

In 2009 hatte ich das mit ADO und Automations gemacht:
(https://dynamicsuser.net/nav/b/stryk/po ... h-with-nav)

In NAV2018 geht das nicht mehr, man muss es wohl über DOTNet machen.

Habe dazu folgendes gefunden und versuche das nachzubauen:
https://www.erpsoftwareblog.com/2014/07 ... ts-part-2/

Dort gibt es eine Funktion GetEnum, welche eine Variable vom DataTyp DotNet und SubType System.Enum, und System.Convert.
Ich finde diese aber nicht :-( Kann mir jemand sagen in welcher Assembly ich gucken muss? Ich hätte jetzt gedacht in System, Version=4.0.0.0,, aber da ist nichts.

Vielleicht hat auch noch jemand ein Link mit einem aktuelleren Beispiel der zeigt wie man es realisieren könnte.

Vielen Dank
Zuletzt geändert von elTorito am 26. November 2018 11:54, insgesamt 1-mal geändert.

Re: RTC Stored Procedure ausführen

26. November 2018 09:07

Keiner eine Idee? :cry:

Re: RTC Stored Procedure ausführen

26. November 2018 09:48

Hallo,

ich habe eine txt angehangen mit 2 Objekten so wie wir das Problem gelöst haben.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: RTC Stored Procedure ausführen

26. November 2018 11:46

Hi Stefan,

BildBildBildBild

Vielen Vielen Dank !!

PS: Hier meine Implementation:

Code:
PROCEDURE FullTextSearch@5041150(SearchTerms@5041150 : Text[50]) : Text[30];
    VAR
      countx@5041154 : Integer;
      i@5041153 : Integer;
      Statement@5041152 : Text[1024];
      SearchX@5041151 : ARRAY [6] OF Text[30];
      Setup@5041157 : Record 50018;
      DBName@5041156 : Text[50];
      CompanyName@5041155 : Text[50];
      SQLQuery@5041158 : Text;
    BEGIN
      countx := STRLEN(DELCHR(SearchTerms, '<=>', DELCHR(SearchTerms,'<=>', '*')));
      SearchTerms := CONVERTSTR(SearchTerms, '*', ',');

      IF countx > 5 THEN
        ERROR('Zu viele Suchbegriffe');

      FOR i := 1 TO countx+1 DO BEGIN
        SearchX[i] := SELECTSTR(i, SearchTerms);
      END;

      Statement := 'EXEC ft_itemsearch ''' + SearchX[1] + ''','''+SearchX[2]+''','''+SearchX[3]+''','''
          +SearchX[4]+''','''+SearchX[5]+''','''+SearchX[6]+'''';

      Setup.GET;
      ConnectToDatabase(Setup."Server Name",Setup."DataBase Name",Setup."SQL User",Setup.Password);
      IF DBName = '' THEN
        DBName := Setup."DataBase Name";

      IF CompanyName = '' THEN
        CompanyName := Setup."Mandant Name";

      ItemTmp.DELETEALL;
      SQLCommand := SQLConnection.CreateCommand;
      SQLCommand.CommandText :=  Statement;

      SQLDataReader := SQLCommand.ExecuteReader();
      ItemTmp.DELETEALL;
      //Insert the  resulting record set into a temporary table
      WHILE SQLDataReader.Read() DO BEGIN

        IF Item.GET(GetFieldValue(0)) THEN BEGIN
              ItemTmp.INIT;
              ItemTmp := Item;
              ItemTmp.INSERT;
        END;
      END;


      IF PAGE.RUNMODAL(0, ItemTmp) = ACTION::LookupOK THEN BEGIN
        MESSAGE('Exit Text: ' + ItemTmp."No.");
        EXIT(ItemTmp."No.");
      END;
    END;