Disappearing sql in reports recordSource

  • Thread starter Thomas Troetscher via AccessMonster.com
  • Start date
T

Thomas Troetscher via AccessMonster.com

Outline: I have a listbox that displays the result of a database search. The
SQL is generated dynamically based on user input. I want to generater a
report with the exact same columns and rows, sorted in the same manner as the
listbox. The problem: My app works fine the first time i press the "generate
report button", but parts of the SQL in the reports RecordSource is missing
the second time i try.

The code for the "generate report button":
<pre>
Private Sub rapport_Click()
On Error GoTo Err_rapport_Click
Dim MySQL As Variant

' The select statement without the where clause
' Field names are in norwegian, but doesn't matter
ReportSQL = "SELECT objekt.id, hovedgruppe.beskrivelse, gruppe.
beskrivelse, fabrikat.beskrivelse, typebetegnelse.type, ressurs.etternavn,
kontorsted.sted, objekt.kjøpt, objekt.kassert FROM objekt, Gruppe,
Hovedgruppe, Fabrikat, typebetegnelse, Ressurs, kontorsted, kategori WHERE "

' Open the report in design view to be able to
' alter the recordsource
DoCmd.OpenReport "Utstyrsutvalg", acViewDesign, , , acHidden

' Retrieve the part of search result SQL after "WHERE"
MySQL = Split(result.RowSource, "WHERE")

' Update the Reports recordsource
Reports!Utstyrsutvalg.RecordSource = ReportSQL & MySQL(1)

' Retrieve the part of search result SQL after "ORDER BY"
MySQL = Split(result.RowSource, " ORDER BY ")

' Update the sortorder of my report
Reports!Utstyrsutvalg.OrderByOn = True
Reports!Utstyrsutvalg.OrderBy = MySQL(1)

' Export to RTF and open in word
DoCmd.OutputTo acReport, "Utstyrsutvalg", acFormatRTF, , True
Debug.print Reports!Utstyrsutvalg.RecordSource

' Closing the report without saving doesnt help
' DoCmd.Close acReport, "Utstyrsutvalg", acSaveNo

Exit_rapport_Click:
Exit Sub

Err_rapport_Click:
MsgBox Err.Description
Resume Exit_rapport_Click

End Sub
</pre>

Here's the deal:

When i look at the debug output everything looks fine, but on the second time
i try to generate the report, access tells me the field [beskrivelse] could
refer to several tables. If i open the report and look at the recordsource
there are parts missing:

Original as displayed in the immediate window:

SELECT objekt.id, hovedgruppe.beskrivelse, gruppe.beskrivelse, fabrikat.
beskrivelse, typebetegnelse.type, ressurs.etternavn, kontorsted.sted, objekt.
kjøpt, objekt.kassert

FROM objekt, Gruppe, Hovedgruppe, Fabrikat, typebetegnelse, Ressurs,
kontorsted, kategori

WHERE (((objekt.ressursId) = Ressurs.id) And ((objekt.kontorId) = kontorsted.
id) And ((objekt.gruppeId) = Gruppe.id) And ((Hovedgruppe.id) = Gruppe.
hovedgruppeId) And ((Fabrikat.id) = typebetegnelse.fabrikatId) And ((objekt.
typeId) = typebetegnelse.id)) And (objekt.kategoriId=kategori.id) And (
[hovedgruppe.beskrivelse] Like '*stasjonær*' or [gruppe.beskrivelse] Like
'*stasjonær*' or [kontorsted.sted] Like '*stasjonær*' or [ressurs.fornavn]
Like '*stasjonær*' or [ressurs.etternavn] Like '*stasjonær*' or [fabrikat.
beskrivelse] Like '*stasjonær*' or [typebetegnelse.type] Like '*stasjonær*'
or [typebetegnelse.beskrivelse] Like '*stasjonær*' or [objekt.kjøpt] Like
'*stasjonær*' or [objekt.kassert] Like '*stasjonær*' )

Recordsource from the properties window:

SELECT objekt.id, hovedgruppe.beskrivelse, gruppe.beskrivelse, fabrikat.
beskrivelse, typebetegnelse.type, ressurs.etternavn, kontorsted.sted, objekt.
kjøpt, objekt.kassert

FROM objekt, Gruppe, Hovedgruppe, Fabrikat, typebetegnelse, Ressurs,
kontorsted, kategori
WHERE (((objekt.ressursId)=Ressurs.id) And ((objekt.kontorId)=kontorsted.id)
And ((objekt.gruppeId)=Gruppe.id) And ((Hovedgruppe.id)=Gruppe.hovedgruppeId)
And ((Fabrikat.id)=typebetegnelse.fabrikatId) And ((objekt.typeId)
=typebetegnelse.id)) And (objekt.kategoriId=kategori.id) And ([beskrivelse]
Like '*stasjonær*' Or [beskrivelse] Like '*stasjonær*' Or [kontorsted.sted]
Like '*stasjonær*' Or [ressurs.fornavn] Like '*stasjonær*' Or [ressurs.
etternavn] Like '*stasjonær*' Or [beskrivelse] Like '*stasjonær*' Or
[typebetegnelse.type] Like '*stasjonær*' Or [typebetegnelse.beskrivelse] Like
'*stasjonær*' Or [objekt.kjøpt] Like '*stasjonær*' Or [objekt.kassert] Like
'*stasjonær*')
ORDER BY objekt.kjøpt DESC , hovedgruppe.beskrivelse, gruppe.beskrivelse,
typebetegnelse.type, fabrikat.beskrivelse, ressurs.etternavn, kontorsted.sted,
objekt.kassert;

As you may have noticed, the fieldname in front of columnnames "beskrivelse"
have disapeared. Ie hovedgruppe.beskrivelse => beskrivelse, fabrikat.
beskrivelse => beskrivelse and so on.

Any clues anyone? Don't get put of by the huge SQL statements...

thomas
 
Top