Subject |
Re: snake report addition |
From |
Charlie <trainman@traincity.com> |
Date |
Thu, 01 Dec 2016 18:24:09 -0500 |
Newsgroups |
dbase.getting-started |
Hi Mervyn.. Hey thanks... One too many martini's to work on this right now. But will get to it by the weekend. Wow you said there was a preview?? That'll be cool! Thanks..
Mervyn Bick Wrote:
> On 2016-12-01 2:19 AM, Charlie wrote:
> > Hi Mervyn.. Yes dbname is a combination of the day of the week and date which identifies the filter for each tournament. (We have 3 a week). Grp is of course the group.
> >
> > The date and day actually come from another table (dbname) but that shouldn't affect this.
> > lname fname are in the detail band in that order.
> >
> > Just filter on dbname and that would give you each individual tourney. I have no index for this report.
> >
> > The other fields are not really used in this report but another one with the results from each tournament.
>
>
> This was quite an interesting exercise and I've learnt a bit more of how
> the report engine works "behind the scenes".
>
> Attached is a report that uses your golfers_scores table. Because you
> have many matches in the table you need to be able to tell the report
> which one you want printed. You could, of course, edit the report file
> every time and change the match name but it is far better to have a
> little form to allow you to select the match and then pass the match to
> the report.
>
> The form and the report are named mbgolfers_scores so as not to
> overwrite anything if you have used golfers_scores as names. You can
> change the names of the form and the report if you want to. It is
> normally a good idea to change the classname if you change the file name
> but it won't cause problems here so don't bother about it.
>
> You didn't say if you wanted the names shown as "John Doe" or "Doe,
> John" so I've given you both. Open the report in the designer, select
> the version you don't want and press the delete key.
>
> I've used preview.wfm from the dUFLP as this gives you the ability to
> print the report once you have viewed it. If you don't want this
> comment out the line form.preview.open() and uncomment the line
> form.rep.render().
>
> Mervyn.
>
>
>
>
> ** END HEADER -- do not remove this line
> //
> // Generated on 2016-12-01
> //
> parameter bModal
> local f
> f = new mbgolfers_scoresForm()
> if (bModal)
> f.mdi = false // ensure not MDI
> f.readModal()
> else
> f.open()
> endif
>
> class mbgolfers_scoresForm of FORM
> with (this)
> onOpen = class::FORM_ONOPEN
> height = 16.0
> left = 58.7143
> top = 14.6818
> width = 40.0
> text = "Print matches"
> endwith
>
> this.GOLFERS_SCORES1 = new QUERY(this)
> with (this.GOLFERS_SCORES1)
> left = 4.0
> sql = 'select distinct dbname,day_w,t_date from "golfers_scores.DBF"'
> active = true
> endwith
>
> this.COMBOBOX1 = new COMBOBOX(this)
> with (this.COMBOBOX1)
> onOpen = class::COMBOBOX1_ONOPEN
> height = 1.0
> left = 8.0
> top = 4.5
> width = 25.0
> dataSource = form.golfers_scores1.rowset.fields["dbname"]
> style = 1 // DropDown
> endwith
>
> this.PUSHBUTTON1 = new PUSHBUTTON(this)
> with (this.PUSHBUTTON1)
> onClick = class::PUSHBUTTON1_ONCLICK
> height = 1.0909
> left = 11.0
> top = 11.5
> width = 15.2857
> text = "Print report"
> endwith
>
> this.rowset = this.golfers_scores1.rowset
>
> function COMBOBOX1_onOpen()
> this.value = 'Select match'
> return
>
> function PUSHBUTTON1_onClick()
> form.rowset.applyLocate( "dbname = '" + form.combobox1.value + "'" )
> form.rep.pagetemplate1.text1.text = form.rowset.fields['day_w'].value
> form.rep.pagetemplate1.text2.text = form.rowset.fields['t_date'].value
> form.rep.temp_golfers_scores1.params['dbname'] = form.combobox1.value
> form.rep.temp_golfers_scores1.requery()
> // form.rep.render()
> form.preview.open()
> return
>
> function form_onOpen()
> set procedure to mbgolfers_scores.rep
> form.rep = new mbgolfers_scoresReport()
> set procedure to :duflp:preview.wfm additive
> form.preview = new PreviewForm()
> form.preview.bClose = false
> form.preview.viewer.ref := form.rep
> return
>
> endclass
>
>
>
>
> if file("temp_golfers_scores.dbf")
> drop table temp_golfers_scores
> endif
>
> copy table golfers_scores to temp_golfers_scores
> alter table temp_golfers_scores add late_entry boolean
> update temp_golfers_scores set late_entry = false
> insert into temp_golfers_scores (grp,late_entry) values (99,true)
>
> ** END HEADER -- do not remove this line
> //
> // Generated on 2016-12-01
> //
> local r
> r = new MBGOLFERS_SCORESREPORT()
> r.render()
>
> class MBGOLFERS_SCORESREPORT of REPORT
> with (this)
> metric = 0 // Chars
> autoSort = false
> endwith
>
> this.TEMP_GOLFERS_SCORES1 = new QUERY(this)
> with (this.TEMP_GOLFERS_SCORES1)
> left = 22.0
> sql = 'select t.*,fname||" "||lname as name1,lname||", "||fname as name2 from "temp_golfers_scores.DBF" t where (dbname = :dbname or late_entry = true ) order by grp,lname '
> requestLive = false
> params["dbname"] = "SATURDAY20161203"
> active = true
> endwith
>
> this.STREAMSOURCE1 = new STREAMSOURCE(this)
> this.STREAMSOURCE1.GROUP1 = new GROUP(this.STREAMSOURCE1)
> with (this.STREAMSOURCE1.GROUP1)
> groupBy = "late_entry"
> endwith
>
> with (this.STREAMSOURCE1.GROUP1.headerBand)
> preRender = class::HEADERBAND_PRERENDER
> onRender = class::HEADERBAND_ONRENDER
> expandable = false
> height = 1.0
> endwith
>
> this.STREAMSOURCE1.GROUP2 = new GROUP(this.STREAMSOURCE1)
> with (this.STREAMSOURCE1.GROUP2)
> groupBy = "grp"
> headerEveryFrame = true
> endwith
>
> with (this.STREAMSOURCE1.GROUP2.footerBand)
> onRender = class::FOOTERBAND_ONRENDER
> height = 1.0
> endwith
>
> this.STREAMSOURCE1.GROUP2.footerBand.TEXT1 = new TEXT(this.STREAMSOURCE1.GROUP2.footerBand)
> with (this.STREAMSOURCE1.GROUP2.footerBand.TEXT1)
> canRender = {||false}
> height = 1.0
> left = 6.5
> top = 0.0
> width = 12.0
> prefixEnable = false
> text = "Text1"
> endwith
>
> with (this.STREAMSOURCE1.GROUP2.headerBand)
> preRender = class::HEADERBAND_PRERENDER1
> height = 6.0
> endwith
>
> this.STREAMSOURCE1.GROUP2.headerBand.TEXT1 = new TEXT(this.STREAMSOURCE1.GROUP2.headerBand)
> with (this.STREAMSOURCE1.GROUP2.headerBand.TEXT1)
> canRender = class::TEXT1_CANRENDER
> height = 1.0
> left = 2.5
> top = 4.25
> width = 12.0
> prefixEnable = false
> alignHorizontal = 2 // Right
> text = "Match No"
> endwith
>
> this.STREAMSOURCE1.GROUP2.headerBand.TEXTGRP1 = new TEXT(this.STREAMSOURCE1.GROUP2.headerBand)
> with (this.STREAMSOURCE1.GROUP2.headerBand.TEXTGRP1)
> canRender = class::TEXTGRP1_CANRENDER
> height = 1.0
> left = 16.1667
> top = 4.25
> width = 4.0
> variableHeight = true
> prefixEnable = false
> alignHorizontal = 2 // Right
> picture = "999"
> text = {||this.form.temp_golfers_scores1.rowset.fields["grp"].value}
> endwith
>
> this.STREAMSOURCE1.GROUP2.headerBand.TEXT2 = new TEXT(this.STREAMSOURCE1.GROUP2.headerBand)
> with (this.STREAMSOURCE1.GROUP2.headerBand.TEXT2)
> height = 1.0
> left = 2.5
> top = 1.6
> width = 25.3333
> prefixEnable = false
> fontSize = 11.0
> fontBold = true
> text = "Additional matches"
> endwith
>
> with (this.STREAMSOURCE1.detailBand)
> onRender = class::DETAILBAND_ONRENDER
> height = 0.8333
> endwith
>
> this.STREAMSOURCE1.detailBand.TEXTNAME11 = new TEXT(this.STREAMSOURCE1.detailBand)
> with (this.STREAMSOURCE1.detailBand.TEXTNAME11)
> height = 0.9767
> left = 0.0
> top = 0.0267
> width = 21.1667
> variableHeight = true
> prefixEnable = false
> text = {||this.form.temp_golfers_scores1.rowset.fields["name1"].value}
> endwith
>
> this.STREAMSOURCE1.detailBand.TEXTNAME21 = new TEXT(this.STREAMSOURCE1.detailBand)
> with (this.STREAMSOURCE1.detailBand.TEXTNAME21)
> height = 0.9767
> left = 25.3333
> top = 0.0267
> width = 20.8334
> variableHeight = true
> prefixEnable = false
> text = {||this.form.temp_golfers_scores1.rowset.fields["name2"].value}
> endwith
>
> with (this.printer)
> duplex = 1 // None
> orientation = 1 // Portrait
> paperSource = 7
> paperSize = 9
> resolution = 3 // Medium
> color = 2 // Color
> trueTypeFonts = 1 // Bitmap
> endwith
>
> this.PAGETEMPLATE1 = new PAGETEMPLATE(this)
> with (this.PAGETEMPLATE1)
> height = 56.1233
> width = 132.2778
> marginTop = 3.6
> marginLeft = 12.0
> marginBottom = 3.6
> marginRight = 12.0
> gridLineWidth = 0
> endwith
>
> this.PAGETEMPLATE1.STREAMFRAME1 = new STREAMFRAME(this.PAGETEMPLATE1)
> with (this.PAGETEMPLATE1.STREAMFRAME1)
> height = 43.0
> left = 3.8334
> top = 4.0
> width = 50.0
> form.STREAMFRAME1 = form.pagetemplate1.streamframe1
> endwith
>
> this.PAGETEMPLATE1.STREAMFRAME2 = new STREAMFRAME(this.PAGETEMPLATE1)
> with (this.PAGETEMPLATE1.STREAMFRAME2)
> height = 43.0
> left = 56.3333
> top = 4.0
> width = 50.0
> form.STREAMFRAME2 = form.pagetemplate1.streamframe2
> endwith
>
> this.PAGETEMPLATE1.TEXT1 = new TEXT(this.PAGETEMPLATE1)
> with (this.PAGETEMPLATE1.TEXT1)
> height = 1.0
> left = 6.3334
> top = 1.8
> width = 14.0
> prefixEnable = false
> text = "Day"
> form.TEXT1 = form.pagetemplate1.text1
> endwith
>
> this.PAGETEMPLATE1.TEXT2 = new TEXT(this.PAGETEMPLATE1)
> with (this.PAGETEMPLATE1.TEXT2)
> height = 1.0
> left = 21.5001
> top = 1.75
> width = 12.0
> prefixEnable = false
> text = "Date"
> form.TEXT2 = form.pagetemplate1.text2
> endwith
>
> with (this.reportGroup.footerBand)
> height = 0.8333
> endwith
>
> this.firstPageTemplate = this.form.pagetemplate1
> this.form.pagetemplate1.nextPageTemplate = this.form.pagetemplate1
> this.form.pagetemplate1.streamframe1.streamSource = this.form.streamsource1
> this.form.pagetemplate1.streamframe2.streamSource = this.form.streamsource1
> this.form.streamsource1.rowset = this.form.temp_golfers_scores1.rowset
>
> function DETAILBAND_onRender()
> this.parent.group2.footerband.text1.text := this.renderOffset
> return
>
> function FOOTERBAND_onRender()
> //group2 footerband.
> //check if there is enough space for another match. If not go to a new fame
> if this.parent.parent.parent.streamframe1.height - this.parent.footerband.text1.text < 8
> this.parent.headerband.beginNewframe := true
> else
> this.parent.headerband.beginNewframe := false
> endif
> return
>
>
> function HEADERBAND_onRender()
> //group1 headerband
> //Check if there is enough space for additional matches. If not force group2 headerband to a new frame
> //Adjust the value if necessary
> if this.parent.parent.parent.streamframe1.height - this.parent.parent.group2.footerband.text1.text < 12
> this.parent.parent.group2.headerband.beginNewframe := true
> else
> this.parent.parent.group2.headerband.beginNewframe := false
> endif
> return
>
> function HEADERBAND_preRender()
> //group1 headerband
> //Set height to 0 here so that the headerband shows in the designer
> this.height := 0
> return
>
> function HEADERBAND_preRender1()
> //group2 headerband
> if this.parent.parent.parent.temp_golfers_scores1.rowset.fields["late_entry"].value = true
> //Resize the group2 headerband and show "Late entries" text and hide the match no
> this.beginNewframe := true
> this.text2.height := 1
> this.text2.top := 1
> this.text1.top := 0
> this.textgrp1.top := 0
> this.height := 3
> else
> //Resize the group2 headerband and hide the "Late entries" text.
> this.text2.height := 0
> this.text2.top := 0
> this.text1.top := 2
> this.textgrp1.top := 2
> this.height := 3
> endif
> return
>
>
> function TEXT1_canRender()
> //Don't print for dummy match 99
> local lRet
> lRet = true
> if this.parent.textgrp1.text() =' 99'
> lRet = false
> endif
> return lRet
>
> function TEXTGRP1_canRender()
> //Don't print for dummy match 99
> local lRet
> lRet = true
> if this.text() = 99
> lRet = false
> endif
> return lRet
>
>
>
> endclass
>
>
|
|