Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[ReportMan] Problemi vari nell'utilizzo con .NET

107 views
Skip to first unread message

Innuendo

unread,
Sep 21, 2010, 11:39:28 AM9/21/10
to
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

Andrea [Work]

unread,
Sep 21, 2010, 11:46:52 AM9/21/10
to
Il Tue, 21 Sep 2010 17:39:28 +0200, Innuendo ha scritto:

> 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).

Innuendo

unread,
Sep 22, 2010, 11:42:43 AM9/22/10
to
Il 21/09/2010 17.46, Andrea [Work] ha scritto:
> Mi pare ci sia una proprietà dei footer o simili per dirgli se stampare
> anche dopo l'ultimo record, verifica non sia quello.

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

Innuendo

unread,
Sep 22, 2010, 12:58:51 PM9/22/10
to
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

Andrea [Work]

unread,
Sep 23, 2010, 6:35:18 AM9/23/10
to
Il Wed, 22 Sep 2010 15:42:43 GMT, Innuendo ha scritto:

> 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

0 new messages