2009-09-10 8 views
1

J'essaie de créer un package d'installation pour un logiciel vb6 hérité. le logiciel lui-même se connecte à un serveur sql via sqlncli (client natif). J'ai emballé toutes les dépendances et les déployer sur une nouvelle machine exécutant winxp et office2003.Ouverture de session échouée, Crystal Reports 9, serveur VB6, sqlncli

maintenant, à partir de la machine cible, je peux me connecter à la base de données (ms sqlserver 2005) qui s'exécute ailleurs en utilisant tcp/ip. le logiciel hérité se connecte à la DB juste bien et je peux manipuler des données. mais quand j'essaie d'ouvrir un rapport de cristal, les choses deviennent malpropres:

Je reçois une erreur disant "Erreur d'exécution" -2147189176 (80047e48): Échec de la connexion Détails: 01000: [Microsoft] [ODBC SQL Server Pilote] [DBNETLIB] ConnectionOpen (Connect()) "

depuis les rapports ont été conçus sur un système différent, différent db et non ... il y a une boucle avant d'appeler le rapport qui réinitialise les informations db pour chaque tableau:

For i= 1 To numTables 
    Set crTable = crTables.Item(i) 
    crTable.SetLogOnInfo dbServer, dbName, dbLogin, dbPasswd 
    Next 

le ConnectBufferString lit « Chaîne de connexion = DRIVER = SQL Server ;; ID utilisateur = utilisateur Mot de passe ;; = ;; Database = MY_D B ;; Server = 192.168.1.3 \ SQLEXPRESS ;; UseDSNProperties = -1 "

Il ne semble pas y avoir moyen de définir explicitement le fournisseur SQLNCLI, au moins je n'en vois aucun. Lors de l'exécution du logiciel sur mon système de développement, tout fonctionne comme prévu.

J'espère que vous pouvez m'aider avec ça. juste pour que nous n'ayons pas à discuter à ce sujet: je pense aussi que ces deux technologies (vb6 et cr9) sont obsolètes, mais la commutation n'est pas une option ici.

+0

ce n'est pas une réponse à pourquoi cela ne fonctionne pas, mais en utilisant le code de ce commentaire que je pourrais trouver un moyen de contourner: http://stackoverflow.com/questions/204611/crystal-report-datasource -remap/217756 # 217756 – BigBlackDog

Répondre

0

Je sais que vous avez dit dans votre commentaire que vous avez déjà fait cela, mais je me suis dit que j'allais lancer ça. :)

Vous pouvez essayer "Provider = SQLNCLI" au lieu de "DRIVER = SQL Server" pour voir si cela fait une différence.

Jetez un coup d'oeil au lien suivant. Faites défiler vers le bas sur la page jusqu'à ce que vous voyez la section «Fournisseur OLE DB SQL Native Client 9.0». Ils montrent des exemples de chaînes de connexion à l'aide de SQL Server Native Client.

http://www.connectionstrings.com/sql-server-2005

Hope this helps.

0

Vous devez nettoyer les tables et modifier la configuration de l'accès à la base de données, voir l'exemple ci-dessous. Dans la première ligne de code, j'ai mis un exemple si nécessaire pour changer le pilote de connexion, dans mon cas le rapport pointait vers une base de données PostgreSQL et programativamente nécessaire de modifier pour se connecter à un serveur SQL.

myReportObject.Database.Tables(1).DllName = "crdb_ado.dll"  'Connect to SQL with OLEDB 
For Index = 1 To myReportObject.Database.Tables.Count 
    With myReportObject.Database.Tables(Index) 

     .ConnectionProperties.DeleteAll 

     .ConnectionProperties.Add "Provider", "SQLOLEDB" 
     .ConnectionProperties.Add "Data Source", mySqlIP 
     .ConnectionProperties.Add "Initial Catalog", myDB 
     .ConnectionProperties.Add "User ID", usr_id 
     .ConnectionProperties.Add "Password", pass 
     .ConnectionProperties.Add "Integrated Security", 0 

    End With 
Next