Pb de recordset avec sqlserver2000 et vb6

hades_lance Messages postés 24 Date d'inscription dimanche 15 août 2004 Statut Membre Dernière intervention 6 juillet 2005 - 31 août 2004 à 21:58
korbene Messages postés 21 Date d'inscription mercredi 3 décembre 2003 Statut Membre Dernière intervention 24 janvier 2005 - 8 déc. 2004 à 13:00
Salut,
je me suis connecte a une base sqlserver 2000 avec le code vb6 suivant:
dim dbconnection as new connection
dbconnection.open "Provider=sqloledb;database=mabase","sa","mathilde"
puis je cree des recordset:
dim rs as new recordset
...
et tout marche excepte que mes recordset se comporte n'importe comment:
-un test genre rs(0)<>null me retourne vrai alors que rs(0) ne contient rien (champs non renseigne;
-et surtout les methodes movelast et cie me reourne tjrs -1.
Est ce que qqn a deja eu ces pbs ou voit d'ou ils pourraient venir?
Merci d'avance pour votre aide
A voir également:

6 réponses

cs_frop01 Messages postés 1352 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 19 novembre 2008 2
31 août 2004 à 23:05
Est-ce que tu ouvert ta table ou tu n'as pas collé tout le code ??

rs.open "table"

:-p [mailto:cyberscorp2004@msn.com MSN] :big) [mailto:frop01@yahoo.fr YAHOO] >:)
0
hades_lance Messages postés 24 Date d'inscription dimanche 15 août 2004 Statut Membre Dernière intervention 6 juillet 2005
1 sept. 2004 à 00:14
Salut,
j'ouvre ma table de cette facon:
rs.open "ma_table","dbconnection".
J'en profite pour ajouter une question:
est ce due au fait que je n'utilise pas ado,adodb ou dao?
et puis c'est quoi la definition exact de ces 3 termes : une interface avec la bd, une methode d'acces aux donnees ... ?
Merci encore
0
cs_PhilippeE Messages postés 437 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 10 août 2010 2
1 sept. 2004 à 10:17
1. Pour tester l'absence de valeur dans un champ,
il ne faut pas faire rs(0) <> Null
mais
Not IsNull(rs(0))


2. Pour déterminer le nombre d'enregistrement d'une table, 2 méthodes :
- MoveLast suivi de RecordCount sur le recordset
- Utiliser une requête Select Count ...

3. Lorsque tu ouvres ton recordset, tu écris
rs.Open "ma_table", "dbconnection"

la bonne formule est censée être
rs.Open "ma_table", dbconnection

(pas de guillemets sur l'objet ADODB.Connection

Personnellement je préfère utiliser cette forme
rs.Open "SELECT * FROM ma_table", dbconnection, adOpenDynamic, adLockOptimistic

Si je dois faire des modifications
0
cs_frop01 Messages postés 1352 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 19 novembre 2008 2
1 sept. 2004 à 14:43
Pour ta question sur ADO DAO ....


Principales différences
Les fonctions de DAO reposent sur trois modèles d'objets distincts dans ADO. Il s'agit d'ADO (ADODB), d'ADOX et de JRO. Les fonctions de DAO ont été réparties entre ces trois modèles car la plupart des applications n'en utilisent effectivement qu'une seule partie. Cette division des rôles permet de réduire les temps système en évitant de charger inutilement la mémoire des applications. Les sections suivantes présentent les principales caractéristiques de ces trois modèles d'objets.

ADO : Manipulation des données

ADO permet à vos applications clientes d'accéder à des données et de les manipuler avec tout type de fournisseur OLE DB. Les objets contenus dans ADO assurent la connection à une source de données, ainsi que la lecture, l'ajout, la mise à jour ou la suppression de données.

L'objet connection d'ADO sert à définir une session pour l'utilisateur d'une source de données spécifique. En revanche, dans DAO, c'est l'objet Workspace qui permet de définir la session d'un utilisateur, et l'objet Database qui définit la source de données.

L'objet Command d'ADO est similaire à l'objet QueryDef de DAO, car tous deux servent à exécuter une requête SQL sur une source de données. De même, l'objet Recordset peut être utilisé dans ADO comme dans DAO pour visualiser le contenu d'une table ou les résultats d'une requête SQL.

ADOX : Définition et sécurité des données
Le modèle ADOX contient des objets qui servent à définir des données (telles que les tables, les vues et les index). Ces objets servent également à créer et à modifier des utilisateurs et des groupes. Avec ADOX, un administrateur peut contrôler la structure de la base de données. Il peut également accorder et retirer aux utilisateurs et aux groupes l'autorisation d'accès aux objets.

L'objet Catalog contient les collections de définition des données (Tables, Procedures et Views) ainsi que les collections de sécurité (Users et Groups). En revanche, dans DAO, c'est l'objet Database qui contient les collections de définition des données, et l'objet Workspace qui contient les collections de sécurité. Chaque objet Catalog est associé avec un seul objet connection alors que dans DAO, un objet Workspace peut contenir plusieurs objets Databases.

Les objets Table, Index et Column d'ADO sont à peu près équivalents aux objets TableDef, IndexDef et Field de DAO. Chacun d'entre eux dispose également d'une collection Properties standard dans ADO.

JRO : Réplication

Le modèle JRO contient des objets, des propriétés et des méthodes permettant de créer, de modifier et de synchroniser des réplicas. Il est spécifiquement conçu pour être utilisé avec le fournisseur Microsoft Jet. Contrairement à ADO et ADOX, JRO ne peut pas fonctionner avec d'autres sources de données que les bases Microsoft Jet.

Le principal objet du modèle JRO est l'objet Replica. L'objet Replica sert à créer de nouveaux réplicas, à récupérer et à modifier les propriétés d'un réplica existant, et à synchroniser les modifications effectuées avec d'autres réplicas. En revanche, dans DAO, ces tâches sont effectuées par l'objet Database.

JRO contient également un objet appelé JetEngine qui assure deux fonctions spécifiques du moteur de base de données Microsoft Jet : le compactage de la base et le rafraîchissement des données à partir du cache de la mémoire.



Pour différencier un exemple d'un autre trouver dans site . et pour savoir avec quel méthode, regardez la déclaration du variable de connection à la base

ADO par Connection et
DAO pas Database ou workspace et
ADOX par Catalog
JRO par Replica

:-p [mailto:cyberscorp2004@msn.com MSN] :big) [mailto:frop01@yahoo.fr YAHOO] >:)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
hades_lance Messages postés 24 Date d'inscription dimanche 15 août 2004 Statut Membre Dernière intervention 6 juillet 2005
1 sept. 2004 à 20:54
Salut,
la methode IsNull marche bien, je t'en remercie Philippe.
Merci frop pour les explications que tu m'as fournies.
Cependant la methode recorcount me retourne -1 alors que j'ai plusieurs enregistremnt dans ma table, et la methode movelast echoue.
Apparemment je n'ai pas utilise de adodb.recordset, je me demande alors quels types de recordset ce sont et pkoi ces deux methodes echoues lamentablement?
0
korbene Messages postés 21 Date d'inscription mercredi 3 décembre 2003 Statut Membre Dernière intervention 24 janvier 2005
8 déc. 2004 à 13:00
Slt Il me semble que pour ton recordcount si tu effectue un movelast puis un movefirst il devrait te donné le resultat attendu sinon cela peut provenir adOpenDynamicj'ai pu remarqué que si tu m'est adOpenStatic le recordcount fonctionne mieu
Cependant je ne peu l'expliqué
0
Rejoignez-nous