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

Bases de données Delphi Discussion :

ado access insert


Sujet :

Bases de données Delphi

  1. #1
    Membre expérimenté
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    984
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 984
    Points : 1 418
    Points
    1 418
    Par défaut ado access insert
    j'esaye avec tadoquery d'inserer cette ligne dans une base access sans succès. Merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO `codes postal` VALUES (02130, 'RONCHERES'), (01090, 'FRANCHELEINS'), (01000, 'BOURG EN BRESSE');
    j'ai le message "point virgule manquant à la fin de l'instruction"

    vous auriez pas un lien sur les possibilité sql de adoquery sur access? je connais sqlite mysql et la sa fonctionne pas tout ce que j'essaye
    Il existe 3 sortes de gens: ceux qui savent compter et ceux qui ne savent pas.

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Ta table s'appele 'codes postal' ?
    Les espaces sont supportés dans les noms de table ACCESS ?
    le Caractère ` n'est pas typique de MySQL pour que les espaces et accents soient correctement géré dans les noms de table et de champs ! J'essaye des les mettre le plus souvent maintenant, surtout que l'on est en cours de passage au chinois dans les bases MySQL utilisé PHP ...
    As-tu uniquement deux champs ?
    Peut-être que ACCESS ne supporte pas un INSERT en masse ?
    le caractère ' peut-il être remplacé par ", cela sera plus simple à écrire via un générateur de SQL en Delphi

    PS : La requête est tellement longue que cela n'est pas du tout apprécié par la balise CODE qui est faite pour du Pascal et non pour du SQL ... et ça fait ramer le navigateur ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre expérimenté
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    984
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 984
    Points : 1 418
    Points
    1 418
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Ta table s'appele 'codes postal' ?
    oui

    Citation Envoyé par ShaiLeTroll Voir le message
    Les espaces sont supportés dans les noms de table ACCESS ?
    oui

    Citation Envoyé par ShaiLeTroll Voir le message
    le Caractère ` n'est pas typique de MySQL pour que les espaces et accents soient correctement géré dans les noms de table et de champs ! J'essaye des les mettre le plus souvent maintenant, surtout que l'on est en cours de passage au chinois dans les bases MySQL utilisé PHP ...
    As-tu uniquement deux champs ?
    oui

    Citation Envoyé par ShaiLeTroll Voir le message
    Peut-être que ACCESS ne supporte pas un INSERT en masse ?
    je vais essayer

    Citation Envoyé par ShaiLeTroll Voir le message
    le caractère ' peut-il être remplacé par ", cela sera plus simple à écrire via un générateur de SQL en Delphi
    je vais essayer

    Citation Envoyé par ShaiLeTroll Voir le message
    PS : La requête est tellement longue que cela n'est pas du tout apprécié par la balise CODE qui est faite pour du Pascal et non pour du SQL ... et ça fait ramer le navigateur ...
    j'ai editer

    merci pour ton aide
    Il existe 3 sortes de gens: ceux qui savent compter et ceux qui ne savent pas.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 45
    Points : 49
    Points
    49
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    le caractère ' peut-il être remplacé par ", cela sera plus simple à écrire via un générateur de SQL en Delphi
    En Access classique, c'est [codes postal] pour désigner une table avec des espace.
    Pas sur que ce soit la cause, cela dit.

  5. #5
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Citation Envoyé par madlozoz Voir le message
    En Access classique, c'est [codes postal] pour désigner une table avec des espace.
    Pas sur que ce soit la cause, cela dit.
    Tout a fait Madlozoz, les espaces dans le noms des tables sont supporté en création (sauf en premiere position) et en plus toute requete ou autre doit impérativement etre encadrer de crochet [].

    Pour ce qui est de ta requete insert into...hummm elle est pas trés réglo...

    Soit tu souhaite ajouter un seul enregistrement à ta table tu utilisera insert comme ceci :
    (je crois que c'est ton cas)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO target [(field1[, field2[, ...]])]
    VALUES (value1[, value2[, ...])
    Soit tu ajoute en masse un paquet de donnée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO target [IN externaldatabase] [(field1[, field2[, ...]])]
    SELECT [source.]field1[, field2[, ...]
    FROM tableexpression
    Pour info
    target : Nom de la table ou de la requête à laquelle on souhaite ajouter des enregistrements.

    externaldatabase : Chemin d’accès d'une base de données externe. Pour obtenir une description du chemin, examinez la clause IN.

    source :Nom de la table ou de la requête à partir de laquelle on souhaite copier les enregistrements.

    field1, field2 : Noms des champs auxquels on souhaite ajouter les données, s'ils sont placés à la suite de l'argument target, ou noms des champs à partir desquels on souhaite extraire les données, s'ils sont placés à la suite de l’argument source.

    tableexpression : Nom de la ou des tables à partir desquelles les enregistrements sont insérés. Cet argument peutêtre constitué d'un seul nom de table ou d'un composé obtenu par une opération INNER JOIN, LEFT JOIN ou RIGHT JOIN, ou encore d'une requête sauvegardée.

    value1, value2 : Valeurs à insérer dans des champs spécifiques du nouvel enregistrement. Chaque valeur vient s'insérer dans le champ correspondant à la position de la valeur dans la liste : value1 s'insère dans le field1 du nouvel enregistrement, value2 dans le field2 et ainsi de suite. Vous devez séparer les valeurs par une virgule et encadrer les zones de texte par des apostrophes (' ').

    ceci est la copie de l'aide d'access, si vraiment tu t'en sort pas, donne vraiment ce que tu souhaite réalisé avec ton insert into.

    A+

  6. #6
    Membre expérimenté
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    984
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 984
    Points : 1 418
    Points
    1 418
    Par défaut
    très interessant, ceci fonctionne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO `code postal` VALUES (01000, 'BOURG EN BRESSE');
    je vais me renseigner sur les normes a respecter, moi j'y ai pas vu dans l'aide access ton code je vais relire.

    je cherche a inserer des valeur multiple avec un TADOQuery ou autre si il y a mieux

    par exemple inserer 01000, 'BOURG EN BRESSE' et 01001, 'BOURG EN BRESE' en même temps.

    merci.
    Il existe 3 sortes de gens: ceux qui savent compter et ceux qui ne savent pas.

  7. #7
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Citation Envoyé par ouiouioui Voir le message
    très interessant, ceci fonctionne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO `code postal` VALUES (01000, 'BOURG EN BRESSE');
    je vais me renseigner sur les normes a respecter, moi j'y ai pas vu dans l'aide access ton code je vais relire.

    je cherche a inserer des valeur multiple avec un TADOQuery ou autre si il y a mieux

    par exemple inserer 01000, 'BOURG EN BRESSE' et 01001, 'BOURG EN BRESE' en même temps.

    merci.
    Salut,

    N'oublis pas les crochets... c'est de rigueur...même si cela fonctionne à priori.

    Bref, insert into dans ton cas ne pourra que ajouter 1 par 1 des enregistrements. Donc du boucle dessus.

    Ou alors tes données sont dans une autre table ou requete et là tu pourrais faire un ajout de masse.

    D'ailleur elles proviennent d'où tes données ? champs text ? table ? fichier ?

    a +

  8. #8
    Membre expérimenté
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    984
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 984
    Points : 1 418
    Points
    1 418
    Par défaut
    mes données vienne d'un txt, regarde ici http://www.developpez.net/forums/d75...uete-multiple/
    Il existe 3 sortes de gens: ceux qui savent compter et ceux qui ne savent pas.

  9. #9
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Citation Envoyé par ouiouioui Voir le message
    mes données vienne d'un txt, regarde ici http://www.developpez.net/forums/d75...uete-multiple/
    Tu le fait déjà alors... tu boucle sur chaque ligne trouvée.

    Maintenant il existe des méthodes qui peuvent transformer un txt (délimité) en MDB voici quelques lien :

    C'est du vb mais tu pourra surement t'en inspirer...
    http://www.devx.com/tips/Tip/12565


    Mais tu peux aussi transformer ton TXT en CVS et mettre ton CSV en Dataset, lien torry pour cela :
    http://www.torry.net/pages.php?id=567

    Et si je m'abuse dans le package JEDI tu as un composant qui fait cela..
    le JvCsvDataSet

    cela devrait t'aider.

    @+

  10. #10
    Membre expérimenté
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    984
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 984
    Points : 1 418
    Points
    1 418
    Par défaut
    après 2h a chercher sur les insertions multiples, je suis fixé ce n'est pas possible sur un mdb access

    J'ai donc bouclé en exécutant chaque requête cela met 135sec et avec mysql 20sec c'est définitif access je n'aime pas

    j'ai quand même mis ma solution dans l'autre sujet, mais je vais regarder ta proposition sur les cvs car je dois gérer la sauvegarde et restauration d'autres tables avec ce format donc a voir.

    merci pour ton aide
    Il existe 3 sortes de gens: ceux qui savent compter et ceux qui ne savent pas.

  11. #11
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Citation Envoyé par ouiouioui Voir le message
    J'ai donc bouclé en exécutant chaque requête cela met 135sec et avec mysql 20sec c'est définitif access je n'aime pas
    salut;

    j'ai un doute sur le temps d'exécution 135 vs 20 secondes c'est quand même énorme. peut-on voir le code, je crois qu'il y a problème d'optimisation.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  12. #12
    Membre expérimenté
    Avatar de ouiouioui
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    984
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 984
    Points : 1 418
    Points
    1 418
    Par défaut
    Citation Envoyé par ouiouioui Voir le message
    mes données vienne d'un txt, regarde ici http://www.developpez.net/forums/d75...uete-multiple/
    c'est ici!

    la requete sql je l'est fait avec php mysql, je testerai avec delphi quand j'aurai le temps, donc oui c'est pas un vrai bench.
    Il existe 3 sortes de gens: ceux qui savent compter et ceux qui ne savent pas.

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

Discussions similaires

  1. [ADO.net] insertion dans une base Access
    Par nightcyborg dans le forum C#
    Réponses: 12
    Dernier message: 01/09/2009, 12h40
  2. [ADO][Access]Probleme Insert
    Par rafraf6 dans le forum Bases de données
    Réponses: 11
    Dernier message: 09/04/2005, 19h16
  3. pbs ado-access
    Par darkzen dans le forum Bases de données
    Réponses: 15
    Dernier message: 01/01/2005, 14h23
  4. [ADO][ACCESS] Recupération du message d'erreur
    Par samlerouge dans le forum Bases de données
    Réponses: 4
    Dernier message: 24/06/2004, 23h55
  5. [VB6] [ADO] [Access] Changer le mot de passe
    Par dlpxlid dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 03/03/2003, 09h45

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