...(cha barba direte voi).. pensate un po' il sottoscritto che ci litiga tutti i giorni :D

Cominciamo con le buone notizie: NON SI PUO'

Dopo aver spulciato per giorni la KB di Crystal e svariati articoli su internet sono giunto alla conclusione che il cambio di metodologia di autenticazione a Run-Time non è possibile.

La degna conclusione è:

  • L'applicazione utilizza Integrated Security per accedere ai dati, quindi il report deve utilizzare Integrated Security: ne consegue che il report deve essere "disegnato" direttamente utilizzando Integrated Security;
  • L'applicazione utilizza la sicurezza integrata di SQL, perchè ad esempio siete in workgroup, il report deve utilizzare la sicurezza integrate si SQL: il report deve essere disegnato connettendosi alla base dati utilizzando la sicurezza integrata di SQL.

Ho smanettato per ore con le classi TableLogonInfo e ConnectionInfo, con i vari, svariati e sparsi un po' ovunque metodi SetDatabaseLogon(...), ma nessuno a sortito gli effetti desiderati.

Spulciando con il debugger si scopre che, dopo aver passato le presunte credenziali con ConnectionInfo, aver ciclato su tutte le tabelle e tutti i sottoreport e aver applicato TableLogonInfo e ConnectionInfo, il ReportDocument resta infarcito di classi NameValuePair2 con Name="Integrated Security" e Value="True"... e uno comicia a chiedersi ma come può funzionare... infatti se durante l'iterazione sulle tabelle si prova ad utilizzare il Table.TestConnectivity() questo ritorna sempre e solo false. :-(

Alla fine preso dalla disperazione ho cominciato a sostituire questi NemeValuePair2, ove possibile direttamente e altrove tramite reflection, ma comunque nulla è cambiato.

Quindi come risolvere l'inghippo... in perfetto stile OOP, implementando i Pattern più famosi ho deciso di disegnare 2 report distinti :-) e a run-time decidere di aprirne uno piuttosto che un'altro.

have a nice day,
m.
whynot [ at ] topics [ dot ] it
These postings are provided "AS IS" with no warranties, and confer no rights.
The views expressed on this weblog are mine alone.