[C#][CR] Pb d'identification lors de l'impression du rapport

Pb d'identification lors de l'impression du rapport [C#][CR] - C#/.NET managed - Programmation

Marsh Posté le 16-08-2004 à 10:29:07    

Bonjour,
 
je créé un rapport Crystal report qui va chercher des données dans une Vue ORACLE.
 
Lors de l'affichage du rapport, je passe mes identifiants de connexion comme suit :
 

Code :
  1. ConnectionInfo oCnInfo = new ConnectionInfo ();
  2. oCnInfo.ServerName = instance;
  3. oCnInfo.DatabaseName = "";
  4. oCnInfo.UserID = "dbacvecli";
  5. oCnInfo.Password = "cve";


 
tout fonctionne tres bien su r mon poste de developpement.
Seulement, lorsque je déploie l'application, a l'affichage du rapport, une fenetre me demande mes identifiants et meme en les rentrant, le rapport ne s'affiche pas (la fenetre d'identification revient sans cesse)
 
evidement j'ai bien un client oracle sur la machine cliente avec le bon tns et je peux me connecter en sql+ au serveur.
 
savez v ous ce qui peut clocher ? ca ne serait pas une dll manquante par hasard ? merci

Reply

Marsh Posté le 16-08-2004 à 10:29:07   

Reply

Marsh Posté le 16-08-2004 à 16:34:06    

J'ai déjà eu un probleme similaire, il faut que tu changes toutes les connections infos de tes tables : ca donne un code dans le genre - à mettre avant le load de ton CR :
 

Code :
  1. objLogOn = New CrystalShared.TableLogOnInfo()
  2.         For Each objTable In p_Report.Database.Tables
  3.             ' Extrait l'objet TableLogOnInfo.
  4.             objLogOn = objTable.LogOnInfo
  5.             objLogOn.ConnectionInfo.ServerName = g_DBServer
  6.             objLogOn.ConnectionInfo.DatabaseName = g_DBDatabase
  7.             ' Appliquer les informations de connexion à la table.
  8.             objTable.ApplyLogOnInfo(objLogOn)
  9.             ' Indication du nouveau nom de table (rajout de la coordonnée de base)
  10.             objTable.Location = g_DBDatabase & ".dbo." & objTable.Location
  11.         Next


avec p_Report l'état en cours, les variables g_DB sont mes variables de connexion SQL

Reply

Marsh Posté le 16-08-2004 à 17:05:29    

ok j'essaye demain qd je retourne au boulot merci :)


---------------
Everybody can succeed, all you need is to believe
Reply

Marsh Posté le 18-08-2004 à 11:17:41    

ben apparement c'est ce que je faisais déja (enfin ce n'est pas moi qui ai écrit le code)
 
voici le code exact de l'affichage du rapport :
 

Code :
  1. Report.Refresh();
  2.   Report.SetDatabaseLogon("dbacvecli", "cve" );
  3.   Database oDb;
  4.   Tables oTables;
  5.   Table oTable;
  6.   TableLogOnInfo tliCurrent;
  7.   ConnectionInfo oCnInfo = new ConnectionInfo ();
  8.   // Setup the connection information structure to be used
  9.   // to log onto the datasource for the report.
  10.   oCnInfo.ServerName = instance;
  11.   oCnInfo.DatabaseName = "";
  12.   oCnInfo.UserID = "dbacvecli";
  13.   oCnInfo.Password = "cve";
  14.   //Get the table information from the report
  15.   //CRViewer.ParameterFieldInfo = paramFields;
  16.   //Report.Database
  17.   oDb = Report.Database;
  18.   oTables = oDb.Tables;
  19.   for (int i = 0; i < oTables.Count; i++)
  20.   {
  21.    oTable = oTables [i];
  22.    tliCurrent = oTable.LogOnInfo;
  23.    //tliCurrent.ConnectionInfo = oCnInfo;
  24.    tliCurrent.ConnectionInfo.ServerName = instance;
  25.    tliCurrent.ConnectionInfo.DatabaseName = "";
  26.    oTable.ApplyLogOnInfo(tliCurrent);
  27.   }
  28.   ParameterFieldDefinitions crParameterFieldDefinitions = null;
  29.   ParameterValues crParameterValues = null;
  30.   ParameterDiscreteValue crParameterDiscreteValue = null;
  31.   crParameterFieldDefinitions = Report.DataDefinition.ParameterFields;
  32.   if (paramFields != null)
  33.   {
  34.    IDictionaryEnumerator en = paramFields.GetEnumerator();
  35.    while(en.MoveNext())
  36.    {
  37.     // Name of the parameter
  38.     ParameterFieldDefinition crParameterFieldDefinition = null;
  39.     Console.WriteLine(crParameterFieldDefinitions[0].Name);
  40.     crParameterFieldDefinition = crParameterFieldDefinitions[en.Key.ToString()];
  41.     // Set discrete value
  42.     crParameterDiscreteValue = new ParameterDiscreteValue();
  43.     crParameterDiscreteValue.Value = en.Value;
  44.     // Add parameter value
  45.     crParameterValues = new ParameterValues();
  46.     crParameterValues = crParameterFieldDefinition.CurrentValues;
  47.     crParameterValues.Add(crParameterDiscreteValue);
  48.     // Apply the current value to the parameter definition
  49.     crParameterFieldDefinition.ApplyCurrentValues(crParameterValues);
  50.    }
  51.   }
  52.   CRViewer.ReportSource = Report;


 
Pour moi tout est correct ... je pense vraiment que c'est soit une dll manquante sur le poste client soit un bug MS ....
 
qu'en pensez vous ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed