gelöst (CC) Daten aus Lookup-Form weiterverwenden

12. April 2017 12:57

Hallo Gemeinde,

NAV stellt mich mal wieder vor ein Problem. Folgenden Code habe ich in einer gebastelt:

// Tabelle mit Adressen
lrc_ADR_Look.RESET;
lrc_ADR_Look.SETRANGE(Address_No,'70000','80000'); // Filterung auf Kreditoren
lrc_ADR_Look.SETRANGE(Town,pSeminar.Town); // Filterung auf Ort, der im Parameter übergeben wird
IF lrc_ADR_Look.FINDSET THEN BEGIN
// Befüllung temporärer Adress-Tabelle lrc_ADR
REPEAT
lrc_ADR.INIT;
lrc_ADR := lrc_ADR_Look;
lrc_ADR.INSERT;
UNTIL lrc_ADR_Look.NEXT = 0;
END;

// Ohne die beiden SETRANGES hier bekomme ich unverständlicherweise ALLE Adressen angezeigt, nicht nur die aus der Schleife da oben
lrc_ADR.SETRANGE(Address_No,'70000','80000');
lrc_ADR.SETRANGE(Town,pSeminar.Town);
IF lrc_ADR.FINDSET THEN BEGIN
// Aufruf einer Form, wo die gefilterten Einträge angezeigt werden. Der Benutzer soll hier mehrere Datensätze auswählen über ein Boolean-Feld, s.u.
lform_ADR.SETTABLEVIEW(lrc_ADR);
lform_ADR.LOOKUPMODE := TRUE;
IF lform_ADR.RUNMODAL = ACTION::LookupOK THEN BEGIN
lform_ADR.GETRECORD(lrc_ADR);
lrc_ADR_Work := lrc_ADR;
// Auf diesen Boolean filtere nun ich, da ich nur diese Datensätze weiterverwenden will
lrc_ADR_Work.SETRANGE(Auswahl_fuer_Anfrage,TRUE);
IF lrc_ADR_Work.FINDSET THEN BEGIN
REPEAT
.
.
.

usw.

Der Code soll folgendes leisten: je nach dem, wo das im Parameter pSeminar stehende Seminar stattfindet, sollen die Kreditoren im Bereich 70k-80k auf diesen Ort gefiltert und diese Liste dem Benutzer angezeigt werden. Der wählt dann mehrere davon aus (Boolean-Feld oder Satzmarke) und diese ausgewählten werden dann weiterbenutzt.
Ein bisschen habe ich im Code schon kommentiert, was wo passieren soll. Letztendlich bekomme ich den veränderten Rec mit den gesetzten Booleans aber nicht zurück und obwohl ich da nur eine temporäre Variable befülle, werden die Haken sogar in der normalen Tabelle gesetzt (was ich nicht möchte).
Mit der Satzmarke habe ich es auch schon versucht, die wurde mir auch nicht weitergereicht. Hab ich da etwas völlig falsch gemacht?
Zuletzt geändert von ChrisF am 12. April 2017 15:55, insgesamt 1-mal geändert.

Re: (CC) Daten aus Lookup-Form weiterverwenden

12. April 2017 13:47

Du sagst deinem Form nicht das er mit dem temporaeren Record, den du dir vorher erstellt hast, arbeiten soll.
Du setzt lediglich den View. Da ich davon ausgehe das dein Form kein "use temporary table" an hat, ist es klar das du die Datensätze in den "original" Datensaetzen setzt.
lform_ADR.SETRECORD(lrc_ADR);
sollte schon die Loesung sein

Re: (CC) Daten aus Lookup-Form weiterverwenden

12. April 2017 14:54

Du meinst die Eigenschaft "SourceTableTemporary" auf der Form, oder? Das habe ich bisher auf FALSE, aber auch mit TRUE dadrin komme ich nicht weiter. Wenn ich es auf TRUE stehen habe, bekomme ich nur eine leere Maske angezeigt, egal ob ich SETRECORD verwende oder nicht.

Die Erweiterung mit SETRECORD habe ich gemacht, leider hilft das nicht weiter, ich bin immer noch in den Original-Daten.

Re: (CC) Daten aus Lookup-Form weiterverwenden

12. April 2017 15:27

Gerade mal mein Code durchsucht.
Wenn ich temporären Tabellen arbeite hab ich auf den Page immer ne eigene Funktion um den Record zu setzen.

Und google spuckt sogar die Antwort dazu aus warum ich das gemacht habe :D
http://forum.mibuso.com/discussion/38328/form-runmodal-formid-myrecord-vs-myform-runmodal

Sorry für den falschen Hinweis

Re: (CC) Daten aus Lookup-Form weiterverwenden

12. April 2017 15:37

Mit dem SourceTableTemporary und der Befüllung im OnOpenForm-Trigger + Funktion, um die Stadt zu übergeben an die Form scheint das jetzt mit dem temporären Datensatz zu klappen, zumindest sind die Booleans nicht mehr gesetzt.
Anregungen hab ich mir hier her geholt:
https://dynamicsuser.net/nav/b/mark_bru ... y-property


Aber: wie kriege ich da nur die gesetzten Booleans - Datensätze wieder zurück in meine ursprüngliche Funktion? GETRECORD gibt mir nur den ausgewählten Datensatz zurück (der sich durchaus unterscheiden kann von den geboolten Datensätzen (ok, ganz schlechtes Deutsch :-D)

Re: (CC) Daten aus Lookup-Form weiterverwenden

12. April 2017 15:54

Update: funktioniert nun. Und zwar mit Form.RUNMODAL(MeineAnzeigeForm,lrc_ADR); :

lrc_ADR.SETRANGE(Address_No,'70000','80000');
lrc_ADR.SETRANGE(Town,pSeminar.Town);
IF lrc_ADR.FINDSET THEN BEGIN
FORM.RUNMODAL(57053,lrc_ADR);