Avatar billede PBChristensen Juniormester
19. april 2017 - 13:39 Der er 10 kommentarer og
1 løsning

Afgræns/filtrer efter dele af tekst

Hej,

Er det muligt at filtrere/afgrænse sine søgninger i de almindelige afgrænsningsfelter i C5 Dynamics?

Eksempelvis søge på alle kunder med "auto" i deres navn?

- lidt a'la  *auto*  i excel...
Avatar billede ADDCON-C5 Forsker
19. april 2017 - 14:02 #1
Hej,

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.

MVH
ADDCON
Peter Agger
Avatar billede PBChristensen Juniormester
19. april 2017 - 14:08 #2
Hej Peter,

Tak for dit svar.

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...
Avatar billede ADDCON-C5 Forsker
19. april 2017 - 14:36 #3
Hej,

Jeg ville f.eks. lægge følgende på selve linjen i rapporten :

Streng = søgestreg

RETURN  (StrScan(CustTable.Name, Streng,1,255) <> 0 )

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.

God fornøjelse
Peter Agger
ADDCON
Avatar billede PBChristensen Juniormester
19. april 2017 - 15:30 #4
Hej Peter,

Er kommet en del længere, men dog ikke helt.

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
Avatar billede PBChristensen Juniormester
19. april 2017 - 15:56 #5
...men skriver jeg RETURN StrScan(CustTable.Interval,"9",1,255)<>0) så fungerer det helt perfekt!!

Kan søgestrengen hentes fra brugerens afgrænsningsfelt???
Avatar billede ADDCON-C5 Forsker
19. april 2017 - 15:59 #6
Hej igen,

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.

MVH
PA
Avatar billede ADDCON-C5 Forsker
19. april 2017 - 16:13 #7
Hej,

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:

#Prompt "Indtast måned :  ", GET(&SøgeStreng LENGT 3),
    INPUT AT 5,5
#PromptAbort

Placer koden i PROMPT-triggeren på rapporten.  Koden afvikles
efter afgrænsningen er foretaget.
     

MVH

PA
Avatar billede PBChristensen Juniormester
19. april 2017 - 16:31 #8
Hej Peter,

Det kunne jeg slet ikke få til at virke :)

Kan godt følge idéen, men problemer omkring erklæring af variabler og søgebokse...

Prøver lidt videre i morgen eller fredag. På forhånd tusind tak for hjælpen ind til videre.
Avatar billede PBChristensen Juniormester
19. april 2017 - 18:47 #9
Mit seneste forsøg var dette i PRE OUTPUT:

STR 25 &Søgestreng = Interval
RETURN StrScan(CustTable.Interval,&Søgestreng,1,255)<>0



...men det går heller ikke :)
Avatar billede ADDCON-C5 Forsker
20. april 2017 - 08:27 #10
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.

MVH
PA
Avatar billede PBChristensen Juniormester
20. april 2017 - 22:32 #11
Så lykkedes det!!

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
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester