Précédent   Forum des professionnels en informatique > Bases de données > Sybase
Sybase Forum sur la base de données Sybase. Avant de poster -> F.A.Q Sybase, Tutoriels Sybase
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/04/2006, 15h41   #1
Invité de passage
 
Inscription : avril 2006
Messages : 2
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 2
Points : 0
Points : 0
Par défaut [ASE][11.9.2]ADO avec connexion (problème lors d'un update et movenext)

Bonjour à tous,

Mon objectif est de migrer une apllication vb6 connecté à une basse access vers une base de donnée sybase 11.9.2. L'idée générale est de ne pas refaire toute l'aplli mais de changer que ce qui est necessaire.

Pour la connexion proprement dit à la sgbd, je n'ai pas eu de problème.
Par contre, ça se complique sur la methode update et movenext de l'objet recordset. En effet je recupère comme erreur : "Un état E_Fail a eté renvoyé par le fournisseur de données ou par un autre service".

Au depart, le select de mon recordset etait composé de jointures, j'ai donc fait une requete simple pour voir si le pbe persiste, hélas il persiste.
J'ai donc pensé que les composants odbc de sybase n'etait pas à jour...le pbe pesiste toujours. J'ai également mis à jour le composant Mcrosoft ActiveX Data Objects 2.7 library, le pbe persiste.

Pour la méthode update de mon recordset, je peux m'en sortir en faisant un update directement en base, parcontre si je ne peux pas boucler sur le recorset avec movenext, comment faire ??

Après m'être tiré les cheveux et en lisant les différents tutos de votre site, j'utilise un curseur serveur, sur une "requête simple" (une table et sans jointure), et oh miracle les deux methodes update et movenext fonctionnent.

Je fais donc le test avec une "requête plus complexe" (3 tables avec jointures), et là, pas de chance car ça plante, j'obtiens le message suivant : "la requete ne peut être mise à jour car la clause FROM ne contient pas un nom unique et simple de table"

Je me dis, ok, je vais donc faire moi même mon update directement en sql via un objet command. L'update se fait correctement, mais ça plante de nouveau sur le movenext, avec le même message...snif

Au moins je n'ai plus le message un peu flippant E_Fail

Pour info, les tables que j'utilise n'ont pas de clef unique...

Merci d'avance de me dire comment je peux m'en sortir...
louffi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2006, 15h47   #2
Rédacteur/Modérateur
 
Avatar de fadace
 
Homme Fabien Celaia
Administrateur de base de données
Inscription : octobre 2002
Messages : 3 779
Détails du profil
Informations personnelles :
Nom : Homme Fabien Celaia
Âge : 41
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Service public

Informations forums :
Inscription : octobre 2002
Messages : 3 779
Points : 8 124
Points : 8 124
Envoyer un message via ICQ à fadace Envoyer un message via Skype™ à fadace
La modification de vues est très (et justement) limitée. Commençez par mettre des clefs primaires et des intégrités référentielles à vos tables... ça aidera pas mal en cas d'update sur vue/requête.
__________________
Sr DBA Oracle / Sybase / MS-SQL / DB2 / Informix / Postgresql
Administrateur SAP
Mes articles

Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !
fadace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2006, 15h55   #3
Invité de passage
 
Inscription : avril 2006
Messages : 2
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 2
Points : 0
Points : 0
là n'est pas le problème :
Citation:
Envoyé par fadace
Commençez par mettre des clefs primaires à vos tables...
si je ne t'avais pas précisé cette information, que m'aurais-tu répondu ?

Imaginons, que je rajoute une clef incrémentale à ma table, tu m'assures que je n'aurais plu de pbme sur l'update et le movenext ?

de plus à chaque insert en base, il faudra via vb que je sois capable, par l'intermédiare de mon recodset, lorsque je fais addnew, d'incrementer automatiquement ma table ?
louffi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2006, 15h44   #4
Rédacteur/Modérateur
 
Avatar de fadace
 
Homme Fabien Celaia
Administrateur de base de données
Inscription : octobre 2002
Messages : 3 779
Détails du profil
Informations personnelles :
Nom : Homme Fabien Celaia
Âge : 41
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Service public

Informations forums :
Inscription : octobre 2002
Messages : 3 779
Points : 8 124
Points : 8 124
Envoyer un message via ICQ à fadace Envoyer un message via Skype™ à fadace
Ce n'est pas anodin. Un curseur est obligé de passer par une unicité de champ afin de ne pas se perdre si un bloc venait à bouger pendant la ballade du curseur.

C'est comme dans une table liée en MS-Access. Si l'outil ne trouve pas de PK, il en demande une ou refuste toute modif sur la table liée.

D'où l'existance en T-SQL du cursor for update ou for select !

Maintenand, il est clair que nous parlons d'un cluster côté client et pas serveur via ADO. Je ne dis pas que c'est la cause unique de votre problème,
mais que vous pouvez vous éviter pas mal de cas de bord en modélisant proprement...

Et l'existance d'une clé primaire dans une table, c'est le b-a-ba d'une modélsiation basique...
__________________
Sr DBA Oracle / Sybase / MS-SQL / DB2 / Informix / Postgresql
Administrateur SAP
Mes articles

Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !
fadace est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h48.


 
 
 
 
Partenaires

Hébergement Web