Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour
Suite a une migration de pb9 a pb12.5 j'ai un probleme dans les dw de récupération d'identity (en sqlserver ) (sans faire de retrieve )
Dans la fenêtre il y a plusieurs DW et j'ai l'impression qu'il prend un identity d'un dw de la fenetre pour une autre dw
J'avais pas le problème en pb9
La différence essentielle est la connection a la bdd : On est en ole db ( en natif on a eu d'autres problèmes )
On a eu aussi un autre probleme avec le driver de connection
1. Des proc qui après avoir ete executer reste ouverte et me donne un message
(97dc068): *** ERROR 999 ***(rc -1) :
Microsoft OLE DB Provider for SQL Server
L'objet était ouvert.
avec
SQLCA.DBMS = "OLE DB"
et pas de probleme en
SQLCA.DBMS = "SNC SQL Native Client(OLE DB)"
-> sauf que sur certain poste la connection en
SQLCA.DBMS = "SNC SQL Native Client(OLE DB)"
ne marche pas malgre l'installe de driver sqlncli.msi
2.
des triggers sont prit en compte dans les insert , update , delete
explication :
si lors d'un update j'ai un tiggers qui se déclenche et que la première action du trigger me renvoi 0 ligne
j'ai un message comme quoi la ligne est modifié par ailleurs ( et si la première action du trigger me renvoi plus d'une ligne c'est bon )
Qqu'un a une id ?
Y a surement un paramétrage a mettre dans DBParm mais je sais pas quoi !!
on a eu un probleme avec les champs char qui etait pris dans l'appli en tant que char et non Varchar
il a faut rajouter dans PBTrimCharColumns='Yes' dans le DBParm
Hors ligne
Personne n'a eu ce probleme ?
Y a qqu'un en pb12.5 avec une base SQL server ? avec quelle connexion ?
Hors ligne
Désolé, que de l'ASA et un PostgreSQL ici
Hors ligne
Ici, connection entre PB12.5 et SQLServer via OLEDB, mais on passe par un datalink (fichier .udl).
A noter que les postes sont en Windows 7 64 bits, et que l'application en question n'utilise pas les identity columns
(Toutes les datawindows sont mises à jour et chargées via des procédures stockées, et la gestion des ID est faite une interne via des
tables de paramétrages)
Hors ligne
pour la proc ca fonctionne
pour les identity ca ne fonctionne toujours pas
Hors ligne
Bonjour,
Je ne suis pas sûr que ça aide, mais en recherchant "Identity database parameter", on trouve des indications sur ce paramètre :
"By default, the SNC interface issues SELECT @@identity to obtain the IDENTITY column value of the newly inserted row. It returns the last IDENTITY value produced on a connection, regardless of the table that produced the value, and regardless of the scope of the statement that produced the value.
SELECT IDENT_CURRENT('tablename') returns the last IDENTITY value produced in a table, regardless of the connection that created the value, and regardless of the scope of the statement that produced the value.
SELECT SCOPE_IDENTITY() returns the last IDENTITY value produced on a table and by a statement in the same scope, regardless of the table that produced the value.
Because Identity is a dynamic database parameter, it can be set and reset at any time during an application."
Nous utilisons peu cette fonctionnalité car elle ne semble fonctionner correctement que sous SqlServer OLEDB or nous avons des clients sous Oracle.
Bonne chance
Hors ligne
Bonjour
Merci
il semble que c'est bien mon probleme
le probleme est en pb12.5
- Y a t il un paramètre a mettre au niveau de la connexion (ole db ) pour que pb prenne toujours IDENT_CURRENT('tablename')
mais grace a toi j'ai peut etre trouvé qqchose ici
ajouter dans pbodbxxxxx.ini
[MS_SQLSERVER_SYNTAX] GetIdentity='Select SCOPE_IDENTITY()'
Hors ligne
JCZ a écrit:
Bonjour
Merci
il semble que c'est bien mon probleme
le probleme est en pb12.5
- Y a t il un paramètre a mettre au niveau de la connexion (ole db ) pour que pb prenne toujours IDENT_CURRENT('tablename')
mais grace a toi j'ai peut etre trouvé qqchose ici
ajouter dans pbodbxxxxx.iniCode:
[MS_SQLSERVER_SYNTAX] GetIdentity='Select SCOPE_IDENTITY()'
je confirme avoir déjà utilisé le .INI pour gerer les identity avec mysql.
Hors ligne
ca marche pas
ca doit être qqchose comme cela mais je sais pas quoi
Hors ligne
En fait, je pensais plutôt au paramètre du DbParm qu'à un fichier INI :
SQLCA.DBMS = "SNC SQL Native Client(OLE DB)"
SQLCA.ServerName = "MonServeur"
SQLCA.AutoCommit = False
SQLCA.DBParm = "TrustedConnection=1,Database='MaBaseDeDonnees',CommitOnDisconnect='No',Identity='SCOPE_IDENTITY()'"
Hors ligne
Ou plutôt, dans ton cas : Identity='IDENT_CURRENT()'
Hors ligne
ca marche en
DBMS = "SNC SQL Native Client(OLE DB)"
mais pas en
DBMS = "OLE DB"
mince ...
Hors ligne
JCZ a écrit:
ca marche en
Code:
DBMS = "SNC SQL Native Client(OLE DB)"
Mais tu ne [pv]eux pas utiliser ce driver ?
Hors ligne
oui ( je [pv]eux ) en théorie
et
non ça me crée d'autres problèmes ....
Donc pour l'instant on reste en OLE DB
Hors ligne
Finalement on est passé en natif
DBMS = "SNC SQL Native Client(OLE DB)"
DBParm = "Database='db_Database',AppName='MON APPLI,TrimSpaces=1,Provider='SQLNCLI10',Identity='IDENT_CURRENT()',PBMaxTextSize=65533,StaticBind='Yes',DisableBind=1,DateTimeFormat='\''dd-mm-yyyy hh:mm:ss.fff\''',DateFormat='\''dd-mm-yyyy\''',TimeFormat='hh:mm:ss.fff',PacketSize=32767,PBMaxTextSize=2147483647,PBMaxBlobSize=2147483647"
merci a vous
Hors ligne
Mince encore un probleme avec le driver natif avec les types "bit" et les check box
-> c'est pâ checke meme si c'est a true
pas de probleme avec les int
Hors ligne
Ce n'est pas plutôt 0 ou 1, les valeurs des bit à tester sur les checkbox?
Hors ligne
On a eu le même problème en passant sous SqlNCli.
Les valeurs sont 0 et -1 au lieu de 0 et 1 avant.
Hors ligne
foon a écrit:
Ce n'est pas plutôt 0 ou 1, les valeurs des bit à tester sur les checkbox?
dans le checkbox c'est bien tester 0 ou 1
mais dans la bdd c'est false ou true (un "bit" et pas une !)
d'ou mon probleme
ca s'affiche plus chécke dans les ecrans
Hors ligne
Faut ajouter
StaticBind=0
Hors ligne