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 access requete INSERT


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Designer API
    Inscrit en
    Octobre 2003
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Designer API

    Informations forums :
    Inscription : Octobre 2003
    Messages : 280
    Par défaut VB6 access requete INSERT
    Bonsoir à tous,

    je dois faire une requete INSERT vers une base ACCESS depuis VB6.
    J'ai donc créer un dataEnvironnement, ma requete, je l'execute.
    Ca marche, nickel.

    Mon problème, j'aimerais récuperer l'id(auto increment) de l'enregistrement qui viens d'etre créer. Qui serait l'equivalent de mysql_insert_id en PHP.

    J'ai rien trouvé sur google pour l'instant...

  2. #2
    Membre averti
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 22
    Par défaut
    Ne serait-il pas possible d'accéder aux enregistrements de ta table, puis d'aller chercher l'ID du dernier enregistrement (celui que tu viens de créer)?

    ... Probablement pas la meilleure méthode mais...

  3. #3
    Membre éclairé
    Homme Profil pro
    Designer API
    Inscrit en
    Octobre 2003
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Designer API

    Informations forums :
    Inscription : Octobre 2003
    Messages : 280
    Par défaut
    Jy es pensé aussi, seulement la base sera attaqué par plusieurs personnes donc j'aurais pas forcement l'id qui correspond à mon enregistrement

  4. #4
    Membre averti
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 22
    Par défaut Quelques idées
    Bon... alors, j'ai quelques idées qui pourraient t'aider

    Premièrement, ne pas gérer le problème en espérant qu'il ne se produira pas...

    Non, sérieusement...

    Je crois que j'ai trouvé une méthode plus ou moins efficace pour gérer cette "erreur".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    ' On déclare un tableau de chaine de caractère qui contiendra les
    ' valeurs que tu veux insérer dans ta table
    Dim strChaines(n) As String ' Je ne suis pas sur de toute la syntaxe,
    ' présentement, je n'ai pas VB6
    ' Pour la boucle
    Dim verif As Boolean
    ' Pour récupérer le numéroAuto de la table
    Dim indexTable As Integer
    ' Puis on déclare 2 recordsets
    Dim rst1 As RecordSet
    Dim rst2 As RecordSet
    ' Et finalement, une chaine de requete
    Dim maRequete As String
     
    ' Initialisation
    verif = False
     
    strChaines(0) = "maValeur1"
    strChaines(1) = "maValeur2"
    ...
     
    ' Tu effectues ta première requête en utilisant la chaine de connexion
    maRequete = "SELECT * FROM tablePourLeInsert"
    rst1.Open maRequete 'Je ne me rappelle plus trop la syntaxe
    ' Ensuite tu fais ton INSERT en te servant des champs entrés dans le tableau
    ' Cela je ne me rappelle vraiment plus la syntaxe...désolé
    ' Puis tu effectues ta requête 2 qui est exactement la même que la 1 mais
    ' après le INSERT
    rst2.Open maRequete 'Je ne me rappelle plus trop la syntaxe encore
     
    ' On se déplace sur les derniers enregistrements des 2 requêtes
    rst1.MoveLast
    rst2.MoveLast
     
    ' On vérifie l'écart entre les index (numéroAutos de la table)
    If(rst2(0) - rst1(0) = 1) Then ' Alors aucune requête n'a été effectuée entre
    ' temps
        indexTable = rst2(0)
    Else ' C'est là qu'il peut y avoir un problème
        While (verif = False) 
            If (rst2(0) = strChaines(0) And rst2(1) = strChaines(1)) Then 
            ' And ... pour tous les champs
            ' C'est sur que tu peux remplacer par une boucle... je viens d'y
    ' penser... tu te sers d'un compteur de champs correspondants...
                verif = True
                indexTable = rst2(0)
            Else
                ' Il ne faut pas négliger la possibilité que plusieurs INSERT aient été
    ' faits entre tes requêtes
                rst2.MoveBack
            End If
        Wend
    End If
    ...
    ' D'autre code que tu voudrais p-e effectuer
    Bon... c'est l'idée générale de la méthode simple et +/- efficace que j'ai trouvée. Il se peut qu'il y ait des erreurs, je ne suis pas sur un poste ou je peux tester mon code... Alors considère le comme un algo approximatif.

    L'autre concept est plus complexe et je ne sais pas si on peux le reproduire dans un projet VB. Il s'agit de créer une section critique comme dans les systèmes d'exploitation.

    Une section critique fait que plusieurs opérations n'ont pas le choix d'être effectuées une à la suite de l'autre et sans interruptions... Cela règlerait ton problème car tu n'aurais qu'à faire ton INSERT puis ton SELECT en tant que section critique... Sauf que comme je l'ai dis... c'est p-e impossible...

    Bien voilà!

Discussions similaires

  1. [ODBC] ODBC Access+ requete insert dans boucle while
    Par gpaca dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 17/03/2010, 16h41
  2. [VB.Net/Access] requete insert
    Par youssef619 dans le forum VB.NET
    Réponses: 2
    Dernier message: 19/11/2008, 21h54
  3. VB6 Access requete Date heure
    Par zzoohh dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 16/01/2008, 09h26
  4. [VB .NET]Requete Insert vers une BD access
    Par Skunk007 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 08/04/2006, 18h17
  5. [VBnet][Access] Requete imbriquee "insert + select"
    Par Fab62_ dans le forum Windows Forms
    Réponses: 3
    Dernier message: 06/03/2006, 13h58

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