14. Oktober 2014 11:37
TempPlz.SETFILTER(Code,'%1',FrachtkostenTabelle."Post Code");
IF TempPlz.FIND THEN
MerkeFrachtkostenDatensatz();
14. Oktober 2014 12:51
14. Oktober 2014 13:45
McClane hat geschrieben:Man könnte versuchen, die Einträge mit * weg zu bekommen. Die, die nur aus * bestehen, sind sowieso immer gültig. Darauf brauchst du erst gar nicht zu filtern. Und anstelle 4156* schreibst du 10 Datensätze von 41560 bis 41569, damit die PLZ explizit da steht.
Danach müsste es doch, vorausgesetzt, dass der Schlüssel es hergibt, ein find('-')-Aufruf (mit den Filtern vorab) sein, der dir den besten Preis liefert, oder?
14. Oktober 2014 15:24
Frachtkosten.SETFILTER("Post Code",'%1|%2|%3|%4|%5',18565, 1856*,185*,18*,1*);
Function CopyFrachtkosten(FromFrachtkosten, ToFrachtkosten,Frachtkostengruppe,PostCode)
{
TempPLZ.Deleteall;
TempPlz.INIT;
Templz.INIT;
TempPLZ.Code := PostCode;
If NOT TempPLZ.INSERT THEN; //Nichts
WITH ToFrachtkosten DO BEGIN
PC1 := ZipCode;
PC2 := COPYSTR(ZipCode,1,4) +'*';
PC3 := COPYSTR(ZipCode,1,3) +'*';
PC4 := COPYSTR(ZipCode,1,2) +'*';
PC5 := COPYSTR(ZipCode,1,1) +'*';
FromFrachtKosten.SETFILTER("Post Code",'%1|%2|%3|%4|%5',PC1,PC2,PC3,PC4,PC5);
IF FromFrachtkosten.FINDSET THEN
REPEAT
IF (FromFrachtkosten."Post Code" <>'') AND (PostCode<>'')
AND PossibleMatch(FromFrachtkosten."Post Code", "Post Code") THEN BEGIN
TempPLZ.SETFILTER(Code,'%1',FromFrachtkosten."Post Code");
IF TempPLZ.FIND('-') THEN BEGIN
ToFrachtkosten := FromFrachtkosten;
INSERT;
END;
END;
UNTIL FromFrachtkosten.NEXT = 0;
END;
}
Function PossibleMatch(FrachtKostenPostCode, PostCode{
PC1 := PostCode;
PC2 := COPYSTR(PostCode,1,4) +'*';
PC3 := COPYSTR(PostCode,1,3) +'*';
PC4 := COPYSTR(PostCode,1,2) +'*';
PC5 := COPYSTR(PostCode,1,1) +'*';
PC6 := '*';
IF (
(FrachtKostenPostCode= PC1) OR
(FrachtKostenPostCode= PC2) OR
(FrachtKostenPostCode= PC3) OR
(FrachtKostenPostCode= PC4) OR
(FrachtKostenPostCode= PC5) OR
(FrachtKostenPostCode= PC6)
) THEN
EXIT(TRUE)
ELSE
EXIT(FALSE);
}
14. Oktober 2014 15:38
elTorito hat geschrieben:Frachtkosten.SETFILTER("Post Code",'%1|%2|%3|%4|%5',18565, 1856*,185*,18*,1*);
14. Oktober 2014 16:03
elTorito hat geschrieben:
- Code:
Frachtkosten.SETFILTER("Post Code",'%1|%2|%3|%4|%5',18565, 1856*,185*,18*,1*);
14. Oktober 2014 16:24
Dir ist schon klar, dass das Ergebnis gleich Filter auf '1*' ist?
P.S.: Ich weiß nicht wo es geschrieben steht, aber ich würde generell nicht empfehlen Daten mit Filterzeichen wie bspw. * zu speichern. Oder stehe ich damit allein?
14. Oktober 2014 16:26
elTorito hat geschrieben:Ich hab die PLZ 18565 und brauche alle Datensätze mit Frachtkosten auf denen ich die 18565 anwenden kann.
Demnach auch ein Frachtkosten Datensatz der die PLZ 1* beinhaltet , weil wenn ein Frachtkostenpreis für PLZ region 1*
hinterlegt ist, könnte dieser besser sein, als ein preis der für 18* oder 18565 hinterlegt ist.
winfy hat geschrieben:Wenn du ein PLZ Range haben möchtest und nicht jeden Datensatz einfügen möchtest könntest du evtl. mit "Start PLZ" und "End PLZ" arbeiten, so wie das bei den Verkaufspreisen mit Startdatum und Enddatum ist.
14. Oktober 2014 16:42
winfy hat geschrieben:Du willst aber sicher keine Frachtkosten die nur auf "19999" geschlüsselt sind, oder?
Die würdest du aber durch den Filter 1* mit betrachten.
mfg,
winfy
Frachtkosten.SETFILTER("Post Code",'%1|%2|%3|%4|%5',18565, 1856*,185*,18*,1*);
TempPLZ.SETFILTER(Code,'%1',FromFrachtkosten."Post Code");
IF TempPLZ.FIND('-') THEN BEGIN
END;
15. Oktober 2014 10:13
Frachtkosten.SETFILTER("Post Code",'%1|%2',PC5,'ALLE');
IF FromFrachtkosten."Post Code" = 'ALLE' then TempPLZ.SETFILTER(Code,'%1','ALLE')
else TempPLZ.SETFILTER(Code,'%1',FromFrachtkosten."Post Code");
15. Oktober 2014 10:25
P.S.: Ich weiß nicht wo es geschrieben steht, aber ich würde generell nicht empfehlen Daten mit Filterzeichen wie bspw. * zu speichern. Oder stehe ich damit allein?
SETFILTER("Post Code",'%1|%2|%3|%4|%5|%6,TempPlz1,TempPlz2,TempPlz3,TempPlz4,TempPlz5,TempPlz6);
oder du trägst statt * einfach "ALLE" ein und filterst dann vor:
15. Oktober 2014 10:37
15. Oktober 2014 10:48
wenn du zB für den PLZ-Bereich 1 generell 20 Stück für 20 Euro verschicken kannst, brauchst du die Information nicht, dass es für PLZ 12345 auch noch 20 Stück für 30 Euro gibt.
15. Oktober 2014 11:06
fiddi hat geschrieben:wenn du zB für den PLZ-Bereich 1 generell 20 Stück für 20 Euro verschicken kannst, brauchst du die Information nicht, dass es für PLZ 12345 auch noch 20 Stück für 30 Euro gibt.
Ich denke schon: Wenn du nach PLZ 27* für 20 € versenden kannst, aber nach 27498 aber nur für 50€
Gruß, Fiddi
15. Oktober 2014 11:15
elTorito hat geschrieben:Die Inseln lassen grüßen
15. Oktober 2014 11:20
15. Oktober 2014 11:56
Kowa hat geschrieben:Die Insel-PLZ würde ich gleich kennzeichnen und aussortieren, statt der normalen PLZ eine interne PLZ dazu, die bei diesen ein I-Präfix bekommt. Dann je nach Eingabe entweder Suche A oder Suche B, also so als ob die deutschen Inseln im Ausland wären.
https://www.opc-courier.com/files/pdf/PLZ_Inseln.pdf
Dann je nach Eingabe entweder Suche A oder Suche B, also so als ob die deutschen Inseln im Ausland wären.
15. Oktober 2014 13:55
elTorito hat geschrieben:ich würde auch ganz gerne noch den Versand in Europa und Inseln abbilden.
15. Oktober 2014 14:59
Kowa hat geschrieben:Das ist wegen der vielen Ausnahmen, die es gibt, extrem kompliziert.