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 :

Piloter une requête Ajout dans Access


Sujet :

Bases de données Delphi

  1. #1
    Candidat au Club
    Inscrit en
    Février 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 8
    Points : 4
    Points
    4
    Par défaut Piloter une requête Ajout dans Access
    bonjour à tous

    Je suis un débutant de chez débutant.

    Je viens de faire un programme avec delphi7 qui me permet de surveiller le nombre d'enregistrements dans une base Access.

    Je voudrais savoir s’il existe un moyen simple de déclencher une requête ajout, qui existe dans ma base Access.
    Ou si je suis obligé de refaire une requête avec mon Adoquery ?.

    merci de vos lumières

    cordialement

    Thierry

  2. #2
    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 310
    Points
    2 310
    Par défaut
    Salut;

    Tout à fait possible la seule contrainte est que ta requête doit être paramétrée et les paramètres doivent récupérer leurs données via ton interface fait avec Delphi.

  3. #3
    Candidat au Club
    Inscrit en
    Février 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par Just-Soft Voir le message
    Salut;

    Tout à fait possible la seule contrainte est que ta requête doit être paramétrée et les paramètres doivent récupérer leurs données via ton interface fait avec Delphi.
    Merci de cette info, mais je comprend pas ce que tu veux dire

    Dans Acces j'ai une requête "transfert" qui copie tous les enregistrement d'une table1 dans une table2 ( tables identiques ) comment puis je déclencher cette requête dans mon apli Delphi.
    merci

  4. #4
    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 310
    Points
    2 310
    Par défaut
    Re;

    y a pas mieux qu'un petit exemple !

    supposons que tu as créé une requête dans ACESS nommée Transfert alors sous Delphi si tu utilise un composant Query tu n'as qu'à faire ça :

    Query1.Close;
    Query1.Clear;
    Query1.SQL := 'Select * From Transefrt';
    Query1.Open
    comme si tu manipulé une table rien de différence l'ami.

  5. #5
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    Pour ta question d'origine il n'y a pas, à ma connaissance, de moyen de déclencher une requête contenue dans Access et le meilleur moyen est bien de passer par un ADOQuery.

  6. #6
    Membre averti Avatar de zemeilleurofgreg
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 515
    Points : 346
    Points
    346
    Par défaut
    il y a l'objet ADOCommand prévu à cet effet

  7. #7
    Candidat au Club
    Inscrit en
    Février 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Merci à tous pour vos réponses.
    je vais tester tout cela.

    Juste comme je suis curieux j'avais fait une recherches dans le FAQ et j'ai trouvé ceci:
    Pour exécuter une macro d'access à partir de Delphi, il faut ajouter un composant AccessApplication (Palette Serveurs) et utiliser le code suivant :


    (*On ouvre d'abord la base.
    Le second paramètre spécifie si nous désirons ouvrir la table en mode exclusif ou non*)
    AccessApplication1.OpenCurrentDatabase('d:\essai.mdb',False);
    //On exécute la macro
    AccessApplication1.DoCmd.RunMacro('Macro1.MaMacro',emptyparam,emptyparam);

    je me retrouves avec le message "le serveur RPC n'est pas disponible" si quelqu'un peux m'expliquer
    merci

  8. #8
    Candidat au Club
    Inscrit en
    Février 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    je dois etre nul de chez nul pfeuuu

    j'essaie de faire cette requête:

    procedure TForm2.Button1Click(Sender: TObject);
    begin
    ars.SQL.Clear;
    ars.SQL.Add('INSERT INTO fp_premium ');
    ars.SQL.Add('SELECT * FROM fp_trimestrielle');
    ars.Open;
    end;

    c'est a dire je veux ciopier tous les enregistrement de fp_trimestrielle dans fp_premium

    j'ai le message suivant:

    " Le fournissuer actuel ne prends pas en charge les jeux d'enregistrements multiples renvoyés à partir d'une exécution simple"

    Quelqu un peut m'aider? merci

  9. #9
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    SELECT * INTO fp_premium FROM fp_trimestrielle

  10. #10
    Candidat au Club
    Inscrit en
    Février 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par philnext Voir le message
    SELECT * INTO fp_premium FROM fp_trimestrielle
    merci mais cela me repond que la table fp_premium existe deja et bloque

  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 310
    Points
    2 310
    Par défaut
    Salut;

    je dois reconnaître que la copie à travers SQL est plus rapide et pratique quant le nombre d'enregistrements est assez conséquent. En alternative tu peux toujours te contenter de ça:

    TableCopie.First;
    While not(TableCopie.Eof) do
    begin
    try
    TableDest.AppendRecord([Champ1.AsValue,..., Champn.AsValue]);
    TableCopie.Next;
    except
    // gestion des erreurs
    end
    end;
    en supposant que ton composant est Table dans le cas d'un composant Query faut changer les nom c'est tout.

  12. #12
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    Citation Envoyé par Pistachou Voir le message
    merci mais cela me repond que la table fp_premium existe deja et bloque
    Oui le select Into crée la table, il faut donc la supprimer avant.

  13. #13
    Membre averti Avatar de zemeilleurofgreg
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 515
    Points : 346
    Points
    346
    Par défaut
    si ta query existe déja dans la DB, pourquoi la réécrire ?

    Utilises l'objet ADOCommand prévu à cet effet !

  14. #14
    Candidat au Club
    Inscrit en
    Février 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par philnext Voir le message
    Oui le select Into crée la table, il faut donc la supprimer avant.
    J’aurais peut du expliquer plus le principe:

    j'ai une baseprod access qui sert au lancement en production ( pilotage des tours numérique)
    j'ai des bases tampons dans les quelles viennent ce ranger les commandes en fonction de leurs types base1= lentille rigide base2= lentille souple base N lentilles N
    j'ai créé un programme delphi qui me permet de visualiser ( Abakus vcl) le nombre de commandes en attente.
    Je voudrais avec un bouton transférer le contenu de la base1 ou 2 dans la baseprod mais bien sûr sans l'éffacer avant car elle n'est peut-être pas vide.
    Effectivement, j'aurais pu faire tout cela avec access mais les composants visuels sont nuls et les opérateurs doivent pouvoir faire cela sans réfléchir
    D'ou mon choix de delphi car je possède delphi7 entreprise.
    Mais je suis nul de chez nul.( ceci dit Delphi à l'air ttés sympa)
    Merci de vos messages

    thierry

  15. #15
    Candidat au Club
    Inscrit en
    Février 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Je viens de trouver la solution de mon probléme:
    ADOQuery.SQL.Clear;
    ADOQuery.SQL.Add('INSERT INTO table1 ');
    ADOQuery.SQL.Add('SELECT * FROM table2');
    ADOQuery.ExecSQL et non open comme je l'écrivais.

    merci

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

Discussions similaires

  1. exécution d'une requête SQL dans access
    Par skyarnangel dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 25/02/2009, 11h18
  2. Réponses: 1
    Dernier message: 03/01/2008, 14h44
  3. requête ajout dans une table
    Par crissud dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 04/04/2007, 20h28
  4. Réponses: 4
    Dernier message: 08/08/2006, 15h04
  5. [VB]Utilisé une requête enregistrée dans ACCESS
    Par anikeh dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 26/01/2006, 17h54

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