11/14/2024 15:40 Greg Berthume wrote:
|
Our app runs on a shared tsPlus Windows Server.
We don't allow our users access to the disk else they could delete files in
other folders, a security risk.
For this, I use the file selection template in Gus Creces (RIP) Handy Tools
which has an option to disable the changing of the path.
I need to do the same for the report builder.
Since I have specified the FRB report folder, the Save and Save as should only
allow access to the report folder.
Likewise, Open should just show a list of files in the report folder and allow
the selection and opening of the file.
What are my options for solving this problem?
Thanks!
|
11/14/2024 20:01 Oleg Fomin wrote:
|
Hi Greg
A while ago you have bought "ODBC Report Storage" license for Fomin Report
Builder. This is exactly what you are looking for. It can store report layouts
in any SQL database without ability to access server file system at all.
Try to search the forum with "ODBC Report Storage". You will find a lot of
useful information.
|
11/14/2024 23:48 Greg Berthume wrote:
|
Yes, I did purchase the ability to put report definitions in the SQL DB. Our
system is in MS SQL. I will begin checking it out.
I do like the ability to distribute .rpt files in the installer and the ease
that
I can share .rpt files amongst the users.
Hopefully that is possible with the SQL option?
|
11/15/2024 15:45 Oleg Fomin wrote:
|
Please note, FRB demo/example application has an ability to setup ODBC Report
Storage connection, copy existing *.rpt files to SQL and use them.
|
11/18/2024 22:05 Greg Berthume wrote:
|
I don't see anything in the example app that copies .rpt report definitions to
SQL
tables in a SQL DB.
"copy existing *.rpt files to SQL"
How exactly?
|
11/18/2024 22:48 Oleg Fomin wrote:
|
In ReportManager procedure you can see following code.
[DATA]
ExportReport &cRunTimeReport
[CODE]
SETCURSOR(CURSOR:Wait)
GLO:UseODBC = FALSE
RM1.RefreshTree
LOOP LoopCounter = 1 TO RECORDS(RM1.ReportTreeQueue)
GET(RM1.ReportTreeQueue,LoopCounter)
IF RM1.ReportTreeQueue.Level > 1
ExportReport &= NEW(cRunTimeReport)
ExportReport.SearchPath = RM1.FindPath
ExportReport.FileName = CLIP(ExportReport.SearchPath) &'\'&
RM1.ReportTreeQueue.FileName
ExportReport.LoadReport()
SqlStorageClass.SaveReport(ExportReport)
DISPOSE(ExportReport)
END
END
GLO:UseODBC = TRUE
RM1.RefreshTree
SETCURSOR()
|
11/18/2024 23:04 Greg Berthume wrote:
|
Aha! I was looking in the wrong place.
Thanks!
|
11/18/2024 23:15 Greg Berthume wrote:
|
There it is! Thanks Oleg.
In ReportManager procedure you can see following code.
[DATA]
ExportReport &cRunTimeReport
[CODE]
SETCURSOR(CURSOR:Wait)
GLO:UseODBC = FALSE
RM1.RefreshTree
LOOP LoopCounter = 1 TO RECORDS(RM1.ReportTreeQueue)
GET(RM1.ReportTreeQueue,LoopCounter)
IF RM1.ReportTreeQueue.Level > 1
ExportReport &= NEW(cRunTimeReport)
ExportReport.SearchPath = RM1.FindPath
ExportReport.FileName = CLIP(ExportReport.SearchPath) &'\'&
RM1.ReportTreeQueue.FileName
ExportReport.LoadReport()
SqlStorageClass.SaveReport(ExportReport)
DISPOSE(ExportReport)
END
END
GLO:UseODBC = TRUE
RM1.RefreshTree
SETCURSOR()
---------------------------------------------------------
Please, do not overquote. Your reply will be published at
http://www.fomintools.com/cgi-bin/forum.cgi/frb?thread=1554
|