Seite 1 von 1

Reporte für alle Benutzer

Verfasst: 7. Februar 2021, 00:40
von Werner_Bayern
Servus,

ich bekomme es nicht hin, dass Reporte für alle Benutzer verfügbar sind. Mit der EXE liefere ich ja die Reporte aus, das funktioniert. Nun soll der Kunde die Möglichkeit haben, die Reporte anzupassen. Dazu hab ich alles lt. Doku veranlasst: Reports & Queries wird mit installiert, alle Reporte dürfen vom Kunden geändert werden.
Das Programm liegt auf dem Netzlaufwerk, die geänderten Reporte sollen selbstverständlich auf einem Netzlaufwerk für alle Benutzer zur Verfügung stehen. Also steht im Initialiserungs-Code des Projektes:

Code: Alles auswählen

fReportsAndQueriesDir(dirShared, System.Reportpfad)
fReportsAndQueriesDir(dirUser, System.Reportpfad)
Das führt jedoch dazu, dass R&Q die Fehlermeldung schmeisst:

Failure checking out <report...> file.

Was mache ich falsch?

Re: Reporte für alle Benutzer

Verfasst: 7. Februar 2021, 12:48
von Herbert
Ich habe im Moment in einer Applikation das Problem, dass die Funktion nicht das macht, was sie sollte.
Das Verzeichnis wird schlicht nicht angepasst.
Schau, was dir die Funktion für ein Laufwerk zurückgibt.

Code: Alles auswählen

	spath=fReportsAndQueriesDir(dirShared)
	Info("spath_i="+spath)
Ich habe dort die Reports in das Verzeichnis gelegt, welches angezeigt wird und in diesem Fall offenbar nicht änderbar ist (das Verzeichnis, wo ich mit den Daten starte...). So funktioniert das Ganze.

Re: Reporte für alle Benutzer

Verfasst: 7. Februar 2021, 14:54
von Werner_Bayern
Servus Herbert,

deshalb sieht mein Code auch so aus:

Code: Alles auswählen

	fReportsAndQueriesDir(dirShared, System.Reportpfad)
	fReportsAndQueriesDir(dirUser, System.Reportpfad)
	IF fReportsAndQueriesDir(dirShared) <> System.Reportpfad THEN
		Error("Pfad für Reporte konnte nicht gesetzt werden!", fReportsAndQueriesDir(dirShared))
	END
Kommt keine Meldung.

Und es wird offensichtlich auch geändert, sonst käme ja auch nicht bei R&Q die Fehlermeldung wg. checking out.
Ich habe dort die Reports in das Verzeichnis gelegt, welches angezeigt wird und in diesem Fall offenbar nicht änderbar ist
Du arbeitest mit fExtractResource()? Oder nimmst alle Reporte aus der EXE raus und kopierst die manuell?

Re: Reporte für alle Benutzer

Verfasst: 7. Februar 2021, 15:13
von Herbert
Die Reports sind nicht Teil des Exe-Files und werden extra hineinkopiert. Hat den Vorteil, dass der Kunde frei ändern kann und ev. eine Aenderung durch uns ohne grossen Aufwand beim Kunden leicht ersetzt werden kann.

Re: Reporte für alle Benutzer

Verfasst: 7. Februar 2021, 15:17
von satmax
Ich mache das etwas anders. Alle Reports sind im Unterordner des Programmes unter ..\Desgin\.. zu finden, als *.rpt files.

Der Start des Reports erfolgt über mein eigenes Fenster:


sFormularPath is string = "Reinigungsauftrag\" // = Unterordner im Ordner ..\Desgin\
gstrPrint = Open(WIN_PrintDlg,sFormularPath,"RPT_Reinigungsauftrag2S.wde", nCopy, bNoPrompt) // Da passiert alles mit Druckerwahl und EInstellung.

IF NOT gstrPrint.bPrintAbort THEN
FOR i =1 TO nCopy
SWITCH i
CASE = 1
sTextKopie = ""
sMyPrinter = gstrPrint.sPrinter
// case = 2
// sTextKopie="Kunde"
// sMyPrinter = gstrPrint.sPrinterCopy
// case = 3
// sTextKopie="für .."
// sMyPrinter = gstrPrint.sPrinterCopy
// case = 4
// sTextKopie="für ..."
// sMyPrinter = gstrPrint.sPrinterCopy
// case = 5
// sTextKopie="für... 2"
// sMyPrinter = gstrPrint.sPrinterCopy
OTHER CASE
sTextKopie = "Kopie"
sMyPrinter = gstrPrint.sPrinterCopy
END
IF gstrPrint.bIsPreview
// Parameter für Vorschau
//iParameterPreview(iButtonAll,100)
iParameterViewer(iButtonAll)

// Vorschau vor Druck
iPreview()
ELSE // Export usw.... SONST drucken
// Drucker vorbereiten
// Immer 3x drucken: Original, Kunde, Staplerfahrer
iConfigure(sMyPrinter)

END
// Drucken
iParameter(iDuplex)
iPrintReport(gstrPrint.sReportName,nReingungsauftragId,sTextKopie) //

END


END

// Achtung ************************************************************************************
// In den Reporteigenschaften MUSS unter Option "Include the compiled Code" markiert sein!
// Achtung ************************************************************************************


Klappt eigentlich immer und überall.

Re: Reporte für alle Benutzer

Verfasst: 7. Februar 2021, 15:49
von Werner_Bayern
Das sollte aber das Standardverhalten unter Windev sein: Reporte werden in der EXE ausgeliefert, sobald der Kunde mit R&Q ändert, werden die im entsprechenden Ordner abgelegt. Beim Aufruf eines Reports wird ja erst unter shared, user und dann in der EXE nachgesehen.

Bin jetzt aber fündig geworden in der <programmname>.wx - Datei! Dort steht:

Code: Alles auswählen

[WDREPORT]
LOCAL_DIR=C:\Users\...\AppData\Roaming\...\exename\Reports and Queries
GLOBAL_DIR=\\....local\...\Programme\exeordner\Shared Reports and Queries
(persönliche Infos entfernt).
Local_dir ist falsch, global_dir korrekt. Werde da mal ändern...

Re: Reporte für alle Benutzer

Verfasst: 18. Februar 2021, 01:17
von Werner_Bayern
Seit wir die WX-Datei manuell auf allen Endgeräten anpassen, passt es. Die Automatik in Windev scheint da nicht lt. Doku zu funktionieren.

Re: Reporte für alle Benutzer

Verfasst: 28. März 2021, 22:01
von Werner_Bayern
Oder so:

Code: Alles auswählen

INIWrite("WDREPORT", "LOCAL_DIR", System.Reportpfad, fExeDir() + [fSep] + "<EXENAME>.wx")
INIWrite("WDREPORT", "GLOBAL_DIR", System.Reportpfad, fExeDir() + [fSep] + "<EXENAME>.wx")

Re: Reporte für alle Benutzer

Verfasst: 29. März 2021, 08:12
von Herbert
Werner, in deinem Fall wäre das besser, wenn du die Pfadangaben in eine Tabelle legen würdest. INi-Files sind super für individuelle Einstellungen, sollten aber für Globales nicht verwendet werden.

Re: Reporte für alle Benutzer

Verfasst: 29. März 2021, 12:49
von Werner_Bayern
Servus Herbert,

System ist die globale Tabelle und exename.wdx wird von Windev selbst angelegt. Mit diesen Pfaden arbeitet dann offensichtlich Report&Queries.