[gelöst] Tabellenverknüpfung über Query

8. Juli 2020 14:50

Hallo,

wenn ich in C/AL mit sich aus mehreren Tabellen ergebende Datensätzen arbeiten will, dann geht das wohl über eine Query.
Frage1: richtig?

Jetzt habe ich zwei Tabellen, die ich nicht direkt über Schlüsselfelder (1:n) miteinander verknüpfen kann (ist leider so). Dh für eine Verknüpfung muss ich vorher den Feldinhalt einer Spalte bearbeiten.
Beispiel:
Schlüsselfeld s1 in Tab1: 123w
Feld s2 in Tab2: 123

Damit ich jetzt beide verbinden kann, muss ich im ersten Schritt aus 123w --> 123 erstellen und im zweiten Schritt dann die Query ausführen.
Frage2: Kann ich in einer Query direkt die Ausgabe eines Felds verändern (ähnlich wie in einem SQL-Select)? Wenn ja, dann würde ich eine Query vorschalten (Query baut aus 123w -->123) und die Verknüpfung in der darauf aufsetzenden Query herstellen. Wenn nein, wie kann obiges realisiert werden?

Vielen Dank!
Zuletzt geändert von Ralph71 am 15. Juli 2020 14:39, insgesamt 1-mal geändert.

Re: Tabellenverknüpfung über Query

8. Juli 2020 15:08

Hallo,

Frage1: kommt drauf an. :wink:

Frage2: NEIN.

Beschreibe dein Problem mal etwas genauer.

Gruß Fiddi

Re: Tabellenverknüpfung über Query

8. Juli 2020 15:14

mit einer Query geht das aus meiner Sicht nicht...aber per Code logischerweise schon.

was hast du denn vor?

sind die Zeichen in S1 immer nach dem Schema <zahl><zahl><zahl><buchstabe> aufgebaut?


https://docs.microsoft.com/en-us/dynamics-nav/string-functions

CopyStr und Strlen sollten dir behilflich sein

und dann natürlich weiter mit SetRange/SetFilter auf t2

Re: Tabellenverknüpfung über Query

8. Juli 2020 15:22

@sweikelt: geht das nicht so?
Eine Query baut mir den Datenstamm aus verschiedenen Tabellen auf, ich greife über ein Record darauf zu und kann damit arbeiten? Also alles doch trivial....

EDIT: sind die Zeichen in S1 immer nach dem Schema <zahl><zahl><zahl><buchstabe> aufgebaut? --> ich benötige immer die ersten 3 Zeichen
Zuletzt geändert von Ralph71 am 8. Juli 2020 15:27, insgesamt 1-mal geändert.

Re: Tabellenverknüpfung über Query

8. Juli 2020 15:25

@Fiddi
Ich möchte aus zwei Tabellen in C/AL einen Datensatz (eher 5000) bilden und diesen dann exportieren. in C/AL kann ich ja jedes Feld der Query anfassen, evtl noch kontrollieren usw. Deshalb der Gedanke eine Query zu bauen. Und der Name Query sollte ja auch das tun....

Re: Tabellenverknüpfung über Query

8. Juli 2020 15:32

Hallo,

wenn du eine Tabellen evtl. etwas anders verknüpfen würdest, geht das evtl. ohne Query und Tabellen. Aber das kommt auf den Einsatzzweck an.

Wenn du z.B. in deiner Tabelle mit 123w auch ein Feld mit 123 ablegen würdest, dann könntest du darüber die Daten verknüpfen und mit Flowfields arbeiten. Aber das funktioniert nur, wenn die Daten hier statisch sind.
Auch könntest du die Filterung über einen Flowfilter benutzen, der im OnValidate- Trigger von Feld 123w von Tabelle s1 erstellt = 123 bzw. gefiltert wird.

Gruß Fiddi

Re: Tabellenverknüpfung über Query

8. Juli 2020 15:47

Ralph71 hat geschrieben:Eine Query baut mir den Datenstamm aus verschiedenen Tabellen auf, ich greife über ein Record darauf zu und kann damit arbeiten? Also alles doch trivial....

natürlich ist das trivial - allerdings funktioniert deine Anforderung mit den uns vorgelegten Daten nicht, da du in der Query nicht einfach ein Feld beschneiden kannst.

du möchtest n Spalten aus t1 und m Spalten aus t2 als einen Datensatz exportieren, wobei t1 und t2 nicht direkt miteinander verknüpft sind, sondern die ersten 3 Zeichen vom feld s1 aus t1 zur Filterung in feld s2 in t2 verwendet werden soll

ganz grob
Code:
t1.findset()
repeat
   t2.SetRange(s2,COPYSTR(t.s1,1,3))
   if t2.FindSet() then begin
     repeat
        ExportiereDingeAusTables(t1,t2);
     until t2.next=0;
   end;
until t1.next=0


---> kein Anspruch auf Korrektheit ;)