Seite 1 von 1

[gelöst] Tabellenverknüpfung über Query

Verfasst: 8. Juli 2020 14:50
von Ralph71
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!

Re: Tabellenverknüpfung über Query

Verfasst: 8. Juli 2020 15:08
von fiddi
Hallo,

Frage1: kommt drauf an. :wink:

Frage2: NEIN.

Beschreibe dein Problem mal etwas genauer.

Gruß Fiddi

Re: Tabellenverknüpfung über Query

Verfasst: 8. Juli 2020 15:14
von sweikelt
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

Verfasst: 8. Juli 2020 15:22
von Ralph71
@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

Re: Tabellenverknüpfung über Query

Verfasst: 8. Juli 2020 15:25
von Ralph71
@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

Verfasst: 8. Juli 2020 15:32
von fiddi
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

Verfasst: 8. Juli 2020 15:47
von sweikelt
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 ;)