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 :

Fonction DELETE dans Bd ACCESS


Sujet :

VB 6 et antérieur

  1. #1
    Membre actif Avatar de petit rabot
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2010
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2010
    Messages : 236
    Points : 226
    Points
    226
    Par défaut Fonction DELETE dans Bd ACCESS
    Bonjour, je suis actuellement sur un projet en VB6 et une base de données ACCESS.
    J'arrive bien à insérer des données dans cette base (fonction INSERT) j'arrive aussi à les modifier (fonction UPDATE), mais je ne sais pas comment faire pour supprimer totalement une ou plusieurs ligne d'une ou plusieurs tables en fonction d'un critère.

    Voici un bout de code pour insérer des données, qui fonctionne sur mon projet:
    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
        'création de la connexion
            Set Cnx = New ADODB.Connection
        'définition de la chaine de connextion
            Cnx.ConnectionString = "Provider=Microsoft.jet.OLEDB.4.0;Data Source=" & App.Path & "\HistoMac.mdb;" & "Jet OLEDB:Database Password=" & motdepasse & ";"
        'ouvre la base de données
            Cnx.Open
     
        'création de la requète
            Set rst = New ADODB.Recordset
     
        'si la machine n'existe pas, on l'insère dans la base
            If TestNum_de_serie = False And TestNum_client = False Then
                'création de la requète insérer
                stSQL = "INSERT INTO Machines(Type_machine,Marque_machine,Mod_machine,Num_de_série,Num_client,Type_CN) VALUES('" & Replace(Combo1.Text, "'", "''") & "','" & Replace(UCase(Combo2.Text), "'", "''") & "','" _
                                            & Replace(UCase(Combo3.Text), "'", "''") & "','" & UCase(Text1.Text) & "','" & UCase(Text2.Text) & "','" & Replace(UCase(Combo4.Text), "'", "''") & "')"
                Debug.Print stSQL
                'exécution de la requète
                rst.Open stSQL, Cnx
            End If
    Auriez vous une piste à me proposer pour pouvoir supprimer une ou plusieurs lignes...
    Merci d'avance.
    Guillaume
    "Ce n'est pas parce que les choses sont impossibles qu'il faut les accepter."

  2. #2
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    Tout dépend de ta clé primaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    stSQL = "DELETE FROM Machines WHERE LaCle = '" & Valeur & "' "

  3. #3
    Membre actif Avatar de petit rabot
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2010
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2010
    Messages : 236
    Points : 226
    Points
    226
    Par défaut
    Bonjour pc75 et surtout merci pour ta réponse,
    cela fonctionne très bien pour une table ou je supprime une ligne entière en fonction d'un critère qui n'est pas en numéro auto. Le problème est que je dois supprimer aussi un ligne d'une autre table ou le critère de recherche est le numéro auto. Y a t-il une solution, ou dois je mettre d'autre critère?

    Merci
    "Ce n'est pas parce que les choses sont impossibles qu'il faut les accepter."

  4. #4
    Membre actif Avatar de petit rabot
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2010
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2010
    Messages : 236
    Points : 226
    Points
    226
    Par défaut
    Bonjour à tous, et merci à pc75, car son code fonctionne parfaitement.
    Voici ma solution si d'autre personne ont besoin.

    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
    Public Sub Delete()
        'recherche de l'IdMachine
            Set Cnx = New ADODB.Connection
            Cnx.ConnectionString = "Provider=Microsoft.jet.OLEDB.4.0;Data Source=" & App.Path & "\HistoMac.mdb;" & "Jet OLEDB:Database Password=" & motdepasse & ";"
            Cnx.Open
            Set rst = New ADODB.Recordset
            rst.Open "SELECT DISTINCT IdMachine FROM Machines WHERE Type_machine='" & Replace(Type_machine, "'", "''") & "' and Marque_machine='" & Marque_machine & "' and Mod_machine='" & Mod_machine & "' and Num_de_série='" & Num_de_serie & "' and Num_client='" & Num_client & "' ", Cnx
            While Not (rst.EOF)
                IdMachine = rst("IdMachine")
                rst.MoveNext
            Wend
            rst.Close
            Set Cnx = New ADODB.Connection
                Cnx.ConnectionString = "Provider=Microsoft.jet.OLEDB.4.0;Data Source=" & App.Path & "\HistoMac.mdb;" & "Jet OLEDB:Database Password=" & motdepasse & ";"
            Cnx.Open
     
            Set rst = New ADODB.Recordset
                stSQL = "DELETE FROM Data WHERE NumMachine = '" & IdMachine & "' "
            Debug.Print stSQL
            rst.Open stSQL, Cnx
     
            Set rst = New ADODB.Recordset
                stSQL = "DELETE FROM Machines WHERE Type_machine = '" & Replace(Type_machine, "'", "''") & "' and Marque_machine='" & Marque_machine & "' and Mod_machine='" & Mod_machine & "' and Num_de_série='" & Num_de_serie & "' and Num_client='" & Num_client & "' "
            Debug.Print stSQL
            rst.Open stSQL, Cnx
     
    End Sub
    Merci encore pour votre aide
    "Ce n'est pas parce que les choses sont impossibles qu'il faut les accepter."

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/06/2012, 19h54
  2. Fonction absente dans Access
    Par carrierevincent dans le forum Access
    Réponses: 12
    Dernier message: 19/12/2006, 09h17
  3. Fonction Erreur dans Access
    Par lito74 dans le forum Access
    Réponses: 1
    Dernier message: 15/09/2006, 15h33
  4. Utilisation fonction excel dans ACCESS: Ereur de compilation
    Par mat_lefebvre dans le forum Access
    Réponses: 2
    Dernier message: 22/03/2006, 10h44
  5. Fonction EstNull dans macro Access
    Par joker vb dans le forum Access
    Réponses: 5
    Dernier message: 13/01/2006, 15h55

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