24. November 2006 10:46
VerbandKontakte.SETFILTER(VerbandKontakte."Show as Contact Person",'%1',TRUE);
VerbandKontakte.SETFILTER(VerbandKontakte."Organization Type",'%1',VerbandKontakte."Organization Type"::City);
IF VerbandKontakte.FIND('-') THEN
AnzVerteiler := VerbandKontakte.COUNT;
WHILE (AnzVerteiler > 1) DO BEGIN
AnzVerteiler := AnzVerteiler - 1;
VerteilerCode_v := VerbandKontakte."Mailing Group";
SETFILTER("Mailing Group Code",'%1',VerteilerCode_v);
SETRANGE("Structure No.",GliederungsNr);
END;
24. November 2006 10:52
24. November 2006 11:03
24. November 2006 11:06
mgerhartz hat geschrieben:Hallo zusammen,
ich habe ein kleines Schleifenproblem. Der nachfolgende Code (kleiner Auszug) steht in einer Funktion, die in einer Subform ausgeführt wird. (...)
VerbandKontakte.SETRANGE("Show as Contact Person",TRUE);
VerbandKontakte.SETRANGE("Organization Type",VerbandKontakte."Organization Type"::City);
IF VerbandKontakte.FIND('-') THEN
REPEAT
VerteilerCode_v := VerbandKontakte."Mailing Group";
SETRANGE("Mailing Group Code",VerteilerCode_v);
SETRANGE("Structure No.",GliederungsNr);
UNTIL VerbandKontakte.NEXT = 0;
24. November 2006 11:28
24. November 2006 11:32
VerbandKontakte.SETRANGE("Show as Contact Person",TRUE);
VerbandKontakte.SETRANGE("Organization Type",VerbandKontakte."Organization Type"::City);
IF VerbandKontakte.FIND('-') THEN
REPEAT
// Schleife auf die Subform Datensätze
IF rec.FIND('-') THEN
REPEAT
MARK(TRUE); // (Markieren zum Anzeigen)
UNTIL rec.NEXT = 0;
UNTIL VerbandKontakte.NEXT = 0;
MARKEDONLY(TRUE); // Zeige die Datensätze
24. November 2006 11:35
24. November 2006 11:49
VerbandKontakte.SETRANGE("Show as Contact Person",TRUE);
VerbandKontakte.SETRANGE("Organization Type",VerbandKontakte."Organization Type"::City);
IF VerbandKontakte.FIND('-') THEN
REPEAT
// Schleife auf die Subform Datensätze
rec.RESET;
rec.SETCURRENTKEY(...); //Evtl. wg. der Performance!
rec.SETRANGE("Mailing Group Code",VerteilerCode_v);
SETRANGE // Evtl. noch weitere!
IF rec.FIND('-') THEN
REPEAT
MARK(TRUE); // (Markieren zum Anzeigen)
UNTIL rec.NEXT = 0;
UNTIL VerbandKontakte.NEXT = 0;
MARKEDONLY(TRUE); // Zeige die Datensätze
24. November 2006 11:52
CASE Gliederung."Organization Type" OF
Gliederung."Organization Type"::State:BEGIN
VerbandKontakte.SETFILTER(VerbandKontakte."Show as Contact Person",'%1',TRUE);
VerbandKontakte.SETFILTER(VerbandKontakte."Organization Type",'%1',VerbandKontakte."Organization Type"::State);
IF VerbandKontakte.FIND('-') THEN
REPEAT
IF Rec.FIND('-') THEN
REPEAT
MARK(TRUE); // (Markieren zum Anzeigen)
UNTIL Rec.NEXT = 0;
UNTIL VerbandKontakte.NEXT = 0;
MARKEDONLY(TRUE);
VerteilerCode_v := VerbandKontakte."Mailing Group";
SETFILTER("Mailing Group Code",'%1',VerteilerCode_v);
SETFILTER("Structure No.",COPYSTR(GliederungsNr,1,2) + '??????');
END;
24. November 2006 11:56
IF VerbandKontakte.FIND('-') THEN
REPEAT
VerbandKontakte.MARK(TRUE);
UNTIL VerbandKontakte.NEXT = 0;
24. November 2006 12:05
24. November 2006 12:10
24. November 2006 12:17
rec.SETRANGE("Mailing Group Code",VerteilerCode_v);
MARKEDONLY(TRUE);
VerteilerCode_v := VerbandKontakte."Mailing Group";
SETFILTER("Mailing Group Code",'%1',VerteilerCode_v);
SETRANGE("Structure No.",GliederungsNr);
24. November 2006 12:46
Gliederung."Organization Type"::City:BEGIN
VerbandKontakte.SETFILTER(VerbandKontakte."Show as Contact Person",'%1',TRUE);
VerbandKontakte.SETFILTER(VerbandKontakte."Organization Type",'%1',VerbandKontakte."Organization Type"::City);
IF VerbandKontakte.FIND('-') THEN
REPEAT
Rec.RESET;
Rec.SETRANGE("Mailing Group Code",VerteilerCode_v);
IF Rec.FIND('-') THEN
REPEAT
MARK(TRUE); // (Markieren zum Anzeigen)
UNTIL Rec.NEXT = 0;
UNTIL VerbandKontakte.NEXT = 0;
MARKEDONLY(TRUE);
VerteilerCode_v := VerbandKontakte."Mailing Group";
SETFILTER("Mailing Group Code",'%1',VerteilerCode_v);
SETRANGE("Structure No.",GliederungsNr);
END;
24. November 2006 13:12
mgerhartz hat geschrieben:Keine Idee?
24. November 2006 13:15
24. November 2006 13:54
mgerhartz hat geschrieben:Tja, das dürfte schwierig werden
24. November 2006 14:15
mgerhartz hat geschrieben:Hi Mikka,
die Subform zeigt Kontaktdaten aus der Tabelle Contact an. Und es sollen eben nur die angezeigt werden, die in der Tabelle Verbandkontakte markiert wurden. (A/B/C). Also Datensätze in der Tabelle Verbandkontakte markieren und nur diese für den Filter auf die Tabelle Contact verwenden.
24. November 2006 15:03
Gliederung.GET(GliederungsNr);
RESET;
SETCURRENTKEY("Structure No.","Customer Type","Mailing Group Code");
FILTERGROUP(50000);
SETRANGE("Customer Type","Customer Type"::Member);
CASE Gliederung."Organization Type" OF
Gliederung."Organization Type"::State:BEGIN
VerbandKontakte.SETFILTER(VerbandKontakte."Show as Contact Person",'%1',TRUE);
VerbandKontakte.SETFILTER(VerbandKontakte."Organization Type",'%1',VerbandKontakte."Organization Type"::State);
IF VerbandKontakte.FIND('-') THEN
BEGIN
REPEAT
VerbandKontakte.MARK(TRUE); // Markieren der VerteilerCodes in Tab. VerbandKontakte
UNTIL VerbandKontakte.NEXT = 0;
END;
VerbandKontakte.MARKEDONLY(TRUE); // Zeige nur markierte Datensätze
IF VerbandKontakte.FIND('-') THEN
BEGIN
REPEAT
VerteilerCode_v := VerbandKontakte."Mailing Group"; // in der Schleife soll die VAR VerteilerCode_v mit dem
SETFILTER("Mailing Group Code",'%1',VerteilerCode_v); // Verteiler Code gefüllt werden, um dann in der Sub-Form
SETFILTER("Structure No.",COPYSTR(GliederungsNr,1,2) + '??????'); // (Tabelle) alle Kontakte auszugeben, auf die zuvor
UNTIL VerbandKontakte.NEXT = 0; // gefiltert wurde.
END;
END;
24. November 2006 17:09
Gliederung."Organization Type"::City:BEGIN
VerbandKontakte.SETFILTER(VerbandKontakte."Show as Contact Person",'%1',TRUE);
VerbandKontakte.SETFILTER(VerbandKontakte."Organization Type",'%1',VerbandKontakte."Organization Type"::City);
IF VerbandKontakte.FIND('-') THEN
REPEAT;
VerbandKontakte.MARK(TRUE);
UNTIL VerbandKontakte.NEXT = 0;
VerbandKontakte.MARKEDONLY(TRUE);
REPEAT;
VerteilerCode_v := VerbandKontakte."Mailing Group";
SETFILTER("Mailing Group Code",'%1',VerteilerCode_v);
SETRANGE("Structure No.",GliederungsNr);
UNTIL VerbandKontakte.NEXT = 0;
END;
24. November 2006 19:09
//hier sind deine Filter auf die Verteiler....
IF VerbandKontakte.FIND('-') THEN begin
rec.RESET; //zuerst mal alle Marks von vorher löschen
rec.SETRANGE("Structure No.",GliederungsNr); //und gemeinsames Filterkriterium setzen
REPEAT; //für jeden Verteiler wird diese Schleife durchlaufen
rec.SETRANGE("Mailing Group Code",VerbandKontakte."Mailing Group");
if rec.FIND(-) then REPEAT //diese Schleife für jeden Kontakt des aktuellen Verteilers
rec.MARK(TRUE);
UNTIL rec.NEXT=0;
UNTIL VerbandKontakte.NEXT = 0;
rec.MARKEDONLY(TRUE);
CURRFORM.UPDATE(FALSE) //false, damit er in den Kontakten nicht versucht etwas zu speichern.
27. November 2006 10:57
Gliederung."Organization Type"::City:BEGIN
VerbandKontakte.RESET;
VerbandKontakte.SETFILTER(VerbandKontakte."Show as Contact Person",'%1',TRUE);
VerbandKontakte.SETFILTER(VerbandKontakte."Organization Type",'%1',VerbandKontakte."Organization Type"::City);
IF VerbandKontakte.FIND('-') THEN
BEGIN
VerteilerCode_v := VerbandKontakte."Mailing Group";
Rec.RESET;
Rec.SETRANGE("Structure No.",GliederungsNr);
REPEAT;
Rec.SETRANGE("Mailing Group Code",VerteilerCode_v);
IF Rec.FIND('-') THEN
REPEAT
Rec.MARK(TRUE);
UNTIL Rec.NEXT = 0;
UNTIL VerbandKontakte.NEXT = 0;
Rec.MARKEDONLY(TRUE);
CurrForm.UPDATE(FALSE);
END;
END;
28. November 2006 06:40
4. Dezember 2006 16:12
Gliederung.GET(GliederungsNr);
RESET;
SETCURRENTKEY("Contact No.","Mailing Group Code","Alternative Gliederung");
VerbandKontakte.RESET;
VerbandKontakte.SETFILTER(VerbandKontakte."Show as Contact Person",'%1',TRUE);
VerbandKontakte.SETFILTER(VerbandKontakte."Organization Type",'%1',Gliederung."Organization Type");
IF VerbandKontakte.FIND('-') THEN
BEGIN
REPEAT
IF VerteilerCode_v = '' THEN
VerteilerCode_v := VerbandKontakte."Mailing Group"
ELSE
VerteilerCode_v := VerteilerCode_v + ' | ' + VerbandKontakte."Mailing Group";
UNTIL VerbandKontakte.NEXT = 0;
SETFILTER("Structure No.",GliederungsNr);
SETFILTER("Alternative Gliederung",'');
SETFILTER("Mailing Group Code",VerteilerCode_v);
IF FIND('-') THEN
REPEAT
MARK(TRUE)
UNTIL NEXT = 0;
END;