Newsgroup: it.comp.lang.visual-basic
Titolo: Miniguide reportman .net firebird

Ho fatto dei tentativi per usare reportman da vs2010 rc, con i componenti
nativi .net, e ho notato alcune differenze di cui tener conto nella
creazione dei report.
Se si utilizza la versione OCX di reportman si deve creare da codice e non
trascinarlo sulla form (o inizializzarlo prima del termine del LoadForm),
altrimenti i pulsanti dell'anteprima report non saranno visibili.
Se si utilizzano i componenti .NET di reportman:
- Il report deve essere salvato in formato XML, si fa da File /
Impostazioni Pagina / Opzioni (attenzioni con vecchie versioni tipo 2.4b
anche se salva correttamente in XML non è  poi in grado di riaprire il
report se ci sono caratteri strani ti po * e simili, aggiornare la versione
del report oppure fare solo dei Save As)
- In reportman è possibile usare Master Dataset, per cui se avete due
dataset
HEAD: SELECT * FROM HEADER
DETAIL: SELECT * FROM DETAIL WHERE DETAIL.IDHEADER=:IDHEADER (master
dataset= HEAD)
Adesso è necessario creare un parametro IDHEADER dello stesso tipo di dato
di HEADER.IDHEADER, ed assegnarlo al dataset DETAIL. Prima i parametri
"interni" erano non erano necessari.
Se si usa un .NET data provider si deve sostituire il :IDHEADER con il
carattere usato dal data provider es. @IDHEADER o ?IDHEADER
VARIE:
Reportman 2.8g pare abbia problemi col salvataggio in PDF
Reportman 2.9b non mi pare installi i componenti .NET
Per creare un progetto importare le DLL che si trovano in C:\program
files\report manager\net 2
- printreport.exe
- Reportman.Drawing.dll
- Reportman.Drawing.Forms.dll
- Reportman.Reporting.dll
- Reportman.Reporting.Forms.dll
GESTIONE CON FIREBIRD DBMS:
Reportman permette di utilizzare come dataprovider il Net Provider di
firebird.
Premetto che è possibile eseguire report che hanno provider diversi
(Interbase Express) e da codice assegnarli una connection aperta (vedere
esempio).
Per poter vedere firebird come Data Provider è necessario installarlo nella
GAC e modificare il file machine.config, seguendo questi passaggi:
http://www.firebirdsql.org/firebirdtutorial/firebird-data-access-designer-ddex-installation.html
Esempio di reportman-firebird 
VB.NET
 2010 RC, apro un report che utilizza
in origine "Interbase Express" come data provider, ma gli passo un Firebird
.NET data provider da codice.
| Imports FirebirdSql.Data.FirebirdClient
| 
| Imports Reportman.Drawing
| Imports Reportman.Drawing.Forms
| Imports Reportman.Reporting
| Imports Reportman.Reporting.Forms
| 
| 
| Public Class Form1
| 
|     Dim cn As New FbConnection("User=SYSDBA;Password=masterkey;" & _
|                                                   "Database=localhost:C:\DB\db.gdb;" & _
|                                                   "DataSource=localhost;Charset=NONE;")
| 
| 
|     Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
| 
|         cn.Open()
| 
|         If chkDotNetMode.Checked Then
| 
|             ' ***** .NET Mode *****
| 
|             Dim rp As New reportman.Reporting.Report
| 
|             rp.AsyncExecution = False
|             rp.LoadFromFile("C:\MyReport.rep")	' report is saved XML format
|             rp.DatabaseInfo(0).Connection = cn      
| 
|             rp.DataInfo("HEADER").SQL = rp.DataInfo("HEADER").SQL.Replace(":"c, "@"c)
|             rp.Params("PRICE").Value = 2	'real parameter
| 
|             rp.DataInfo("DETAIL").SQL = rp.DataInfo("DETAIL").SQL.Replace(":"c, "@"c)    'master dataset parameter "fake"
| 
|             Dim prw As New PrintOutWinForms
|             prw.Preview = True
|             prw.SystemPreview = False
|             prw.ShowPrintDialog = False
|             prw.Print(rp.MetaFile)
| 
|         Else
| 
|             ' ***** ActiveX Mode *****
|             ' 
http://tech.groups.yahoo.com/group/reportman/message/8108
| 
|             Dim rep As New Reportman.ReportManX
|             With rep
| 
|                 .Preview = True
|                 .filename = "C:\MyReport.rep" 'connection should be already set in report
|                 .SetParamValue("PRICE", 2) 'set only real parameter not master dataset parameter
|                 .Execute()
| 
|             End With
|         End If
| 
| 
|         cn.Close()
| 
|     End Sub
| End Class
Dato che ci ho perso diverso tempo per trovare gli inghippi, spero serva a
qualcuno nella memoria di google

 qualcuno nella memoria di google
Qualcuno ti e' molto grato
RobertoA

 qualcuno nella memoria di google
Finalmente un post che contribuisce positivamente alla
community....grazie!



