IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Recordset


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 54
    Par défaut Recordset
    Bonjour,

    J'ai un soucis au sein de l'appli que je suis en train de créer. Celui ci concerne la mise à jour et la consulation d'une info d'un Recordset.

    Mon recordset est ouvert en Keyset/lockPessimist avec un curseur coté serveur et fait appel à deux tables liée entre elles :

    RS_Contenant ->
    "SELECT Contenant.*,Element.Nom_Element FROM Element INNER JOIN Contenant ON Element.ID_Element=Contenant.Ref_Element WHERE Element.Type_Element=1 AND Contenant.Ref_Extraction=1".

    Dans une fonction, je modifie la valeur de RS_Contenant !Ref_Element vers un nouveau element que je viens de crée ( par exemple, il passe de 4 à 7, changeant implicitement Nom_Element de "HP1" à "HP3" ). Ensuite, dans une autre fonction, j'intérroge RS_Contenant !Nom_Element :
    J'ai vérifié, RS_Contenant pointe toujours sur le même enregistrement (j'ai controlé : le num auto est toujours le même) --> Comment cela se fait-il que RS_Contenant.nom_Element indique toujours l'ancien nom ? ( lorsque je relance l'application, et que la requete a été exécuté à nouveau, je n'ai plus de soucis).
    J'ai bien fait un RS_Contenant.Update après la modification de Ref_Element, mais ceci ne semble rien faire. Je ne peux pas faire .requery car je dois conservé le curseur à sa position actuelle.

    Merci pour votre aide.

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Par défaut
    c'est que un recordset n'est pas évolutif
    il faut forcer l'évolution

    interrogation
    modif
    nouvelle interrogation

    voir requery

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 54
    Par défaut Recorset
    Bonjour,

    J'ai finalement résolu mon problème en créant en 2ème recordset, en faisant attention de bien synchronisé les deux (c'est pas évident)

    Là je suis en train d'apprendre à comment utiliser un RS Hiérarchique, à priori, ça va me résoudre pas mal de soucis...

    Encore Merci

    TALERE

  4. #4
    Rédacteur
    Avatar de jacma
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 81
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 612
    Par défaut Re: Recorset
    Citation Envoyé par talere
    Là je suis en train d'apprendre à comment utiliser un RS Hiérarchique, à priori, ça va me résoudre pas mal de soucis...
    Le provider Data Shape facilite grandement l'accès aux données hiérarchiques. Tu peux trouver une bonne approche du sujet notemment dans le praticiel 'Accès aux données avec ADO' (adresse en signature).

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 54
    Par défaut
    Super ton praticiel ... il m'aide énormément, surtout pour pondre la requete grace au DataEnvironement ...

    A ce sujet, j'aurais une question :
    Au lancement de mon application, je peux demander à l'utilisateur quelle BDD utiliser ce qui ne me pose pas de problème lors de la 1ère connexion. Je mémorise ensuite ce nom dans le registre pour éviter de reposer la question à chaque démarrage.

    Je lui donne aussi la possibilité de changer cette base de donnée quand il le souhaite (Dans la cas ou son travail concerne une autre BDD). Mon soucis est que je n'arrive pas à redémarrer mes RS lié à mon DataEnvirronement. Voila ce que je fais :

    Après une boite de dialogue ouverture, voila ce que je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    If Acces_BDD.Cnx.State <> 0 Then Acces_BDD.Cnx.Close
    Acces_BDD.Cnx.Properties("Data Source") = Base_Access.Path
    Acces_BDD.Cnx.Open
    Du coté de mon DataEnvirronement, lors de chaque connection, je fais pointer mes RS mères.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Cnx_ConnectComplete(ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pConnection As ADODB.Connection)
     
    If rsSites.State = 0 Then rsSites.Open
    If rsListe_sites.State = 0 Then rsListe_sites.Open
    If rsListe_ateliers.State = 0 Then rsListe_ateliers.Open
     
    End Sub
    J'ai vérifié, il n'y a pas d'erreur de connection, les états de mes RS sont bien à 0, mais lorsque j'essaie de les ouvrir, voila ce que j'ai :
    "Impossible d'utiliser cette connexion pour effectuer cette opération. Elle est fermée ou non valide dans ce contexte."
    Qu'est-ce que j'ai oublié ?

    Merci,

    TALERE

  6. #6
    Rédacteur
    Avatar de jacma
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    612
    Détails du profil
    Informations personnelles :
    Âge : 81
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 612
    Par défaut
    Bonjour

    Il te faut redéfinir ton objet Command. Le code suivant fonctionne correctement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
      Dim rsAuthors As New Recordset
    With DataEnvironment1
      .Connection1.Close
      .Connection1 = "c:\didactdb\biblio2002.mdb"
      MsgBox .Connection1
      .Connection1.Open
      Dim mydecommand As New Command
      mydecommand.ActiveConnection = .Connection1
      mydecommand.CommandType = adCmdText
      mydecommand.CommandText = "SELECT * FROM Authors"
     
      Set rsAuthors.DataSource = mydecommand.Execute
     
      MsgBox rsAuthors.RecordCount
    Dans la mesure ou tu veux jouer avec les command, je pense que tu devrais tout faire par code et non utiliser le concepteur. On vois mieux ainsi ce qui se passe.

Discussions similaires

  1. [VB6]Joindre deux recordsets en un seul
    Par elifqaoui dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 11/06/2003, 21h06
  2. [VB6] générer un recordset qui n'est pas lier à un bdd
    Par damyrid dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 05/06/2003, 17h48
  3. [VB6] Sauvegarder la position dans un Recordset
    Par inotna2099 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 29/04/2003, 17h35
  4. [VB6] [BDD] Recordset et champ égal à Null
    Par Gr|ppen dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 07/03/2003, 10h00
  5. [ADO] Sauvegarde / lecture de recordset
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 20/09/2002, 16h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo