PB Recordset

Résolu
cs_antonio75 Messages postés 38 Date d'inscription mercredi 11 avril 2007 Statut Membre Dernière intervention 18 mai 2007 - 12 avril 2007 à 15:07
cs_antonio75 Messages postés 38 Date d'inscription mercredi 11 avril 2007 Statut Membre Dernière intervention 18 mai 2007 - 16 avril 2007 à 17:38
Salut a tous,

voila, j'ai un petit pb pour récupérer des données dans une base access via VB6. La base se trouve sur un serveur. Voila mon code :

Option Explicit


Public Sub Connection()


Dim CoLilas As New ADODB.Connection
Dim Provider As String
Dim connexion As String


'*** connexion Fichier Base Access 2000,XP
Provider = "Microsoft.JET.OLEDB.4.0"
connexion = "[file://\\Serveur03\base1.mdb \\Serveur03\base1.mdb]"


'**** Connexion à la Base de données
With CoLilas
  .Provider = Provider
  .ConnectionString = connexion
  .ConnectionTimeout = 6
  .CommandTimeout = 60
  .Open
End With


End Sub




Private Sub Correspondance_Click()
Dim cmd As ADODB.Command
Dim rst As ADODB.Recordset


Call Connection


Set cmd = New ADODB.Command
Set rst = New ADODB.Recordset


cmd.CommandText = "SELECT nom FROM table1"
Set rst = cmd.Execute


End Sub

La, j'aimerais récuperer le résultat de ma requete dans un textbox (la je sais pas trop comment, j'ai vu des exemples pour les listbox mais pour les text) mais ca plante, erreur3709, Cette operation n'est pas autorisée sur un objet ayant une reference vers une connexion non valide ou fermée. Si quelqun pouvait m'aider ca serait cool...merci d'avance.

++, Antoine.

9 réponses

cs_antonio75 Messages postés 38 Date d'inscription mercredi 11 avril 2007 Statut Membre Dernière intervention 18 mai 2007
16 avril 2007 à 17:38
Finalement, j'ai reussi a résoudre mon probleme, voici le code, un grand merci a vous tous pour votre aide.

Option Explicit
Dim rst As New ADODB.Recordset

Private Sub Connect_Click()
Dim Connexion As New ADODB.Connection
Dim Provider As String
Dim Connect As String


'*** connexion Fichier Base Access 2000,XP
Provider = "Microsoft.JET.OLEDB.4.0"
Connect = "[file://\\Serveur03\ma_base.mdb \\Serveur03\ma_base.mdb]"


'**** Connexion à la Base de données
With Connexion
  .Provider = Provider
  .ConnectionString = Connect
  .ConnectionTimeout = 6
  .CommandTimeout = 60
  .Open
End With


Set rst = New ADODB.Recordset
rst.Open "SELECT champ FROM table1", Connexion, adOpenDynamic, adLockOptimistic
'Ensuite on récupère la valeur du champ dans la textbox
Champ.Text = rst("Champ")
End Sub
3
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
12 avril 2007 à 15:26
Bonjour,
je ne sais pas si ça a un rapport mais tu utilises
une propriété pour désigner une variable:
Dim Provider As String
  CoLilas.Provider = Provider
0
cs_antonio75 Messages postés 38 Date d'inscription mercredi 11 avril 2007 Statut Membre Dernière intervention 18 mai 2007
12 avril 2007 à 15:30
Je pense pas, j'ai l'impression que j arrive a me connecter parce quand je met un path bidon, j'ai un message d'erreur comme quoi la bd est introuvable, message que je n ai pas qd je mets le bon path. Le pb arrive qd j essaie de recuperer les donnes avec mon recordset.
0
cs_jperre Messages postés 268 Date d'inscription lundi 9 janvier 2006 Statut Membre Dernière intervention 19 janvier 2017 2
12 avril 2007 à 15:36
Le problème vient de la mauvaise utilisation de l'objet Command de ADODB, cet objet est utilisé pour exécuter des requêtes action telles que :UPDATE, DELETE, INSERT,...Pour afficher le contenu d'une requête sélection en vue de récupérer la valeur d'un champ dans un contrôle tel qu'une textbox, il faut le code suivant :
Dim rst As ADODB.Recordset
Set rst=Colilas.OpenRecordset("SELECT nom FROM table1")
If Not rst.EOF Then rst.MoveFirst
Ensuite on récupère la valeur du champ nom dans la textbox
MaTextBox.Text=rst("nom")
rst.Close

A tester!...
0

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

Posez votre question
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
12 avril 2007 à 15:40
juste après
cmd.CommandText = "SELECT nom FROM table1"
cmd.Open

pour ouvrir la connection
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
12 avril 2007 à 15:51
ou alors
Set rst = New ADODB.Recordset
rst.CursorLocation = adUseClient
rst.LockType = adLockOptimistic
rst.Open(cmd, "SELECT nom FROM table1")
0
HUGOFLASH Messages postés 27 Date d'inscription vendredi 10 octobre 2003 Statut Membre Dernière intervention 5 juin 2007
12 avril 2007 à 15:51
Bonjour,
Ton problème vient de la portée de la variable Colilas<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>


Elle est connu que dans la procédure Connection().


Déplace ta déclaration de ta variable "Dim CoLilas As New ADODB.Connection"

au niveau module et rend la public

Public Colilas as New ADODB.Connection

Ps: Moi personnellement j'évite de déclarer une variable avec New

Public Maconnection as ADODB.Connection

'quand je veux l'utiliser
Set Maconnection = New ADODB.Connection

'quand j'en ai plus besoin
Set Maconnection=Nothing


@+

Hugoflash
0
cs_antonio75 Messages postés 38 Date d'inscription mercredi 11 avril 2007 Statut Membre Dernière intervention 18 mai 2007
12 avril 2007 à 15:52
J ai integrer ton code et ca a l air de le faire mais maintenant j ai une autre erreur (3001) les arguments sont de types incorrects, en dehors des limites ou en conflit les uns avec les autres.
Mais bon merci, ca m a deja avancé, il faut prendre les bugs les uns apres les autres...
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
13 avril 2007 à 08:56
J'ai eu le meme type d'erreur une fois. En fait, j'avais fais un copier coller d'une chaine de connexion complete. Et pour voir celles qui étaient suffisantes, j'enlevais des paramètres pour isolé celles que je cherchais.

J'en déduis donc que tu as des paramètres qui en appellent d'autres qui ne sont pas présents. Donc, il faut que tu revois ta chaine.
0
Rejoignez-nous