RaveReports master-Detail

0

Czy komuś działa poprawnie raport master-detail w Rave Reports?
Opiszę problem, dla jednego konkretnego wystąpienia...

Są dwie tabele, jedna zawiera dwa rekordy z polem które jest kluczem dla drugiej tabeli - w pierwszej mamy klucz=1 i klucz=2, w drugiej mamy cztery rekordy, trzy z kluczem=1 i jeden z kluczem=2.. ogólnie mówiąc druga tabela zawiera pozycje do rekordów z tabeli pierwszej.. No i teraz RR - DataBand1 jako master, DataBand2 ustawione jako detail, z ControllerBand ustawionym na DataBand1, wszystkie właściwości, tj. MasterDataView, MasterKey i DetailKey ustawione jak trzeba czyli na pierwszą tabelę (źródło) i pola klucza po których są powiązane... Wszystko idealnie (jak sądzę, bo jeśli nie widzę gdzie robię błąd to wam tego nie napisze) zrobione jak w przykładzie Rave... No i niestety raport daje chrzan - mam co prawda dwie pozycje z tabeli pierwszej w DataBand1, ale dla każdej z nich dostaje wszystkie pozycje z tabeli drugiej, nawet sobie dodałem do raportu pola z wartościami kluczy, żeby zobaczyć czy nie ma błędu w samych danych

miało być coś takiego:

  1. 2007-04-01
    1. opis pierwszy
    2. opis drugi
    3. opis trzeci
  2. 2007-04-01
    2. opis czwarty

A dostaje coś takiego:

  1. 2007-04-01
    1. opis pierwszy
    2. opis drugi
    3. opis trzeci
    4. opis czwarty
  2. 2007-04-01
    1. opis pierwszy
    2. opis drugi
    3. opis trzeci
    4. opis czwarty

Jakieś sensowne pomysły?

0

kiedyś opisywałem dokładnie jak zrobić MD w RR gdzieś tu na forum
BTW niewiele wiem z Twojego opisu - jak nie dasz sobie rady to wystaw gdzieś raport na świat, ale najpierw poszukaj

0

Borykam się z tym samym problemem. Czy już ktoś znalazł opis rozwiązania? Będę wdzięczna za pomoc.
Dodam, że nie potrzebuję kawałka kodu w Delphi – posługuję się wyłącznie RAVE do robienia raportów i korzystam z tego co on oferuje.

0

Podaj jakie dla poszczególnych DataBandów masz wartości tych Parametrów:

  • ControlerBand
  • DataView
  • DetailKey
  • MasterDataView
  • MasterKey

i jeszcze BandStyle

0

Wszystko mam zgodnie z tym co robi wizard ale oczywiście opiszę:

Master

  • ControlerBand - nic
  • DataView - tblDfeContractObject
  • DetailKey - nic
  • MasterDataView – nic
  • MasterKey – nic

BandStyle –
Print Location - Body Header,
Print Occurreance

  • First
  • New Page

Detail

  • ControlerBand - tblDfeContractObjectDataBand
  • DataView – tblDfeSprzedawcaPerson
  • DetailKey - DOSTAWCA_ID
  • MasterDataView – tblDfeContractObject
  • MasterKey – DOSTAWCA_ID

BandStyle –
Print Location - Detail,
Print Occurreance -

  • First

Dodatkowo jestem przekonana, że kiedyś znalazłam gdzieś już opis, co trzeba zrobić, żeby to zadziałało, ale było to około 2 lat temu. Nie wiem gdzie to było.

0

Na Masterze ustaw "DetailKey" taki sam jak masz w Detailu ustawiony pod par. "MasterKey"

0

Niestety to nic nie daje. Zresztą już wcześniej też już próbowałam takiego ustawienia. U Ciebie to działa?
Ja korzystam z wersji RAVE 6.0.4. Może to od wersji to zależy?

0

Ja mam 6.5.0, ale to nie powinno zależeć od wersji.
Z te4go co podałaś, to wynika że masz ustawione OK, chyba że coś przeoczyłem.
Prześlij mi tego rava na maila zobaczę czy u mnie chodzi i przy okazji może znajdę błąd.
[email protected]

0

Dla tych, którzy tu zaglądają dodam, że problem udało mi się w końcu rozgryźć.

Może to kogoś zainteresuje więc napiszę w czym rzecz.
Korzystam z "Database Connection" DBX. Nie piszę żadnego kodu w Delphi tylko wykorzystuję edytor Rave dla przygotowania raportu. Potem ten raport jest wywoływany w programie.

Tworzę 2 SQL-e jeden dla powiedzmy klientów drugi dla zamówień.

1.SQL

Select
Firma.ID,
Firma.Nazwa
from
Firma

2.SQL

Select
Zamowienie.ID,
Zamowienie.FirmaID
from
Zamowienie

Wpisuję to do Driver Data View i nazywam: tblFirma (1a. SQL-a) oraz tblZamowienie (2. SQL).
Oczywiście tworzę na tym raport wg opisu jak w artykule powyżej ale… to nie daje efektu jakiego się spodziewałam. Dostaję dla każdej firmy wszystkie zamówienia jakie tylko są w bazie. Żeby dostać wynik poprawny muszę dodatkowo w QueryParams dla SQL-a drugiego (czyli tblZamowienie ) wpisać odwołanie do tblFirma, która jest w tym przypadku nadrzędna.
Wpisuję:
KontrahentID = tblFirma.ID
Dodatkowo muszę lekko zmienić SQL dla zamówień tak, aby łykał zadeklarowany przeze mnie parametr.

Select
Zamowienie.ID,
Zamowienie.FirmaID
from
Zamowienie
Where
Zamowienie.FirmaID = :KontrahentID

To wszystko.

Problem konsultowałam z miłym Decho (jak widać wpisy powyżej), który tworzy raporty bezpośrednio w Delphi korzystając "Direct Data View" i komponentów RAVE-a pod Delphi

TRvDatasetConnection
TRvSystem
TRvProject

i jak twierdzi nie ma takich problemów.

1 użytkowników online, w tym zalogowanych: 0, gości: 1