AC Datenpräsentation über gbAddInRun.Sage.System

Arne Drews

Mitglied
Moin,

Es gibt schon Themen mit ähnlicher Problemstellung, aber ich möchte die nicht kapern, daher leider hier nochmal.

Allgemeine Info
Wir haben schon einige Jahre eine AC Datenpräsentation im Kontextmenü des Stammdatenformulars für die Artikel hängen.
Das lief bis vorgestern einwandfrei und ist seit dem verschwunden. Die Ursache war ich leider selber, weil ich nach dem Testen mit einer anderen Sache alle Elemente aus meiner Lösung entfernt hatte, weil es Fehler in der Sage verursacht hatte. Dabei habe ich voller Tatendrang aber leider auch das Kontextmenü-Element aus meiner Lösung entfernt, wo die AC Datenpräsentation registriert war.

Mein Stand des Wiederherstellungsversuchs
Ich habe in meiner Lösung über Anhängen an ein Kontextmenü Artikelstamm erzeugt und darin folgende Einstellungen vorgenommen:
1790842139505.png

Ich habe dabei Unterstützung von befreundeten Unternehmen bekommen, so dass es zumindest auf die Art wieder verknüpft ist.

Das aktuelle Problem
Die Datenpräsentation liefert die Message, dass keine Daten vorhanden sind, was mich nicht wundert, denn im SQL-Profiler konnte ich sehen, dass die Abfrage unvollständig ist:
SQL:
SELECT
  [vAM_ModulLagerbewegung].[Mandant],
  Cast([vAM_ModulLagerbewegung].[Bewegungsdatum] AS [date]) [Datum],
  Cast([vAM_ModulLagerbewegung].[Bewegungsdatum] AS [TIME]) [Uhrzeit],
  [vAM_ModulLagerbewegung].[Artikelnummer],
  [vAM_ModulLagerbewegung].[AuspraegungID],
  [vAM_ModulLagerbewegung].[HerkunftsLPKennung],
  [vAM_ModulLagerbewegung].[QuellLagerplatz]     [Herkunft],
  [vAM_ModulLagerbewegung].[ZielLPKennung],
  [vAM_ModulLagerbewegung].[ZielLagerplatz]      [Ziel],
  [vAM_ModulLagerbewegung].[Bewegungsart],
  [vAM_ModulLagerbewegung].[Lagerbewegung],
  [vAM_ModulLagerbewegung].[MengeBasis],
  [vAM_ModulLagerbewegung].[MengeLager],
  [vAM_ModulLagerbewegung].[Referenz],
  [vAM_ModulLagerbewegung].[Benutzer],
  [vAM_ModulLagerbewegung].[BuchungsID],
  [vAM_ModulLagerbewegung].[Memo],
  [vAM_ModulLagerbewegung].[Variante]

FROM
  [vAM_ModulLagerbewegung]

WHERE
  ( [vAM_ModulLagerbewegung].[Mandant] = 1 )
AND
  ( artikelnummer = '' )

Es wird keine Artikelnummer übermittelt und die Ausprägung gar nicht erst als Parameter angehängt.

Ich habe es in folgenden Varianten für Parameter 4 probiert:
Code:
"Schlüssel:=VOSSArtikelLagerbewegung;Filter:=[Artikelnummer]='"&$[KeyField(1)]&"';[AuspraegungID]="&$[KeyField(2)]
"Schlüssel:=VOSSArtikelLagerbewegung;Filter:=[Artikelnummer]='"&$[KeyField(1)]&"'"
"Schlüssel:=VOSSArtikelLagerbewegung"
Jede liefert im SQL Profiler dieselbe Query, wie oben.

Die Fragen aller Fragen
Was mache ich falsch? Wo ist mein Denkfehler?
 
Hi Arne,

ich glaube, der Fehler liegt an zwei Stellen.

Beim AC-Aufruf muss in Parameter 4 der Menüschlüssel über MenuSchlüssel übergeben werden. Außerdem müssen Artikelnummer und Ausprägungs-ID Bestandteil desselben Filters sein.

Ich würde Parameter 4 daher so aufbauen:

Code:
"MenuSchlüssel:=VOSSArtikelLagerbewegung;Filter:=[Artikelnummer]='" & $[KeyField(1)] & "' AND [AuspraegungID]=" & $[KeyField(2)]

