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 :

Vraiment besoin d'aide pour faire un simple INSERT INTO je deviens totalement DINGO


Sujet :

VB 6 et antérieur

  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 63

    Informations forums :
    Inscription : Décembre 2004
    Messages : 95
    Par défaut Vraiment besoin d'aide pour faire un simple INSERT INTO je deviens totalement DINGO
    Bonjour, me revoilà avec mon insert into

    J'ai créé une table "Personnes" avec un seul champ nommé Noms de type texte court (non inedexé et doublons autorisés)
    et IMPOSSIBLE d'y inserer ne fut ce qu'un enregistrement ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    Public Sub TEST()
      Dim tmp As String
      Dim Rst As Recordset
      Dim strSQL As String
      Dim BD_Path, strFileName, strPass As String
      BD_Path = App.Path & "\MABASE.mdb"
       Set DB = OpenDatabase(BD_Path, False, False)
       strSQL = "INSERT INTO Personnes ( Nom) values ('moi')"  >>>   strsql contient : "INSERT INTO Personnes ( Nom) values ('moi')"
      Set Rst = DB.OpenRecordset(strSQL, dbOpenDynaset)
     
    End Sub

    Nom : erreur sql.png
Affichages : 108
Taille : 5,1 Ko

  2. #2
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 63

    Informations forums :
    Inscription : Décembre 2004
    Messages : 95
    Par défaut
    Désolé, faute de frappe, le champ est bien "nom" sans le S...

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 537
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 537
    Par défaut
    ton fichier a été enregistré ?
    et sauf erreur de ma part, OpenRecordSet ne s'utilise pas avec une requête INSERT
    il faut plutôt utiliser DB.Execute(sqlString)

    Le recordSet avec un SELECT * FROM Personnes te permet d'ajouter des éléments avec les méthodes de recordset (addnew, etc)
    https://learn.microsoft.com/en-us/of...new-method-dao

    Si tu utilises la même méthode dans ton autre sujet(a priori c'est le cas, vu son message #6 sur lequel je n'ai pas tilté), cette réponse te sera aussi utile.

  4. #4
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 63

    Informations forums :
    Inscription : Décembre 2004
    Messages : 95
    Par défaut
    ok merci, j'essayera cette solution demain première heure et merc d'avance
    Bonne soirée

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 63

    Informations forums :
    Inscription : Décembre 2004
    Messages : 95
    Par défaut
    Je n'ai pas pu attendre demain mais alors là, je n'ycomprends plus rien du tout

    Revenons si tu veux bien à ma BD avec une table NOM qui contient un seul champ qui est NOM de type texte court
    et le lien de microsoft ne m'a pas vraiment éclairé (loin de là)

    Comment je fais ?
    Juste pou rentrer un nom ?

    ps mes questions sont con je sais mais suite à un AVC j'ai perdu pas mal de connaissances et j'essaye de revenir à la normale ce qui est frustrant et te dis pas combien de pc ont dejà
    étés à la poubelle mais ils insistent pour que je persévère

    Si tu as la patience, pourais tu me fournir un exemple avec 2 champs dans la table "historique"

    DATE format date genéral
    Montant type single avve 2 decimales
    et la date devrait etre NOW

    D'avance merci de ta patience et ton aide

    Avant cette merde, j'étais senior analyste programmeur et là, je sais à peine manger seul

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 537
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 537
    Par défaut
    Si tu veux utiliser le RecordSet, ça fonctionnerai comme ça:
    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
    Dim tmp As String
      Dim Rst As Recordset
      Dim strSQL As String
      Dim BD_Path, strFileName, strPass As String
      BD_Path = App.Path & "\MABASE.mdb"
      Set DB = OpenDatabase(BD_Path, False, False)
      strSQL = "SELECT * FROM Personnes"
      Set Rst = DB.OpenRecordset(strSQL, dbOpenDynaset)
      With Rst
          .AddNew
          !NOM="moi"
          .Update
      End With
      ...
      Rst.Close
      DB.Close
    Sinon avec des requêtes SQL, ça devrait être comme ça (si je ne me trompe pas trop)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim tmp As String
      Dim Rst As Recordset
      Dim strSQL As String
      Dim BD_Path, strFileName, strPass As String
      BD_Path = App.Path & "\MABASE.mdb"
       Set DB = OpenDatabase(BD_Path, False, False)
       strSQL = "INSERT INTO Personnes ( Nom) values ('moi')"  >>>   strsql contient : "INSERT INTO Personnes ( Nom) values ('moi')"
       DB.Execute(strSQL)
       ...
       DB.Close

  7. #7
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 130
    Par défaut
    Salut chelguera

    Un petit outil pour faire des essais de rédactions
    BDs ACCESS, rédiger la requête de connexion, la requête d’ouverture de table, visualiser le résultat.
    Cela date, dernière mise à jour 3 juillet 2020, mais fonctionne toujours
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  8. #8
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 585
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 585
    Billets dans le blog
    67
    Par défaut
    Bonjour,

    Citation Envoyé par umfred Voir le message
    Si tu veux utiliser le RecordSet, ça fonctionnerai comme ça:
    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
    Dim tmp As String
      Dim Rst As Recordset
      Dim strSQL As String
      Dim BD_Path, strFileName, strPass As String
      BD_Path = App.Path & "\MABASE.mdb"
      Set DB = OpenDatabase(BD_Path, False, False)
      strSQL = "SELECT * FROM Personnes"
      Set Rst = DB.OpenRecordset(strSQL, dbOpenDynaset)
      With Rst
          .AddNew
          !NOM="moi"
          .Update
      End With
      ...
      Rst.Close
      DB.Close
    Sinon avec des requêtes SQL, ça devrait être comme ça (si je ne me trompe pas trop)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim tmp As String
      Dim Rst As Recordset
      Dim strSQL As String
      Dim BD_Path, strFileName, strPass As String
      BD_Path = App.Path & "\MABASE.mdb"
       Set DB = OpenDatabase(BD_Path, False, False)
       strSQL = "INSERT INTO Personnes ( Nom) values ('moi')"  >>>   strsql contient : "INSERT INTO Personnes ( Nom) values ('moi')"
       DB.Execute(strSQL)
       ...
       DB.Close
    Oui, tout ça fonctionne bien avec une référence à la librairie DAO (sous Excel/Access etc.), mais là en VB il doit bloquer sur OpenDatabase.

    Apparemment en VB 6 ou VBScript on parle surtout d'utiliser ADO comme proposé. je n'ai pas trouvé d'exemples avec DAO qui est plus simple.

    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  9. #9
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 537
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 537
    Par défaut
    il y a un tuto pour l'utilisation d'ADO sur Dev https://drq.developpez.com/vb/tutoriels/ADO/

  10. #10
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 63

    Informations forums :
    Inscription : Décembre 2004
    Messages : 95
    Par défaut
    Merci pour tout, j'essayera la dolution 1 avec addnew vu que les "inser into" je les ai écrits à toutes les sauces et je n'y crois plus.( en BBQ, en suchis et même en purée ....
    Quand je faisais php c'était simple...mais bon les temps changent.

    Je ne manquerai pas de t'informer en retour des résultats obtenus avec "addnew"

    Un grand merci pout tout et espérons que j'y arrive enfin.

    Bonne soiréee

  11. #11
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 585
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 585
    Billets dans le blog
    67
    Par défaut
    Ah oui désolé, "opération non valide", j'avais pas vu le message d'erreur . Donc la référence à DAO doit y être..
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  12. #12
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 63

    Informations forums :
    Inscription : Décembre 2004
    Messages : 95
    Par défaut
    Bonsoir, je n'ai pas eu le temps de m'occuper de programmer, je me suis choppé unr crève royale (vu le temps } qu'on a pour le moment....
    mais dès que cela ira mieux je m'y remets et te tiens au courant car après avoir lu tes com's je pense que l'on touche au but.
    Bien à toi

  13. #13
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 63

    Informations forums :
    Inscription : Décembre 2004
    Messages : 95
    Par défaut
    Bonjour et merci de ton aide très précieuse !!!
    J'ai suivi tes conseils d'utiliser addnew et non pas insert into et ça fonctionne du coup, j'ai essayé avec le champ date et surprise pas besoin de la formater un 'NOW' est accepté

    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
     
    StrSql = "SELECT * FROM Personnes"
      Set Rst = DB.OpenRecordset(StrSql, dbOpenDynaset)
      With Rst
          .AddNew
          !NOM = Identite
          .Update
      End With
      Rst.Close
     
       StrSql = "SELECT * FROM T_historique"
      Set Rst = DB.OpenRecordset(StrSql, dbOpenDynaset)
      With Rst
          .AddNew
          !Dates = Now
          !Montant = CSng(FormatNumber(Solde_Actuel, 2))
          .Update
      End With
      Rst.Close
    Tu m'as vraiment redonné envie d'aller plus loin

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

Discussions similaires

  1. Réponses: 42
    Dernier message: 11/03/2007, 14h09
  2. Réponses: 3
    Dernier message: 01/02/2007, 20h05
  3. Besoin d'aide pour faire fonctionner un Script d'upload d'images
    Par PaoOo dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 15/06/2006, 21h24
  4. [VBA-E]besoin d'aide pour faire une boucle
    Par mikazounette dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/04/2006, 14h04
  5. Besoin d'aide pour faire un script
    Par shinux2004 dans le forum Langage
    Réponses: 4
    Dernier message: 16/07/2005, 16h44

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