Eneste mulighed er at anvende 'Fritekst Søgning' - den finder du på genvejen ALT + F5. Du skal ikke bruge '*' tegnet, men blot angive f.eks. 'auto' e.g. hvis du søger i debitor og gerne vil finde alle debitorer hvor strengen 'auto' indgår. Ovenstående gælder på hovedkartotekerne.
Hvis man skal anvende søgning på delstreng f.eks. 'auto' på søgning hvor data havner i en rapport, skal man lave lidt programmering på rapporten, så kan det også lade sig gøre der.
Det er nu i forbindelse med en rapport det skal bruges, på en sådan måde at når der i afgrænsningsfeltet skrives "auto", så kommer alle kunder ud med "auto" i navnet.
Jeg forsøger mig frem gennem rapportgeneratoren ind til videre, men uden held. Antager jeg skal ind i selve rapporten, og så bruge MATCH funktionen - men kan ikke få det til at gå op...
Her kontrolleres om Debitor navn indeholder den ønskede streng. Hvis strengen findes i f.eks. debitornavnet, returneres en værdi der er forskellig fra '0' og linjen udskrives, hvis strengen ikke findes, returneres 0, og linjen skrives ikke ud.
For at kontrollere hele recorden, som skal udskrives, kan du flytte dette filter til PRE-OUTPUT triggeren.
Jeg har oprettet et felt "Interval" i CustTable, hvori månederne er skrevet, eksempelvis "3 - 6 - 9 - 12". Søgestrengen/afgrænsningen er f.eks. "9". Desuden har jeg skrevet RETURN (StrScan(CustTable.Interval,Interval,1,255)<>0) i PRE-OUTPUT - men følgende sker: Når afgrænsningen "Interval" er blank, så kommer der kun de debitorer, hvor der er tilføjet en eller anden form for data. Når afgrænsningen er f.eks. "9", så kommer der ingenting.
Målet var at få alle med "9" skrevet ud, uanset om der stod: 3 - 6 - 9 - 12 7 - 8 - 9 - 10 - 11 9 5 - 9 7 - 9 - 11 - 1 - 3
Så vil syntaksen se således ud: Søgestreng = "9" StrScan(CustTable.Interval,Søgestreng,1,255) <> 0
Eventuelt prøve en IF then og print værdierne når du debugger, så du kan se de enkelte værdier.
IF StrScan(Custtable.Interval,Søgestreng,1,255) THEN // Når dette udtryk er sandt, findes værdien i Søgestrengen i Interval. PRINT Custtable.Interval PRINT SøgeStreng PAUSE ENDIF
Test dine data med ovenstående og se hvilke værdier dine variable indeholder. Pas på med Spaces.
Ja det kan det godt , feltet er jo oprettet på Custtable, hvorfor du kan indsætte det i din søgning , men her giver det ikke nogen mening eller for mange fejlmuligheder.
Lav i stedet en promptboks i rapporten, som henter værdien ind for den måned, der skal vises. Prompten kan se således ud:
OK udlæs lige rapporten og send mig den, så kan jeg bedre se hvad du slås med. Sned den på agger@addcon.dk. Husk jeg skal brug begge filer, samt C5 version.
I XAL koden er følgende tastet. Der er et par flere argumenter inkluderet, men det er vel til at se strukturen:
STR 5 &SalesRep STR 25 &Month INT &Distr #Prompt, "Indtast sælger:", GET (&SalesRep REF CustTable.SalesRep), "Indtast måned:", GET (&Month), "Indtast distrikt:", GET (&Distr REF CustTable.Distrikt), INPUT AT 5,5 SEARCH CustTable WHERE SalesRep== &SalesRep AND StrScan(CustTable.Interval,&Month,1,255)<>0 OR Interval == "Alle" AND Distrikt == &Distr OUTPUT CustTable END
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.