Tenete presente che č un primo abbozzo di test di funzionamento, perň un
buon punto di partenza funzionante.

 creazione dei report.
[CUT]
Anche se -al momento- non uso reportman,
grazie per il post, č sicuramente da inserire in archivio.
Mi accodo a quanto scritto da Wodka.
ciao
stefano

 Mi accodo a quanto scritto da Wodka.
Se lo avete perso, ho postato anche lo script InnoSetup per installare e
registrare dll/ocx con utenti loggati non administrator (dovete conoscere
voi utente/psw ovviamente).
http://groups.google.com/group/it.comp.lang.visual-basic/msg/f81045af6ba95b62

 altrimenti i pulsanti dell'anteprima report non saranno visibili.
Ciao scusa proprio in questi giorni sto scoprendo reportman.
Ho il problema dei pulsanti che non si vedono nella prewiev, mentre dal 
programma reportmanager i pulsanti si vedono.
ho provato a mettere questo nel mio codice della load form  ma i pulsanti 
non si vedono ugualmente.
io ho visual studio 2008, e reportman 2.8 g. Credevo che per 
inizializzazione bastasse questo.
Sai dirmi qualche cosa? Grazie mille comunque per le info .
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As 
System.EventArgs) Handles MyBase.Load
Try
Me.ContattiTableAdapter.Tot2(Me.ContattiDataSet.Contatti)
Catch ex As System.Exception
System.Windows.Forms.MessageBox.Show(ex.Message)
End Try
sample5.filename = "C:\programmi\report manager\sample5.rep"
sample5.Preview = True
End Sub

 inizializzazione bastasse questo.
| Se si utilizza la versione OCX di reportman si deve creare da codice e non
| trascinarlo sulla form (o inizializzarlo prima del termine del LoadForm),
| altrimenti i pulsanti dell'anteprima report non saranno visibili.
Era inteso come:
"Non trascinarlo"
AND
"Non inizializzarlo prima del termine del load form"
Per cui non puoi ne trascinarlo sulla form, e neanche usarlo prima che la
form sia caricata completamente, se segui il link del codice c'è scritto.
In pratica prova l'esempio scritto con un pulsante e vedrai che funziona.
Comunque io non userei l'activeX, anche solo per il fatto che se usi il
metodo .NET puoi distribuire le versioni nuove senza fare il setup con
registrazione dell'ocx.
Inoltre puoi settare molte più cose del report da codice usando le librerie
.net.
Tra l'altro non mi pare tu abbia neanche report "vecchi" con cui mantenere
la compatibilità.

 la compatibilità.
Si in realta' e' il primo report che creo quindi non perderei nulla, e' solo 
che sono ancora troppo profano per farlo con net, almeno credo.
Grazie mille.

 che sono ancora troppo profano per farlo con net, almeno credo.
Se non lo conosci io proverei a partire con quello, il disegno del report
resta lo stesso, cambia il codice per lanciare un report ma č molto simile,
il codice che ti ho postato č sufficiente per gran parte dei report che
farai, infatti piů di passare un Dataset o un parametro, difficile che
farai altro.

 farai altro.
OK grazie vedro', grazie per la fiducia :)

 OK grazie vedro', grazie per la fiducia :)
Beh tanto se hai problemi referenzi anche l'activeX e usi quello.

Qualcuno ha idea di come modificare la dimensione della pagina nell'anteprima? parlo della versione .net...

Buongiorno Andrea, scusami se approfitto della tua esperienza in ReportMan, ho una domanda da farti.
esempio
 
HEAD: SELECT * FROM tblClienti
DETAIL: SELECT * FROM tblricevute WHERE Idcliete_fk = ?
 
Normalmente passo i parametri da codice e li inserisco nella lista parametri all'interno dell'editor, ma non ho capito come poter passare il parametro idcliente ottenuto dalla prima query nel master dataset alla seconda query del dataset DETAIL.
 
Mi puoi aiutare?
 
Grazie mille
 
Alessandro


Ti conviene riaprire un thread, questo l'ho ribeccato per caso in fondo.
 
Devi fare con i due punti.
SELECT * FROM tblricevute WHERE Idcliete_fk = :NOMECAMPO_ID
 
Se si usa un .NET data provider si deve sostituire il :IDHEADER con il
carattere usato dal data provider es. @IDHEADER o ?IDHEADER
 
Tra parentesi sconsiglio la modalità .NET data provider, noi abbiamo dovuto
rimigrare tutti i report di un gestionale per un limite di stampa per cui i
campi da 3000 caratteri davano errore. Non so se poi sia stato risolto
negli ultimi anni.


E cosa avete usato per i report ?
 
 

 E cosa avete usato per i report ?
 
Sempre quello tornando alla versione ActiveX/OCX anche su .NET. Poi in
futuro si vedrà, abbiamo all'attivo più di un migliaio di report diversi
fatti con reportman e in qualche modo i problemi si sono sempre aggirati.