Newsgroup: it.comp.lang.visual-basic
Titolo: [ReportMan] Problemi vari nell'utilizzo con .NET

Ciao a tutti,
sto ancora lottando con ReportMan per generare dei report da 
VB.NET
, in 
particolare io mi sono installato la versione 2.9b, solo che mi sembra 
piuttosto instabile.
Ad esempio, ho generato un report, che richiamo con il seguente codice:
   Dim rp As New Reportman.Reporting.Report
   Dim conn As New OdbcConnection("dsn=SMTEST")
   conn.Open()
   rp.AsyncExecution = False
   rp.LoadFromFile("C:\pezzi.rep")
   rp.DatabaseInfo(0).Connection = conn
   Dim prw As New PrintOutWinForms
   prw.Preview = True
   prw.SystemPreview = False
   prw.ShowPrintDialog = False
   prw.Print(rp.MetaFile)
Ora mi succede che quando richiamo questa funzione si apre la finestra 
di report manager da dove posso navigare nei report, salvare, stampare 
ecc ecc.
Se uso i pulsanti di navigazione quando arrivo all'ultimo record e premo 
di nuovo il pulsante ottengo l'errore:
"Indice oltre i limiti della matrice."
La stessa cosa avviene premendo il pulsante che mi manda all'ultimo record.
E' un errore noto? La versione che sto utilizzando è in beta, è un 
problema di .NET .... altro?
Ci sono anche tanti altri piccoli problemi che trovo, ad esempio poco fa 
un report appena finito ha smesso di funzionare improvvisamente 
restituendo l'errore "Indice oltre i limiti della matrice." 
immediatamente all'apertura del file ... ovviamente non so cosa ho fatto 
per provocare questo :-(
Ho dovuto buttare il record e rifarlo da zero.
Chi sta usando questo programma ha di questi problemi?
grazie, ciao
Mauro

 Chi sta usando questo programma ha di questi problemi?
Non uso l'IDE della 2.9b, ma direi di non aver avuto mai questo tipo di
problemi.
Alla peggio da 
VB.NET
 puoi usare la modalità ActiveX se preferisci, solo
che poi devi distribuirlo nel pacchetto di installazione.
Indubbiamente senza usare provider .NET di dati e con l'activeX è ben più
stabile, ti posso dire di aver qualche centinaio di report attivi in quel
modo (da VB6).

 modo (da VB6).
Non saprei nemmeno da che parte cominciare ad usare activeX :-( ... sono 
molto agli inizi con .NET.
In report manager designer quando creo il report uso Microsoft DAO come 
connessione, dsn=SMTEST come stringa di connessione, poi mi faccio il 
mio bel dataset e creo il report con le mie belle label e con il drag & 
drop dei campi del db nel report.
Salvo il report e lo richiamo dal mio progetto 
VB.NET
 con la seguente 
procedura:
Dim rp As New Reportman.Reporting.Report
Dim conn As New OdbcConnection("dsn=SMTEST")
conn.Open()
rp.AsyncExecution = False
rp.LoadFromFile("C:\test.rep")
rp.DatabaseInfo(0).Connection = conn
Dim prw As New PrintOutWinForms
prw.Preview = True
prw.SystemPreview = False
prw.ShowPrintDialog = False
prw.Print(rp.MetaFile)
E' il modo corretto di procedere o sto dimenticando qualcosa in giro?
ciao e grazie
Mauro

Dopo mille report e prove varie ho finalmente individuato la causa 
dell'errore.
Un campo definito "memo" in access quando supera la lunghezza di 1988 
caratteri genera l'errore "Indice oltre i limiti della matrice.".
Ne sono certo, se inserisco 1988 caratteri funziona tutto perfettamente, 
con il 1989 crasha come descritto quando vado all'ultimo record oppure 
quando tento di visualizzare il record incriminato.
Ci sono soluzioni possibili da adottare?
Il campo ha lunghezza indefinita perche' e' il campo descrittivo di un 
prodotto e (seppur in rari casi) è possibile che abbia una lunghezza 
superiore ai 2000 caratteri.
ciao e grazie
Mauro

 molto agli inizi con .NET.
Io ho notato un'altra cosa che in anteprima da .NET con il WardWrap
+AutoExpand della sezione non viene bene in alcuni casi un report, se poi
lo stampo invece viene bene, o anche in PDF.
Da reportmanger va comunque sempre bene.
Per usare l'activex è più semplice, cerca sempre nel mio post "miniguide
reportman firebird". Più o meno si parla di (VB6 ma lo vedi anche per .NET)
Dim rep1 As Object
Set rep1 = CreateObject("ReportMan.ReportManX")
rep1.FileName = FileReport
rep1.Title = TitoloReport
rep1.Preview = True
rep1.ShowPrintDialog = True
rep1.ShowProgress = True
rep1.SetParamValue "TITOLO", "Stampa Tabella"
rep1.SetDatasetSQL "FTAB", "SELECT * FROM TABELLA WHERE ID=1;"
rep1.Execute
Se non lo istanzi in late binding, hai l'intellisense e non hai problemi.
Occhio che con .NET non mi pare puoi trasciare un report nella form senza
avere problemi:
http://tech.groups.yahoo.com/group/reportman/message/8108