Rave Report készítése Delphiben

Rave Report készítése Delphiben
2006-05-23T10:43:49+02:00
2006-05-26T13:38:42+02:00
2022-10-31T00:25:43+01:00
Sandor81
Sziasztok!

A következő lenne a problémám.

Van egy DBGrid-em, és sql lekérdezés alapján kerülnek bele az adatok. Ezeket az adatokat szeretném átrakni egy Rave Report-ra, és kinyomtatni. Kezdő vagyok Rave szintjén, szóval, hogy tudom azt megcsinálni, hogy a Dbgrid-ben szereplő adatokat megjelenítse a Reporton? Mit kell a Reportra tegyek, hogy az egész DBGrid-et megjelenítse?

Mert ha csak a reportot csinálom meg és teszek rá egy DataText-et, és megcsinálom az sql lekérdezést, akkor a DataText-nek ugye megadom a DataView-ből a DataText DataField tulajdonságánál, hogy melyik oszlopot jelenítse meg, és akkor az a baj, hogy csak abból az oszlopból az első értéket mutatja.

Mit tegyek a Rave-re, hogy majd az egész DBGrid-et mutassa, és hogy adom át oda ezeket az értékeket?
Mutasd a teljes hozzászólást!
Hi!

A report és a lekérdezésed összekapcsolása :

Form-ra

Rvdataset connection komponens.
Rvdatasetconnection1.dataset:=lekérdezésem;

Reporton :

dataview.connection name : Rvdatasetconnection1

így a lekérdezésed össze van kapcsolva.

Reporton :

Region komponens.
A region-ra teszel egy databand-ot.
a databandra ráteszed a datatext-eket.

Beállítod melyik dataviewedet használja,
és melyik mezőből vegye az adatokat.

A databand style Detailsre állítása után
fogja a lekérdezésben szereplő összes sort megmutatni.

Ha ezt nem teszed meg akkor csak egy sort mutat.

Ha így sem megy próbáld ki :

Rave designer/tools/ Repot Wizard/simple tables

ez léter hoz neked egy reportot itt mindent meg tudsz nézni.

bye


