Crystal Reports Échec De La Connexion De Base De Données
Après avoir passé un bon 3 à 4 heures sur google en essayant de trouver une solution à mon problème, je n'ai pas eu beaucoup de chance.
Fondamentalement, nous utiliser crystal reports pour notre .NET applications avec un serveur sql server back-end, nous avons beaucoup de clients, chacun avec leur propre serveur et donc nos rapports doivent avoir leurs connexions de définir de façon dynamique. Jusqu'à il y a une semaine cela a bien fonctionné. Cependant il y a quelques jours un client ont déclaré qu'ils étaient d'obtenir une invite de connexion de base de données pour un rapport (un seul rapport, le reste a bien fonctionné). Nous avons été très perplexe, mais nous avons réussi à le reproduire sur un netbook qui n'a pas visual studio ou sql server est installé. À la fin, le dev a décidé de reproduire le rapport dans l'espoir que c'était juste une bizarrerie dans ce rapport particulier.
Malheureusement un nouveau client est aujourd'hui aussi connu le même problème, mais cette fois, pour chaque rapport crystal qu'ils avaient et ils ont également travaillé sur le netbook, donc, nous sommes vraiment tout perdu ici.
Ci-dessous est une capture d'écran de ce que nos clients obtiennent présenté avec -
Capture d'écran http://img404.imageshack.us/img404/1375/loginf.png
et voici le code que j'utilise pour définir les informations de connexion dans le rapport
cI.ServerName = (string)builder["Data Source"];
cI.DatabaseName = (string)builder["Initial Catalog"];
cI.UserID = (string)builder["User ID"];
cI.Password = (string)builder["Password"];
foreach (IConnectionInfo info in cryRpt.DataSourceConnections)
{
info.SetConnection(cI.ServerName, cI.DatabaseName, cI.UserID, cI.Password);
}
foreach (ReportDocument sub in cryRpt.Subreports)
{
foreach (IConnectionInfo info in sub.DataSourceConnections)
{
info.SetConnection(cI.ServerName, cI.DatabaseName, cI.UserID, cI.Password);
}
}
Comme toujours, toute aide appréciée.
OriginalL'auteur Marlon | 2010-05-11
Vous devez vous connecter pour publier un commentaire.
Peut-être la question est la façon dont vous définissez les informations d'authentification. Avez-vous considéré l'utilisation de la ReportDocument.SetDatabaseLogon méthode? De l'appeler une fois pour chaque unique DB connection dans le rapport. Il permettra d'éliminer la nécessité d'énumérer toutes les tables dans le rapport et, si je me souviens, la nécessité d'énumérer les sous-états " tables ainsi.
Le dataase domaine à définir? Si vous fournir le nom informations d'identification d'ouverture de session lorsque le rapport vous invite, le rapport de travail comme prévu?
Si vous coder en dur les valeurs dans la SetDatabaseLogon, comme reportDocument.SetDatabaseLogon (le"compte","mot de passe","base de données","serveur"), cela fonctionne t'il? Pour s'assurer que le sous-rapport d'ouverture de session de l'information est en cours de définition, ajouter ce bit à votre sous-boucle. Permettez-moi de savoir comment il fonctionne et nous allons essayer le test suivant.
Le même processus fonctionne très bien sur d'autres clients environnements - je crois que c'est quelque chose à faire avec les pilotes / de la manière qu'ils ont de SQL server configurer. Mais d'autres que je suis perplexe. Si je entrer dans les détails corrects dans l'invite de commandes, je reçois un échec de la connexion message.
OriginalL'auteur craig
Solution trouvée, il s'est avéré que la connexion générateur de client utilisé pour configurer leur système n'a pas mis le nom de l'instance. Plutôt le point de prêter à confusion .net application fonctionnait bien avec elle comme ça. Cependant, avec cette triés crystal reports maintenant fonctionner parfaitement.
Vous remercie pour votre intervention Craig.
OriginalL'auteur Marlon
La recherche d'une solution à un problème similaire m'a amené à cette question. Mon problème/solution était un peu différent, mais je devine que les autres avec mon problème finira par ici, donc je vais poster ma solution ici.
Si vos utilisateurs sont de voir quelque chose comme ceci lorsque vous essayez d'afficher un aperçu d'un rapport:
puis lors de la configuration de la connexion SQL Server info pour le rapport, assurez-vous d'inclure les service nom. Ainsi, par exemple, assurez-vous que vous donnez de Cristal "monserveur\myservice" au lieu de "monserveur".
Mon programme est en mesure d'accéder aux données à partir de SQL Server en utilisant simplement "monserveur", mais de Cristal doit être donné "monserveur\myservice".
OriginalL'auteur Jeff Roe