Vb6 et access [Résolu]

Signaler
Messages postés
6
Date d'inscription
mercredi 25 avril 2007
Statut
Membre
Dernière intervention
26 juillet 2007
-
Messages postés
2
Date d'inscription
mardi 7 août 2007
Statut
Membre
Dernière intervention
8 août 2007
-
salut, g un problème lors d'un affichage de données extraites d'une bd access
Public str As String
Public var As Integer
Public rs As New ADODB.Recordset
Public cmd As New ADODB.Command
Public cn As New ADODB.Connection
cn.Mode = adModeReadWrite
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = C:\Documents and Settings\siege\Bureau\stage2007\onas97.mdb;Persist Security Info= false "
cn.Open

Private Sub Form_Load()
str = "select * from secteur "
rs.Open str, cn
Set mshfg1.DataSource = rs 'mshfg1=MSHFlexGrid
rs.Close
End Sub


le resultat ne donne que la première ligne.
merci

11 réponses

Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
13
Salut,

En complément essaye aussi cela :

Rs.CursorLocation = adUseClient
Rs.Open Str, Cn, adOpenDynamic, adLockPessimistic

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Messages postés
6
Date d'inscription
mercredi 25 avril 2007
Statut
Membre
Dernière intervention
26 juillet 2007

Private Sub Command1_Click()
str "select * from reseau where id_sec " & mshfg1
rs.CursorLocation = adUseClient
rs.Open str, cn
Set mshfg2.DataSource = rs
rs.Close
End Sub

merci bien voilà ce ki manke "rs.CursorLocation = adUseClient"
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
13
Salut,

Regarde du côté de :

MoveLast, MoveNext, MovePrevious, MoveFisrt.....

En utilisant ton Rs :

Rs.MoveLast

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
3
Salut, deja, c'est super dur a lire ton code.

Ensuite, pour connaitre le nombre d'enregistrement de ton recordset, tu peux faire :
Msgbox rs.RecordCount
Si tu n'as qu'un enregistrement au lieu de XXX (faut etre sur que la table secteur de stage2007\onas97.mdb contient plus d'un enregistrement), tu pourras le voir sans ton msflexgrid.

Pour la cause, peut etre est il necessaire de préciser les autres arguements de la méthode Open de ton recordset.

rs.Open str, cn , adOpenDynamic, adLockOptimistic
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
3
Salut, Exploeur, pourquoi un MoveLast ?

C'est nécessaire pour que tous les enregistrements soient pris en compte ?
Messages postés
6
Date d'inscription
mercredi 25 avril 2007
Statut
Membre
Dernière intervention
26 juillet 2007

Private Sub Form_Load()
str = "select * from secteur "
rs.Open str, cn
rs.MoveFirst
If Not rs.EOF Then
Set mshfg1.DataSource = rs
End If
rs.Close
End Sub

erreur : impossible d'acceder aux donnees, les parametres de sources de donnees doivent etre incorrecte ou la fonctionnalités est peut être limitée.
de même en essayant .movelast
Messages postés
6
Date d'inscription
mercredi 25 avril 2007
Statut
Membre
Dernière intervention
26 juillet 2007

msgbox rs.recordcount
> -1 alors ke g 2 lignes dans la table
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
13
Salut Nicko11,

Non, ce n'est que pour donner des "pistes" à chercher avec ces instructions, en tappand dans google, tu tombes sur des explications, qui à un moment ou à un autre, il en aura besoin....

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Messages postés
797
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
23 février 2011
5
Ca te retourne -1 sans doute parce que, comme dans le bout de code que tu nous dnones, tu ne précises pas le curseur, et que le curseur par défaut ne supporte pas RecorCount ?

J'ai la flemme d'écrire, donc, copier/coller de ce site http://faq.vb.free.fr/index.php?question=98,

Pourquoi la propriété RecordCount de mon Recordset me retourne toujours -1 ?
C'est que tout simplement le type de curseur que vous avez choisi ne supporte pas la propriété RecordCount. Seuls les curseurs de type "static" et "keyset" permettent de connaître le nombre d'enregistrements d'un recordset. Or par défaut ADO emploie un curseur côté-serveur de type "en avant seulement" (forward only).

Molenn
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
3
Essaies ceci:

rs.Open str, cn , adOpenDynamic, adLockOptimistic

ou encore

rs.Open str, cn , adOpenKeyset, adLockOptimistic
Messages postés
2
Date d'inscription
mardi 7 août 2007
Statut
Membre
Dernière intervention
8 août 2007

Une tache que j'ai cherché mais ss résultat:
quand je tape

Private Sub Form_Load()
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;data source=d:\App\CarriereK_be.mdb"



Set cmd = New ADODB.Command
With cmd
    .ActiveConnection = cn
    .CommandText = "select  Raison social from client"
    .CommandType = adCmdText
End With




Set rs = New ADODB.Recordset
rs.Open cmd, cn, adOpenKeyset, adLockOptimistic
Text9 = rs.RecordCount
While Not rs.EOF
    List1.AddItem rs(0)
    rs.MoveNext
Wend
End Sub

Le compilateur me donne le message suivant:

Erreur d'execution '3707'  Impossible de modifier la propriété ActiveConection d'un objet Recordset avec un objet Commande comme source
SVP pourriez-vous me donner des propositions ?et Merci