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 :

[VB6] Mise à jour d'un enregistrement d'un table d'une BD


Sujet :

VB 6 et antérieur

  1. #1
    Membre régulier Avatar de jfdmagic
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    181
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 181
    Points : 124
    Points
    124
    Par défaut [VB6] Mise à jour d'un enregistrement d'un table d'une BD
    Bonjour à tous

    Actuellement, pour mettre à jour une ligne d'une table de ma Base, je récupère la valeur de ma clé :
    elle est numérique, entier et sans doublons avec incrément automatique.

    Ainsi, pour chacune de mes lignes, l'index de la ligne est égal à la valeur de ma clé -1 et je n'ai plus qu'à utiliser la méthode Move (j'espère que tu comprends maintenant, hein ThierryIAM ? )

    Le seul problème de cette méthode, c'est qu'il ne faut pas qu'il y ait des suppressions dans la base, puisque du coup, le nombre de ligne n'est plus relié à la valeur ma clé par cette relation...

    Je suppose qu'il existe beaucoup mieux comme méthode et qui est surtout indépendant...

    Ma question donc : comment puis-je donc placer le curseur dans ma table à la ligne où je veux selon la valeur de ma clé (qu'elle soit numérique ou non pour généraliser) ? cela en Méthode ADO une fois que j'ai ouvert mon Recordset comme il suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Set MaTable = New RecordSet
    NomDeLaTable = "Table"
    MaTable.Open NomDeLaTable, MaBase, adOpenStatic, adLockPessimistic
    'Je sais que je veux aller à la ligne où ma clé = 5 par ex'
    'Je modifies'
    MaTable.Update
    MaTable.Close
    Set MaTable = Nothing
    Merci à vous =D

  2. #2
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Que veux tu faire ? Aller au troisième enregistrement de ta base de donnée par exemple ou aller à l'enregistrement qui a pour clé la valeur 3 ?

  3. #3
    Membre régulier Avatar de jfdmagic
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    181
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 181
    Points : 124
    Points
    124
    Par défaut
    aller à la ligne où ma clé = 3

    avant, j'utilisais, comme je l'ai expliqué le numéro de la ligne... mais dans certains cas, ce n'est pas valable.

    Je pense que l'on peut utiliser une boucle While mais je me demande s'il n'existe pas une méthode plus rapide ( à l'instar de la méthode Move)

    cela ressemblerait à ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    While Not (MaTable![clé]=valeur recherchée)
    MaTable.MoveNext
    Wend
    j'espère avoir été clair dans mes propos : n'hésitez pas à me demander des précions

  4. #4
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Tu peux remplir un Recordset avec le seul enregistrement qui t'interesses, par SELECT et tu le modifes. Ca ne pourrait pas aller ?

  5. #5
    Membre régulier Avatar de jfdmagic
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    181
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 181
    Points : 124
    Points
    124
    Par défaut
    Pas bête du tout... je n'avais pas pensé à ça... c'est vrai que vu que je connais la valeur de la clé de la ligne à modifier, je peux faire un SELECT avec une close WHERE derrière...

    Je vais tester et voir ce que ça donne.

  6. #6
    Membre régulier Avatar de jfdmagic
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    181
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 181
    Points : 124
    Points
    124
    Par défaut
    j'ai honte...

    c'était tellement simple que je suis passé à côté...

    Voici le code pour faire profiter tout le monde :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Set MaTable = New RecordSet
    MaRequete = "SELECT * FROM Table WHERE Table.Clé = " & valeur de la clé
    MaTable.Open MaRequete, MaBase, adOpenStatic, adLockPessimitic
    'On modifie...'
    MaTable.Update
    MaTable.Close
    Set MaTable = Nothing
    Merci de ton aide OhMonBato !

    problème

  7. #7
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    Citation Envoyé par jfdmagic Voir le message
    bonjour,

    alors pour modifier ta table, il te faut récupérer la valeur de ta clé.

    tu la stockes dans une variable qui va bien puis

    pour ouvrir ta table à l'enregistrement concerné et modifier, tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    'sous une procédure datagrill ClickItem'
    'une fois ta table ouverte'
    MaTable.Move(clé-1)
    'Mise à jour'
    MaTable.Update
    Bonne continuation =)
    ce n'est pas forcément de très bon gout mais l'intéressé comprendra

  8. #8
    Membre régulier Avatar de jfdmagic
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    181
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 181
    Points : 124
    Points
    124
    Par défaut




    =D

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [1.x] [crud] erreur lors de la mise à jour d'un enregistrement
    Par Mitaka dans le forum Symfony
    Réponses: 3
    Dernier message: 13/06/2008, 12h46
  2. Réponses: 0
    Dernier message: 19/02/2008, 12h35
  3. Mise à jour d'un enregistrement
    Par yagrasdemonde dans le forum Access
    Réponses: 6
    Dernier message: 08/03/2007, 23h32
  4. [D7][MySQL4.11][Débutant] Mise à jour d'un enregistrement
    Par birdytech dans le forum Bases de données
    Réponses: 1
    Dernier message: 29/01/2007, 10h53
  5. Mise à jour d'un enregistrement
    Par THkiller dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 28/08/2006, 15h36

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