vba - SQL ORDER BY behaving strangely in MS Access 2010 report -
i have done research on in stack overflow , aware of offered solutions whereby advice msaccess reports override queries , sort order set in report properties, or vba onload, or similar. have noticed weird in ms access reports however, , on 1 report have created following query report displays in perfect order:
select format([dateofenquiry],"yyyy") [year], count(t_enquiry.dateofenquiry) numofenquiries, t_enquiry.yearlevel t_enquiry group format([dateofenquiry],"yyyy"), t_enquiry.yearlevel, iif([yearlevel] null,0,val([yearlevel])) order format([dateofenquiry],"yyyy"), iif([yearlevel] null,0,val([yearlevel])); here i'm particularly concerned ordering/sorting of [yearlevel] field. [yearlevel] text lookup field because not contains integers 1-12 has letters 'k' , 'p' in lookup field. when running above query returns correct order - 'k' 'p', 1-12. i've used query record source report , report lists items datasheet when running query itself. perfect!
now take @ following query use record source report:
select format([dateofenquiry],"yyyy") [year], count(t_enquiry.outcome) numofenrolments, t_enquiry.yearlevel t_enquiry (((t_enquiry.outcome)="enrolled")) group format([dateofenquiry],"yyyy"), t_enquiry.yearlevel, iif([yearlevel] null,0,val([yearlevel])) order format([dateofenquiry],"yyyy"), iif([yearlevel] null,0,val([yearlevel])); when query run, datasheet in perfect [yearlevel] order. report view not. report view puts [yearlevel] 10 first, 12, 2. difference (apart respective fields) between both sql queries statement in second query above. should make difference in report view? don't see how.
can please suggest work around? or point out might missing in report properties, vba code, sql queries...or maybe there might macro can sort [yearlevel] more in proper order? forward advice.
cheers.
new information
i have done more testing , determined in report design view have text box called txt_totalenrol in report footer contains following calculation:
=sum([numofenrolments]) this in addition other totals. seems textbox causes order of [yearlevel] out. deleted txt_totalenrol , ordering of [yearlevel] went desired order.
why operation effect order of [yearlevel] on report? suggestions appreciated.
as @parakmiakos said, check first there no other constraint in orderby property of report may overriding bound query.
if report shown in form, check form doesn't have own rowsource , orderby properties set explain behaviour.
i not use year field name since it's reserved word , may cause strange issues can hard debug.
you try wrap query query (i've made small changes):
select p.theyear, p.numofenquiries, p.yearlevel (select format([dateofenquiry], "yyyy") theyear, count(t_enquiry.dateofenquiry) numofenquiries, t_enquiry.yearlevel, val(nz(yearlevel)) yearlevelasnumber t_enquiry group format([dateofenquiry], "yyyy"), t_enquiry.yearlevel, iif([yearlevel] null, 0, val([yearlevel]))) p order p.theyear, yearlevelasnumber edit: had forgotten reports have un-intuitive way of settings sortting , grouping rules.
in design mode, need right-click on empty part of report select sorting , grouping:

then panel appear should let setup sorting rules:

Comments
Post a Comment