Mutasd a teljes hozzászólást!

  • Rég használtam már Rave-t és akkor is csak keveset, de ha nem csal az emlékezetem a DataBand-nél kell körül nézned.
    Mutasd a teljes hozzászólást!
  • Szia!

    Köszönöm, de nem tudom, sajnos, hogy mire gondolsz. Mint írtam kezdő vagyok Rave szintjén sajnos.

    Azt még eddig nem írtam, hogy a Rave-ben ugye meg kell adjam az adatbázis nevét, amelyiket szeretném használni, aztán azt meg hozzáfűzni a progiban egy rave project-el a delhpiben.

    Csakhogy én a program indulásakor még nem tudom, hogy melyik adatbázist akarja a felhasználó használni, azt futásidőben választja ki, és nekem abból kell majd riportolni. Akár 100 adatbázist is kipróbálhat mielőtt kilépne... Hogy kell ezeket összekapcsolni?
    Mutasd a teljes hozzászólást!
  • Csak azt tudom javasolni, hogy nézd meg a Rav Designer helpjét, (a Delphi főmenüben Tools->Rave Designer). Eléggé összetett kis szerkesztőprogi, ott lehet megszerkeszteni a különböző adatkapcsolatokat, stb-ket.
    Az TRVProject és a TRVSystem segítségével tudod használni az elkészített Rav kiterjesztésű fájlt.
    Mutasd a teljes hozzászólást!
  • Szia!

    A borland honlapján találtam egy oldalt, melynek segítségével hozzá tudtam kapcsolni az reportot a progihoz, csak még azt kell megoldjam, hogy ne egy adat kerüljön át a táblából a Reportba, hanem az összes, amit szeretnék.

    Rave Report készítése
    Mutasd a teljes hozzászólást!
  • Senki nem tud hozzászólni a témához?
    Mutasd a teljes hozzászólást!
  • Hi!

    A jelentés lapra fel teszel eg region komponenst.
    Ezután a regióra teszel egy databand-ot.
    Ide felpakolod a datatexteket.
    A dataview segítségével megadod milyen mezők tartoznak hozzá.
    A databand Style tulajdonságánál, ha jól emlékszem Details-ra kell állítani.
    Ekkor az összes gridben szereplő adatot megjeleníti.

    A formra tégy egy Rave datasetet ennek állístd be datasetként a lekérdezésed.
    Raveprojectet aminek megadod melyik rav kiterjesztésű
    filet hajtsa végre.
    Van még egy komponens amivel a jelentésedet tudod beállítni:
    pl : mekkora legyen a preview ablak,
    Tudjon-e nyomtatót választani, stb..
    A neve Rave SYStem

    Ha a rave systemet testre szabtad akkor a
    Raveproject engine tulajdonságához rendeled és kész a móka.

    jelentés nyomtatása :raveproject1.execute;
    Mutasd a teljes hozzászólást!
  • Szia!

    Jó reggelt! Felpakoltam mindent, ahogy írtad, de nem működik, vagyis nem ad vissza adatot.

    Lehet, hogy azért, mert én a reportra nem tettem semmilyen adatbázis kapcsolati komponenst, mert azt szeretném, hogy minden adatot az alkalmazásom lekérdezéséből kapjon.

    Ja! Lehet, hogy mert Te azt írtad, hogy a dataview-nek mondjam meg milyen mezőt használjon a datatext, én meg a datafield tulajdonságánál adtam meg paramétereket...

    ... ??? Hogy tudom megadni a DataViewnek, hogy melyik mezőket használja?
    Mutasd a teljes hozzászólást!
  • Segítség!!! Sehogy sem tudom ezeket az adatokat hozzákapcsolni a riporthoz?
    Mutasd a teljes hozzászólást!
  • Hi!

    A report és a lekérdezésed összekapcsolása :

    Form-ra

    Rvdataset connection komponens.
    Rvdatasetconnection1.dataset:=lekérdezésem;

    Reporton :

    dataview.connection name : Rvdatasetconnection1

    így a lekérdezésed össze van kapcsolva.

    Reporton :

    Region komponens.
    A region-ra teszel egy databand-ot.
    a databandra ráteszed a datatext-eket.

    Beállítod melyik dataviewedet használja,
    és melyik mezőből vegye az adatokat.

    A databand style Detailsre állítása után
    fogja a lekérdezésben szereplő összes sort megmutatni.

    Ha ezt nem teszed meg akkor csak egy sort mutat.

    Ha így sem megy próbáld ki :

    Rave designer/tools/ Repot Wizard/simple tables

    ez léter hoz neked egy reportot itt mindent meg tudsz nézni.

    bye


    Mutasd a teljes hozzászólást!
  • Szia!

    Mindent fölraktam, mindent megpróbáltam, de sajnos nem jártam sikerrel!

    Viszont!

    Megvan a MEGOLDÁS! Egy angol fickóval vettem fel a kapcsolatot, akinek az e-mail címét egy honlapon találtam, és ő segített megcsinálni!

    Az a lényege, hogy nem csinálok előre riportot, hanem mindent futásidőben hozok létre rajta, és így rendelem hozzá az adatokat.

    A megoldáshoz szükség van egy RvProject-re, egy RvSystem-re, egy RvDataSetConnection-ra a formon. Valamint mivel nekem olyan adatok kellettek, amik SQL lekérdezésből származnak, így ugye ADOConnection, ADOQuery. Az RvDataSetConnection DataSet értéke az ADOQuery lett, így a megjelenítendő adatok a query-ből származnak.

    Itt a kód hozzá! Használja mindenki egészséggel! A pontot pipikusz kapja lelkes kutatómunkája eredményeképpen!!! KÖSZÖNÖM!


    procedure TForm5.Button6Click(Sender: TObject); var MyBand, MyTitleBand: TRaveBand; MyDataBand: TRaveDataBand; MyDataCnx: TRaveDataConnection; MyDataText: TRaveDataText; MyDataView: TRaveDataView; MyLine: TRaveHLine; MyPage: TRavePage; MyRegion: TRaveRegion; MyText: TRaveText; nMarginBottom, nMarginLeft, nMarginRight, nMarginTop: Double; I1: integer; begin RvProject1.New; // Új report létrehozása" ====================== MyPage := RvProject1.ProjMan.FindRaveComponent('Report1.Page1', Nil) As TRavePage; MyPage.WasteFit := True; // Margóbeállítások nMarginBottom := MaxValue([RpDev.Waste.Bottom / RpDev.YDPI, 0.5]); nMarginLeft := MaxValue([RpDev.Waste.Left / RpDev.XDPI, 0.5]); nMarginRight := MaxValue([RpDev.Waste.Right / RpDev.XDPI, 0.5]); nMarginTop := MaxValue([RpDev.Waste.Top / RpDev.YDPI, 0.5]); for I1 := MyPage.ComponentCount - 1 downto 0 do begin MyPage.Components[I1].Free; end; MyDataCnx := CreateDataCon(RvDatasetConnection1); MyDataView := RvProject1.ProjMan.NewDataObject(TRaveDataView) As TRaveDataView; MyDataView.ConnectionName := MyDataCnx.Name; MyDataView.DataCon := MyDataCnx; CreateFields(MyDataView, Nil, Nil, true); // Oldalszámozás elhelyezése MyDataText := MyPage.CreateChild(TRaveDataText, 'dtPage') As TRaveDataText; MyDataText.DataField := '"Oldal " + Report.CurrentPage + " / " + Report.TotalPages + " oldalból "'; MyDataText.FontJustify := pjRight; MyDataText.Width := 2; // Width MUST be before LEFT assignment MyDataText.Left := MyPage.PageWidth - nMarginRight - MyDataText.Width; MyDataText.Top := nMarginTop; // Dátum elhelyezése MyDataText := MyPage.CreateChild(TRaveDataText, 'dtDate') As TRaveDataText; MyDataText.DataField := 'Report.DateLong'; MyDataText.FontJustify := pjRight; MyDataText.Width := 2; // Width MUST be before LEFT assignment MyDataText.Left := MyPage.PageWidth - nMarginRight - MyDataText.Width; MyDataText.Top := nMarginTop + 0.2; // Plussz szöveg elhelyezése MyText := Mypage.CreateChild(TRaveText, 'cegText') As TRaveText; MyText.Text := 'Paraméteres kimutatás: ' + edit40.Text; MyText.FontJustify := pjRight; MyText.Width := 2; MyText.Left := MyPage.PageWidth - nMarginRight - MyDataText.Width;; MyText.Top := nMarginTop + 0.4; MyText.Font.Size := 10; // 3 Régió beállítása és formázása ==================== MyRegion := TRaveRegion.Create(MyPage); MyRegion.Left := nMarginLeft; MyRegion.Name := 'Region1'; MyRegion.Parent := MyPage; MyRegion.Top := nMarginTop + 0.4; // Top MUST be before HEIGHT assignment MyRegion.Width := MyPage.PageWidth - (nMarginLeft + nMarginRight); MyRegion.Height := MyPage.PageHeight - (MyRegion.Top + nMarginBottom); // 4 DataBand létrehozása ====== MyDataBand := MyRegion.CreateChild(TRaveDataBAnd, 'DetailBand') As TRaveDataBand; MyDataBand.DataView := MyDataView; // Always set the band dataview property // 4a DataTextek elhelezése a létrehozott DataBandra MyDataText := MyDataBand.CreateChild(TRaveDataText, 'OBJEKTUM NEVE') As TRaveDataText; MyDataText.DataField := 'ADATBÁZIS OSZLOPÁNAK A NEVE'; MyDataText.DataView := MyDataView; MyDataText.FontJustify := pjLeft; MyDataText.Left := MyPage.PageLeft + 0.2; MyDataText.Top := 1; MyDataText.Width := 2; // 4b MyDataText := MyDataBand.CreateChild(TRaveDataText, 'OBJEKTUM NEVE') As TRaveDataText; MyDataText.DataField := 'ADATBÁZIS OSZLOPÁNAK A NEVE'; MyDataText.DataView := MyDataView; MyDataText.FontJustify := pjLeft; MyDataText.Left := MyPage.PageLeft + 1.7; MyDataText.Top := 1; MyDataText.Width := 2; // 4c MyDataText := MyDataBand.CreateChild(TRaveDataText, 'OBJEKTUM NEVE') As TRaveDataText; MyDataText.DataField := 'ADATBÁZIS OSZLOPÁNAK A NEVE'; MyDataText.DataView := MyDataView; MyDataText.FontJustify := pjLeft; MyDataText.Left := MyPage.PageLeft + 3.2; MyDataText.Top := 1; MyDataText.Width := 2; // 4d MyDataText := MyDataBand.CreateChild(TRaveDataText, 'OBJEKTUM NEVE') As TRaveDataText; MyDataText.DataField := 'ADATBÁZIS OSZLOPÁNAK A NEVE'; MyDataText.DataView := MyDataView; MyDataText.FontJustify := pjLeft; MyDataText.Left := MyPage.PageLeft + 4.2; MyDataText.Top := 1; MyDataText.Width := 2; // 4d MyDataText := MyDataBand.CreateChild(TRaveDataText, 'OBJEKTUM NEVE') As TRaveDataText; MyDataText.DataField := 'ADATBÁZIS OSZLOPÁNAK A NEVE'; MyDataText.DataView := MyDataView; MyDataText.FontJustify := pjLeft; MyDataText.Left := MyPage.PageLeft + 5.2; MyDataText.Top := 1; MyDataText.Width := 2; //ITT MINT LÁTHATÓ - A REPORT-ON CSAK NÉGY OSZLOP LESZ LÁTHATÓ!!! // 5 Fejléc kerálása controlled by "DetailBand" ============== MyBand := MyRegion.CreateChild(TRaveBand, 'HeaderBand') As TRaveBand; // BandStyle Print Location codes // BandStyle PrintLoc b plBodyFooter // BandStyle PrintLoc g plGroupFooter // BandStyle PrintLoc r plRowFooter // BandStyle Printloc D plDetail // BandStyle Printloc R plRowHeader // BandStyle Printloc G plGroupHeader // BandStyle Printloc B plBodyHeader MyBand.BandStyle.PrintLoc := MyBand.BandStyle.PrintLoc + [plBodyHeader]; // BandStyle Print Occurrence codes // BandStyle PrintOcc C poNewColumn // BandStyle PrintOcc P poNewPage // BandStyle PrintOcc 1 poFirst MyBand.BandStyle.PrintOcc := MyBand.BandStyle.PrintOcc + [poFirst, poNewPage]; MyBand.ControllerBand := MyDataBand; MyBand.Height := 0.2; MyBand.Left := MyRegion.Left; MyBand.MoveBehind; // Looks better when you "view it" MyBand.Top := MyRegion.Top; MyBand.Width := MyRegion.Width; // 5a - Place Text components in "HeaderBand" just created MyText := MyBand.CreateChild(TRaveText, 'BszT') As TRaveText; MyText.Left := MyBand.Left + 0.2; MyText.Top := 0.8; // Band.Top ??? MyText.Font.Size := 10; MyText.Font.Style := MyText.Font.Style + [fsBold]; MyText.FontJustify := pjLeft; MyText.Text := 'Bizonylat száma:'; MyText.Width := 2; // DataText.Name.dtName.width ??? // 5b MyText := MyBand.CreateChild(TRaveText, 'BdT') As TRaveText; MyText.Left := MyBand.Left + 1.2; // prior text + 0.1 ??? MyText.Top := 0.8; // Band.Top ??? MyText.Font.Size := 10; MyText.Font.Style := MyText.Font.Style + [fsBold]; MyText.FontJustify := pjCenter; MyText.Text := 'Bizonylat dátuma:'; MyText.Width := 2; // DataText.Name.dtName.width ??? // 5c MyText := MyBand.CreateChild(TRaveText, 'TT') As TRaveText; MyText.Left := MyBand.Left + 2.5; // prior text + 0.1 ??? MyText.Top := 0.8; MyText.Font.Size := 10; MyText.Font.Style := MyText.Font.Style + [fsBold]; MyText.FontJustify := pjCenter; MyText.Text := 'Tartozik:'; MyText.Width := 2; // DataText.Name.dtName.width ??? // 5d MyText := MyBand.CreateChild(TRaveText, 'KT') As TRaveText; MyText.Left := MyBand.Left + 3.5; // prior text + 0.1 ??? MyText.Top := 0.8; MyText.Font.Size := 10; MyText.Font.Style := MyText.Font.Style + [fsBold]; MyText.FontJustify := pjCenter; MyText.Text := 'Követel:'; MyText.Width := 2; // 5d MyText := MyBand.CreateChild(TRaveText, 'SzT') As TRaveText; MyText.Left := MyBand.Left + 4.4; // prior text + 0.1 ??? MyText.Top := 0.8; MyText.Font.Size := 10; MyText.Font.Style := MyText.Font.Style + [fsBold]; MyText.FontJustify := pjCenter; MyText.Text := 'Szöveg:'; MyText.Width := 2; // 5e - draw a horizontal line MyLine := MyBand.CreateChild(TRaveHLine, 'BottomLine') As TRaveHLine; MyLine.Left := 0; // MyBand.Left; MyLine.LineWidth := 2; //MyLine.LineWidthType := wtPoints; MyLine.Top := MyBand.Height + 0.4; MyLine.Width := MyRegion.Width; // 6 - Create Report Title Band controlled by "DetailBand" ======== MyTitleBand := MyRegion.CreateChild(TRaveBand, 'TitleBand') As TRaveBand; MyTitleBand.ControllerBand := MyDataBand; MyTitleBand.MoveBehind; // Looks better when you "view it" MyTitleBand.MoveBehind; MyTitleBand.BandStyle.PrintLoc := MyTitleBand.BandStyle.PrintLoc + [plBodyHeader]; MyTitleBand.Left := MyRegion.Left; MyTitleBand.Width := MyRegion.Width; MyTitleBand.Height := 0.35; // 6a - Create Text component for "Report Title" MyText := MyTitleBand.CreateChild(TRaveText, 'TitleText') As TRaveText; MyText.Left := MyTitleBand.Left; MyText.Top := 0.01; MyText.Font.Name := 'AdineKirnberg-Script'; MyText.Font.Size := 72; MyText.FontJustify := pjCenter; MyText.Text := 'Pandemonium Report'; MyText.Width := MyTitleBand.Width; // 7 - OK, run it ================================================= RvProject1.ExecuteReport('Report1'); // ONLY use this so you can view report design // RvProject1.ProjectFile := 'ProjectTest.rav'; // RvProject1.Save; RvProject1.Close; end;

    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd