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
> 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."
Mi pare ci sia una proprietà dei footer o simili per dirgli se stampare
anche dopo l'ultimo record, verifica non sia quello.
> 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?
No secondo me c'è qualche dato strano che lo da crashare, o qualche
expression strana es. con Null non considerati.
> 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?
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).
No, ho provato anche a fare un nuovo report senza intestazione e piè di
pagina, non funziona lo stesso.
Il report funziona correttamente se lo visualizzo tramite report manager
designer.
> No secondo me c'è qualche dato strano che lo da crashare, o qualche
> expression strana es. con Null non considerati.
Non ho espressioni nel report, per ora mi sono limitato a fare una
stampa della tabella così come si trova sul db (select * from tabella)
hai qualche altra idea su dove potrei indagare o quali prove fare?
> 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).
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
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
> Non saprei nemmeno da che parte cominciare ad usare activeX :-( ... sono
> 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