Fórum Root.cz
Hlavní témata => Software => Téma založeno: ZAJDAN 22. 05. 2017, 10:20:04
-
Ahoj,
netušíte někdo, jak v Crystal Reports napsat formuly k označení stejných/duplicitních hodnot?
zkoušel jsem to pomocí funkce previous/next, ale nefunguje to jak bych potřeboval.
díky
-
Crystal jsem uz tak 3 roky nevidel, nicmene co zkusit strcit do "detail section" formuli pocitajici distinct count pro kazdou hodnotu?
Spocita to v ramci celeho "detailu" nebo pro kazdy radek zvlast (pak by tam byla vzdy 1)
-
distinctcount spocita pouze rozdily, ale ja chci najit shody, kde jsou a nejak je oznacit
-
napdalo me ty jednotlive hodnoty davat do promenych a ty pak mezi ssebou porovnavat v podminkach
problem je, ze se mi nedari dostat do promene zapis kde rikam ze jde o hodnotu z pole zaznam cislo 1
neco ve smyslu:
local stringvar rec1;
rec1 := {Command.parameter} and (RecordNumber = 1)
-
Zcela určitě to půjde udělat pomocí Group. Stačí narvat záznamy do group headeru, groupovat to podle ID (podle kterého hledáte duplicitu), a počítat v tom headeru count. Unikátní záznam bude mít 1, všechno ostatní budou duplicity. Group details sekce musí být prázdná.
-
groupovat podle ID....tady mi není jasné o co jde, já chci operovat s hodnotami pouze z jednoho pole
-
Skus si este raz predstavit co potrebujes a potom to vysvetlit., popr. dat priklad.
Ocividne bud myslis nieco ine ako pises, alebo nedokazes logicky rozmyslat a aplikovat poskytnute rady.
-
priklad:
v detailech mam 5 sloupcu ktere jsem si pres coomand vyzvedl z databaze:
(Command.Name ; Command.Quantity ; Command.Tax ; Command.Price ; Command.Parameter)
Command.Parameter je string, presneji varchar , v nem se objevuje nemaly pocet kombinaci, proto nelze pouzit formuly typu:
if {Command.Parameter} = "hledany text" ...tolik moznych podminek bych nedokazal zapsat
proto hledam zpusob, ktery by porovnal vsechny prvky z daneho pole/sloupce metodou kazdej z kazdym
protoze shoda je mozna na radku 1 a 6, neni mozne pozit formuly z funkci next/previous
Rekneme ze vim dopredu ze na reportu nebude nikdy vic jak 10 zaznamu/radku, proto by se mi zamlouvalo neco kde kazdy z deseti zaznamu dostat do promene...
just idea:
rec1 := {Command.parameter} and (RecordNumber = 1)
rec2 := {Command.parameter} and (RecordNumber = 2)
rec3 := {Command.parameter} and (RecordNumber = 3)
rec4 := {Command.parameter} and (RecordNumber = 4)
rec5 := {Command.parameter} and (RecordNumber = 5)
rec6 := {Command.parameter} and (RecordNumber = 6)
rec7 := {Command.parameter} and (RecordNumber = 7)
rec8 := {Command.parameter} and (RecordNumber = 8)
rec9 := {Command.parameter} and (RecordNumber = 9)
rec10 := {Command.parameter} and (RecordNumber = 10)
if rec1 = rec2 then "same as rec2"
if rec1 = rec3 then "same as rec3"
if rec1 = rec4 then "same as rec4"
if rec1 = rec5 then "same as rec5"
if rec1 = rec6 then "same as rec6"
if rec1 = rec7 then "same as rec7"
if rec1 = rec8 then "same as rec8"
if rec1 = rec9 then "same as rec9"
if rec1 = rec10 then "same as rec10"
if rec2 = rec1 then "same as rec1"
if rec2 = rec3 then "same as rec3"
if rec2 = rec4 then "same as rec4"
if rec2 = rec5 then "same as rec5"
if rec2 = rec6 then "same as rec6"
if rec2 = rec7 then "same as rec7"
if rec2 = rec8 then "same as rec8"
if rec2 = rec9 then "same as rec9"
if rec2 = rec10 then "same as rec10"
atd....
timto bych pak byl schopny rict na jakem radku jsou schody, ne jenom to ze jsou
-
Výborně. Tak teď už vůbec nevím, co vlastně chcete.
A) Chcete zjistit, které záznamy jsou dle Command.Parameter duplicitní?
B) Chcete vymýšlet nějakou obludnosts programováním porovnávání každý s každým ručně?
Pokud stále platí A, zkuste řešení, které jsem vám popsal.....
1) Vytvořte group dle Command.Parameter
2) Vložte pole Command.Parameter do group header sekce
3) Vložte pole Count(Command.Parameter) do group header sekce (nebo použijte highlight na základě této formuly)
4) Vložte zbylá pole, které chcet zobrazit tamtéž.
5) Do Details sekce nedávejte nic (surpass).
S Crystalem už nedělám, takže to nemohu ověřit, nicméně vytvořená Groupa vám bude záznamy groupovat dle Command.Parameter s součaně můžete dle Command.Parameter dělat různé statistické výpočty - např. spočítat pro jednu hodnotu Command.Parameter jednoduchý count (ale jde i summa a podobně - můžete tak spočítat třeba summy dle nějakého parametru). Bude-li count větší než 1, je zřejmé, že Command.Parameter se opakuje a záznam je tedy duplicitní.
Chápete? Víte co je groupa?
-
neni to uplne to co jsem hledal
ale potvrzuji ze reseni o kterem pisete funguje jak popisujete...prvni zaznam dostane 1 a pokud se nekde opakuje tak uz ma hodnotu 2
ja jsem chtel sice ohebnejsi reseni, kde bych dokazal rici, tento taznam se opakuje na radku 6 apod.
ale prozatim jsem uspokojen i s Vasi variantou...jediny problem kteremu zatim nedokazu prijit na pricinu je, ze v momente kdy data prohanim pres Groupheader, rozbije se podivne sequence zaznamu(vkladaji se prazdne zaznamy) jakoby to preskocilo radky
-
problem s poradi zaznamů vyresen
kdyby vas napadla myslenka jak predat informaci kde se duplicitni zaznamy vyskytují, to by dokonalo moji potrebu...
mam pripad kde se z 8 zaznamu 3 opakuji a porovnavat to rucne, ktery ke kteremu patri neni sranda...proto jsem psal to "obludne" reseni...
za stavajici reseni moc diky
-
Na řádku 6 seřazeno podle čeho? Crystal Report je nástroj Business Inteligence. Pokud chcete analyzovat záznamy v databázi, použil jste na to špatný nástroj. Řádek 6 v reportu vůbec nemusí odpovídat řádku 6 v DB a není to ani smyslem reportovacích nástrojů.
Ty prazdne zaznamy mohou být způsobeny tím, že zobrazujete nějakou sekci "group deails" nebo "group footer". Tzn. že Crystal vypíše všechny záznamy s daným Command.Parameter v headeru, zobrazí details, zobrazí footer, a pokračuje dalším Command.Parameter.
-
neni to uplne to co jsem hledal
ale potvrzuji ze reseni o kterem pisete funguje jak popisujete...prvni zaznam dostane 1 a pokud se nekde opakuje tak uz ma hodnotu 2
Kam jste ten Count strčil? Pokud ho máte v group headeru, může tam být pro jeden Command.Parameter pouze jedna hodnota Count.
-
(http://picpaste.com/pics/parametr-comparsion-N6q5KxZj.1495467705.png)
http://picpaste.com/pics/parametr-comparsion-N6q5KxZj.1495467705.png
cervene hodnoty je to co porovnavam
modre je ten Count --- 1 je prvni zaznam 2 jeho duplicita
kdyz se na to podivate, uznejte ze namisto 2, kdybyb stalo 'duplicity of row 1' napriklad...ale to uz je kosmeticke...velice pomohlo i to co jste mi poradil....za to moc diky
-
Hodte sem odpovidajici screenshot z designeru, aby bylo jasne co je header, detail a footer.
-
kdyz se na to podivate, uznejte ze namisto 2, kdybyb stalo 'duplicity of row 1' napriklad...ale to uz je kosmeticke...velice pomohlo i to co jste mi poradil....za to moc diky
Ty si musis ale uvedoit, ze duplicita znamena aj to, ze viac zaznamov moze opakovat 3,4,5....
Dalej ako vies ktory zaznam je v primarny a ktory duplicitny?
V reportovacich nástrojoch ide spravit vela veci, len ty si to musis vediet zadefinovat.... :( a za ten cas co ta tu sledujem som zistil, ze to je tvoj hlavny problem... :(
-
Ty si musis ale uvedoit, ze duplicita znamena aj to, ze viac zaznamov moze opakovat 3,4,5....
Dalej ako vies ktory zaznam je v primarny a ktory duplicitny?
pokud nemas zajem konkretne poradit, prosim nevmesuj se.
-
Hodte sem odpovidajici screenshot z designeru, aby bylo jasne co je header, detail a footer.
neni problem, jen bych rád, než to sem dám, zjistil co mi potlačuje duplicitu od chvíle, kdy jsem vše z details přesunul do headeru...
ani na jednom z polí,formulí, bloků není nastaveno 'supress if duplicates' a přesto to potlačí sousední duplikáty, duplikát o 3 řádky níže už to nechá.
-
pokud nemas zajem konkretne poradit, prosim nevmesuj se.
Ja sa ti snazim poradit, len ty sa nesnazis rozmyslat.
Ake symbolicke overenie:
Jaké zvíře se nachází ve slovním spojení „zrnko zelí“?:
-
Ja sa ti snazim poradit, len ty sa nesnazis rozmyslat.
ono to spis pusobylo jako kdyz jebnes decko sesitem po hlave a vyctes mu jeho problemy...
ano ja jsem pomalejsi, ale trpelivej a rad se necham poucit od zkusenych, jen proste uprednostnuju formu jako s detmi...nevycitat jim nic, nevyzvedavat jejich slabiny, byt k nim ochotny...pokud to nechci delat, nevyjadruji se vubec
-
neni problem, jen bych rád, než to sem dám, zjistil co mi potlačuje duplicitu od chvíle, kdy jsem vše z details přesunul do headeru...
ani na jednom z polí,formulí, bloků není nastaveno 'supress if duplicates' a přesto to potlačí sousední duplikáty, duplikát o 3 řádky níže už to nechá.
Jestli koukám správně na ten obrázek, pak duplicitni je pozice 1+7 a 3+6, pričemž je sledována duplicita dle cerveneho pole (Command.Parameter). Zatím co některá ostatní pole se shodují.
Jestliže máte groupu dle Command.Parameter, pak hoďte do group headeru (nebo footeru, to je na vás) pouze toto pole, a všechny ostatní dejte do detailu. Mělo by to snad vyřešit to, že vám některé záznamy "chybí".