Bob Hall
rjhjr at cox.net
Fri Aug 15 11:09:56 CDT 2003
On Fri, Aug 15, 2003 at 12:27:26AM -0700, Sad Der wrote:
> Hi group,
>
> I'm getting desperate. I need to finish a project at
> 16:00 cet because my plane flies at 18:00 AAAHHRG.
> I've created a function that creates a report. Of
> course now the users needs more reports. It can vary
> from 2-17(!)
> I keep getting the error:
> 2147
> You must be in design view to create or delete
> controls.
>
> The error is correct because the line:
> Set rpt = CreateReport
> Creates a new report called "Report1" As you can see I
> tried giving the new report a name (using an extra
> param) but I could not get it to work.
>
> I also added the line:
> ' DoCmd.OpenReport strReportName, acViewDesign
I don't know if I'm posting this soon enough to do you any
good, but I've done this by making a copy of the report, and
apply the new name to the copy. In order to make a copy with a
new name, you need the name of the original. Here's one way of
getting the name. Someone else may have a simpler technique,
but this has worked reliably in an app I created about 18
months ago.
Name the original report by closing it, and opening the report listed
in the MSysObjects table that was created in the last 4 seconds. Here's
a code sample. Sorry about the language, but the important parts are in
English. Use
Save:=acSaveYes
instead of
Save:=acSavePrompt
if you don't want the user to name the report.
If BarnTilForelderRptOppretta Then
'Om koden lyktes med å opprette rapporten, så lukk den. Koden ber om et nytt navn,
'og bruker navnet som brukeren skaffer. Deretter vet Hamsteren ikke navnet.
DoCmd.Close ObjectType:=acReport, ObjectName:=RptNavn, Save:=acSavePrompt
'Finn navnet til den nye rapporten. Den skal være rapporten som skaptes innen de
'siste fire sekundene.
Set db = CurrentDb
strSQL = "SELECT [Name] FROM MSysObjects" _
& " WHERE DateDiff('s', [DateCreate], Now()) < 4" _
& " AND Left$([Name], 4) <> '~sq_'" _
& " ORDER BY [DateCreate] Desc;"
Set rs = db.OpenRecordset(name:=strSQL, Type:=dbOpenForwardOnly)
With rs
If Not (.BOF And .EOF) Then
'Nå vet Hamsteren navnet.
RptNavn = ![name]
DoCmd.OpenReport ReportName:=RptNavn, View:=acViewDesign
Bob Hall