Table.Location/Table.Name

martedì 08 settembre 2009 - 19.59

crystal Profilo | Newbie

Ciao a tutti. Scusate le domande banale...

Premessa
- Crystal Reports 2008.
- Codice .NET (VB.NET).
- Il report da manipolare è "connesso" ad una fonte dati DB2 (es. MIODB2) mappata via ODBC.
- Per semplicità il report riporta i campi di una sola tabella: TEST.AGENTI
- La tabella è "dotata" di schema (TEST)
- Considerando questo stralcio di codice:

For Each table In result.Database.Tables tloinfo = table.LogOnInfo cinfo = New ConnectionInfo() cinfo.ServerName = data.P_ServerName cinfo.DatabaseName = data.P_DbName cinfo.UserID = data.P_UserId cinfo.Password = data.P_Pwd cinfo.IntegratedSecurity = True tloinfo.ConnectionInfo = cinfo table.ApplyLogOnInfo(tloinfo) Next

Domande:
- Perché table.Name o table.Location mi riportano solamente il valore "AGENTI" e non "TEST.AGENTI"?
- C'è modo di avere tutto il nome della tabella (tabella + schema - TEST.AGENTI)?
- Ho dimenticato qualche cosa o concetto di base?

Grazie a tutti anticipatamente.


==============================

In attesa di aiuti, credo di avere individuato il punto di interesse per la risoluzione del mio problema:

result.ReportClientDocument.DatabaseController.Database.Tables.Item(0).QualifiedName

dove result è l'istanza di ReportDocument che "wrappa" il mio rpt.

In questo modo posso accedere alla proprietà (R/W) QualifiedName di un oggetto Table.
Questa proprietà mi restituisce il nome completo (di schema) della mia tabella.
Nel mio caso specifico mi serve perché lo devo cambiare "al volo".

Il seguente codice

result.Database.Tables.Item(0).Name ' (o .Location)

mi restituisce l'alias della tabella.

Faccio un po' di prove e confermo (o meno).


freeteo Profilo | Guru

Ciao Crystal,
perdona il ritrardo nella risposta, ho visto che hai risolto da solo.
Ti ringrazio per aver postato la soluzione, così verrà utile sicuramente a qualcun'altro...

Grazie e facci sapere la conferma.

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

crystal Profilo | Newbie

Ok Freeteo.

Posto un programmino di Test (non si badi allo stile, è solo un test) in VB.NET

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

N.B.
com.XXX.dotnet.crr.util.MCRUtil
com.XXX.dotnet.crr.util.MCRRUtil
Sono delle librerie/Moduli di mia utilità (il namespace è in stile package Java, "mondo" dal quale "provengo").
Queste librerie, in particolare, servono per due metodi di utilità:
- GetKeyValue(stringa, delimitatore) per ricavare un array di stringhe di due elementi (0 - chiave; 1 - valore)
- ExeLauncher(stringa_comando, wait) facility per lanciare un processo.

La prima (becera) parte del programma è irrilevante al fine del test: serve solo per specificare esternamente il nome del file rpt da "caricare".

La parte centrale del test è:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

In particolare:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

per quanto riguarda il recupero dell'informazione sul nome (non alias) della tabella.

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

N.B.
non badare al codice commentato di ExeLauncher

DUBBI ANCORA IRRISOLTI
- Come mai, quando cambio il nome alla tabella e salvo, rimane il nome originale e non quello nuovo.

In questi giorni sto inserendo le "semplici" modalità del test in un contesto di sviluppo più ampio e complicato e, quando avrò finito, potrò confermare (o meno) definitivamente la soluzione.

Grazie e...qualsiasi cosa a riguardo è benvenuta!

P.S. se sai indicarmi qualche buon libro serio su CR 2008 e sviluppo (o link di questo forum dove si parla di questo) te ne sarei grato. Uso VB.NET in Visual Studio Team. Ma va bene qualsiasi "linguaggio" .NET o Java, l'importante è l'object model di CR etc.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5