Gelöst Suchfunktion/Datenklasse

Hallo zusammen,

in der OL gibt es Suchfelder wo als Suchergebnis der eigentliche Wert und Matchcode getrennt mit '|' angezeigt werden:
upload_2017-7-12_16-38-28.png

Ich habe eine Datenklasse für Artikelsuche erstellt. Das funktionier soweit, lediglich die Anzeige des Suchergebnisses bekomme ich nicht hin, bei mir wird nur die Artikelnummer angezeigt.
upload_2017-7-12_16-42-41.png

Hat jemand eine Ahnung wie man eine kombinierte Anzeige hinkriegt?

Gruß

Vitalij
 
Hallo Vitalij,

du musst ein zweites Feld anlegen welches im Namen den Zusatz "Matchcode" hat und dem die Eigenschaft "Matchcode einer Datenklasse" zuweisen.

Im Developerkochbuch gibt es da ein Beispiel im Rezept 25 bei dem recBeschwerden.
Das lässt sich aber auf andere Übertragen.
 
Hallo Arne,

danke für die Antwort.

Das habe ich ausprobiert, jedoch keine Änderung. Für mich ist ebenfalls noch unklar ob nur das REC-Element um diese Felder mit Zusatz erweitert werden soll oder auch die Oberfläche, also MDE und EDI.
 
Hallo Vitalij,

ich habe bei mir in der Lösung folgendes gebaut um das zu erreichen:
Ich habe eine eigene Tabelle wo ich in der Spalte Lieferant die Lieferantennummer aus KHKKontokorent speicher. Und am ende will ich da auch den Matchcode angezeigt bekommen.

Im recMeineDaten gibt es die Felder:
Feldname: Lieferant; SQL-Abfrage Tabelle1: MeineTabelle.Lieferant; Datentyp: Schlüssel einer Datenklasse; Datenklasse: clsLieferant.Sage.System
Feldname: LieferantMatchcode; SQL-Abfrage Tabelle1: (Select KHKKontokorrent.Matchcode from KHKKontokorrent where MeineTabelle.Lieferant = KHKKontokorrent.Kto and KHKKontokorrent.Mandant = MeineTabelle.Mandant); Datentyp: Matchcode einer Datenklasse; Datenklasse: clsLieferant.Sage.System; Datenklassen-Schlüsselfeld: Lieferant (Hier muss der Feldname eingetargen werden wo der drin steht und nicht wie es sage haben will ;-) )

In ediMeineDaten sind folgende Felder:
Feldname: Lieferant
Feldname: LieferantMatchcode

Beide sind eingeblendet und haben eine Positionsnummer > 0

Es gibt da zwei Stolperfallen, zum einen muss das Matchcode Feld vom Namen her gleich dem Schlüsselfeld mit der Erweiterung Matchcode sein. Zum Anderen muss das Datenklassen-Schlüsselfeld richtig sein.
 
Guten Morgen,

das habe ich jetzt alles so eingestellt, mein Fehler war, dass ich nicht die gesamte Abfrage incl. SELECT in das Schlüssel/Matchcode Feld eingetragen habe, sondern nur KHKArtikel.Matchcode.

Habe den SQL-Profiler mitlaufen lassen, und stellte fest, dass bei meiner Suchklasse noch etwas nicht stimmt und zwar gibt es dort zwei Pflichtfelder "SQL-Feldname Schlüssel" und "SQL-Abfrage Matchcode". Da ich nach Artikel suchen möchte, ist mein Schlüssel in allen Elementen (sea, lst, cls, rec) die "Artikelnummer" und Matchcode "Matchcode".
upload_2017-7-14_10-32-45.png

Im Profiler sieht die Abfrage bei Auswählen eines Artikels in meiner Suche dann so aus:
SELECT Artikelnummer, Matchcode FROM KHKArtikel WHERE Matchcode LIKE '70000012%' AND KHKArtikel.Mandant = 123 AND KHKArtikel.Aktiv <> 0 ORDER BY Matchcode

Wie man sieht stimmt die WHERE- Bedingung nicht und die Suche endet mit einem Fehler.

Das kann ich nur steuern wenn ich in der Datenklasse im Feld "SQL-Abfrage Matchcode" auch die Artikelnummer eintrage:
upload_2017-7-14_10-38-13.png
Dann sieht die Abfrage im Profiler so aus:
SELECT Artikelnummer, Artikelnummer FROM KHKArtikel WHERE Artikelnummer LIKE '70000004%' AND KHKArtikel.Mandant = 123 AND KHKArtikel.Aktiv <> 0 ORDER BY Artikelnummer

In diesem Fall stimmt die Where-Bedingung, nur steht nach dem SELECT die Artikelnummer doppelt.

Jetzt funktioniert die Suche und bringt keinen Fehler, jedoch funktioniert das mit dem "Schlüssel/Matchcode Feld" nicht und im Tracelog-Manager tauch ein Fehler auf mit dem Hinweis, dass bei der Abfrage das Feld "Artikelnummer" doppelt abgefragt wird.

An diesem Verhalten der Datenklasse scheitert momentan mein Vorhaben. Weiß jemand wie ich die WHERE- Bedingung in einer Datenklasse beeinflussen kann?

Gruß

Vitalij
 
Hallo zusammen,

es hat nun geklappt
upload_2017-7-19_9-9-5.png

Folgendes wurde geändert:

Datenklasse cls
- Datentyp-Schlüsselergänzung --> auf "Int32" umgestellt
- Schlüssel für Formatierung --> 402

Datensatz rec
bei den beiden Feldern die an der kombinierten Anzeige beteiligt sind, in meinem Fall:
-ArtikelnummerMetall
-ArtikelnummerMetallMatchcode
muss man in der Eigenschaft "Datenklassen-Schlüsselfeld" nicht den Schlüssel der Datenklasse eintragen, sondern den Schlüssel zu dem der Matchcode geladen werden soll, in meinem Fall ist es "ArtikelnummerMetall"

Viele Grüße

Vitalij
 
Ein Wichtiger Hinweis:
Wenn man in einer Datenklasse den "Schlüssel für Formatierung" setzt, muss man für diese Mandanteneigenschaft in KHKMandanten die PartnerID eintragen, sonst bringt die Suche einen Fehler...

Das ist noch ein Bug bei SAGE.
 
Zurück
Oben