Im Artikelstamm liefert $[KeyField(1)] die Artikelnummer und $[KeyField(2)] die Ausprägungs-ID.

Bei deiner bisherigen Variante

Code:
...;Filter:=[Artikelnummer]='...';[AuspraegungID]=...

beendet das Semikolon nach der Artikelnummer bereits den Filter. Die Ausprägungs-ID ist damit nicht mehr Teil der Filterbedingung.

Außerdem verwendest du aktuell Schlüssel:=VOSSArtikelLagerbewegung. An der Stelle müsste es meines Wissens MenuSchlüssel:=VOSSArtikelLagerbewegung heißen.

Falls danach im SQL-Profiler trotzdem weiterhin artikelnummer = '' auftaucht, würde ich testweise einmal feste Werte für Artikelnummer und Ausprägungs-ID eintragen. Dann sieht man schnell, ob wirklich der gerade bearbeitete Kontextmenüeintrag ausgeführt wird.

Viele Grüße
Marcel
 
Hi Marcel,

Das macht Sinn, teste ich gleich mal.

MenuSchlüssel bin ich nicht sicher, weil ich Schlüssel von einem externen Kollegen habe, bei dem das aus einer aktuell funktionierenden Lösung stammt. Aber teste ich natürlich auch.

Danke für die Anstöße.
 
So, habe das mal durchgetestet...

MenuSchlüssel vs Schlüssel
Hier scheint tatsächlich nur Schlüssel zu funktionieren, denn damit wird ja zumindest die Query aus dem korrekten AC Objekt gefunden.
Bei MenuSchlüssel hingegen bekomme ich lediglich einen Fehler:
1790927302412.png

Oder muss ich im AC vielleicht zusätzlich noch einen Startpunkt setzen?

[EDIT]
Ich habe mal im AC genauer hingesehen und dort befindet sich tatsächlich ein Startpunkt dazu und der Schlüssel ist korrekt.
Demnach kann ich mir die Fehlermeldung nicht erklären.



Die Query
Es hat sich durch das AND und weglassen des ; zwar etwas getan, aber leider nur die Tatsache, dass das Feld Artikelnummer in der WHERE Klausel nun mit einen Großbuchstaben beginnt. An der Struktur und den Parametern für die Query hat sich leider nichts geändert.
Die Artikelnummer bleibt leer und AuspraegungID taucht gar nicht erst auf.
SQL:
Select
    [vAM_ModulLagerbewegung].[Mandant]
    , Cast([vAM_ModulLagerbewegung].[Bewegungsdatum] As [date]) [Datum]
    , Cast([vAM_ModulLagerbewegung].[Bewegungsdatum] As [time]) [Uhrzeit]
    , [vAM_ModulLagerbewegung].[Artikelnummer]
    , [vAM_ModulLagerbewegung].[AuspraegungID]
    , [vAM_ModulLagerbewegung].[HerkunftsLPKennung]
    , [vAM_ModulLagerbewegung].[QuellLagerplatz] [Herkunft]
    , [vAM_ModulLagerbewegung].[ZielLPKennung]
    , [vAM_ModulLagerbewegung].[ZielLagerplatz] [Ziel]
    , [vAM_ModulLagerbewegung].[Bewegungsart]
    , [vAM_ModulLagerbewegung].[Lagerbewegung]
    , [vAM_ModulLagerbewegung].[MengeBasis]
    , [vAM_ModulLagerbewegung].[MengeLager]
    , [vAM_ModulLagerbewegung].[Referenz]
    , [vAM_ModulLagerbewegung].[Benutzer]
    , [vAM_ModulLagerbewegung].[BuchungsID]
    , [vAM_ModulLagerbewegung].[Memo]
    , [vAM_ModulLagerbewegung].[Variante]

From
    [vAM_ModulLagerbewegung]

WHERE
    ([vAM_ModulLagerbewegung].[Mandant] = 1)
    AND (Artikelnummer='')

Übrigens wird lt. Profiler immer diese Query gefeuert, auch wenn ich feste Artikelnummer und AusprägungID hinterlege, anstatt die KeyFields zu verwenden.
 
Zuletzt bearbeitet:
Zurück
Oben