2017-02-08 2 views
0

J'ai un problème avec le programme écrit dans PowerBuilder. Il y a code:La fenêtre de données de PowerBuilder ne renvoie pas le résultat

DataStore ds_logged_get 
ds_logged_get= CREATE DataStore 
ds_logged_get.dataobject = 'dw_logged_get' 
ds_logged_get.settransobject(sqlca) 
ds_logged_get.Retrieve(pn_login, pn_domain, ls_ip_addr) 
If ds_logged_get.RowCount() > 0 Then 

Sous datawindow est configurer pour exécuter la procédure st_loggedGet

procedure="1 execute dbo.st_loggedGet;1 @login = :login, @Domain = :Domain , @IP = :IP" arguments=(("login", string),("Domain ", string),("IP", string))) 

Malheureusement, la ligne ds_logged_get.RowCount() retourne 0 enregistrements. Quand je lance une procédure avec les mêmes paramètres, elle renvoie l'enregistrement d'appréciation. Ce qui est plus quand j'exécute datawindow pour le test il renvoie également l'enregistrement. Il n'y a pas d'enregistrements seulement quand je démarre le programme. J'ai même vérifié par SQL Profiler et j'ai réalisé que la procédure n'est pas exécutée du tout. Lorsque la méthode Retrieve exécuter la procédure de magasin?

Je viens de commencer à apprendre PowerBuilder. Quelqu'un pourrait-il m'aider? Merci d'avance. Piotr

Répondre

0

Le problème était avec le client à la base de données. Dans le profil de base de données dans l'application PB, j'utilise Microsoft SQL Server Native Client 10.0, cependant sur mon ordinateur où j'exécute l'application, j'utilise Microsoft SQL Server Native Client 11.0 (défini dans ODBC Data Source Administrator). Après modification pour le même client: Microsoft SQL Server Native Client 10.0 il démarre parfaitement.

2

La méthode settransobject renvoie un entier. Si c'est un -1, il y a un problème avec votre objet de transaction (le global appelé SQLCA). Cela peut être incorrect avec vos paramètres de connexion. Vous pouvez vérifier le SQLCode lorsque vous vous connectez à SQLCA pour vous aider à déterminer ce qui ne va pas.

+0

'SetTransObject' peut également renvoyer -1 s'il y a un problème avec votre objet DataWindow' dw_logged_get'. –