Récupération une donnée d'une requête SQL

louay02 Messages postés 9 Date d'inscription jeudi 13 août 2009 Statut Membre Dernière intervention 6 mars 2012 - 1 avril 2011 à 19:01
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 - 8 avril 2011 à 16:07
Bonjour

J’ai une base donné Access et je veux prendre le résulta de la requête SQL vers une autre table Access j’ai utilisé ADOqurey pour lancer mes requêtes. Mais toujours je ne le savais pas comment remplir a nouvelle table Access avec le contenu du requête SQL voila ma tentative
adoquery1.sql.Add('select * from table1');
AdoQuery1.ExecSQL ;
AdoQuery1.Close;
Adotable1.Insert;

10 réponses

cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
4 avril 2011 à 14:34
Bonjour,

Bonjour,

l'intention est bonne, mais ce n'est pas aussi simple que ça..
Il faut déjà au départ supposer que les champs des deux tables sont identiques..
et si c'est la cas, le plus simple :

INSERT INTO table1 ('Chp1', 'Chp2', ...)
SELECT 'Chp1', 'Chp2', ...
FROM table2


nb : attention à la syntaxe des côtes ou guillements selon le sgbd

cantador
0
louay02 Messages postés 9 Date d'inscription jeudi 13 août 2009 Statut Membre Dernière intervention 6 mars 2012
5 avril 2011 à 17:01
bonjour

voila ce que j'ai comme code:

adoquery1.SQL.Add('INSERT INTO "table3"("JOURS","Résultat")');
adoquery1.SQL.Add('select CDATE,Count(*)as Résultat');
adoquery1.SQL.Add('FROM table1');
adoquery1.SQL.Add('group by (CDATE)');
adoquery1.ExecSQL;

mais toujours je recois une erreur
:"Erreur de Syntaxe la clause de la requete est incomplète".

ma question est comment inserer une selection des donneés ?
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
5 avril 2011 à 17:07
ce sont des tables access ou paradox ?

cantador
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
5 avril 2011 à 17:18
ce qui est génant dans ton exemple, c'est le regroupement
pas sûr que tu puisses tout faire en même temps..

tu dois avoir une table style cumul et une autre avec
tous les enregistements..

non ?

cantador
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
louay02 Messages postés 9 Date d'inscription jeudi 13 août 2009 Statut Membre Dernière intervention 6 mars 2012
5 avril 2011 à 17:22
c'est des tables Access mais je regroupé les donnés du table1 vers la table3 dans la même base de donnée ?
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
5 avril 2011 à 17:36
oui chef..

Dans ce cas, la table3 ne sert à rien puisqu'elle stocke un calcul qui peut être exécuté à tout moment.

Autrement, dit le comptage des regroupements pas date peut se faire directement sur la table1.
Tu peux ensuite afficher le résultat dans des TEdit ou un Grid (par exemple)

La règle est qu'on ne stocke pas de calcul dans une base.
ça encombre et prend de la place pour rien.

cantador
0
louay02 Messages postés 9 Date d'inscription jeudi 13 août 2009 Statut Membre Dernière intervention 6 mars 2012
5 avril 2011 à 18:16
Actuellement j'affiche le résultat sur dans un DBGRID
mais j'ai besoin ces données une table cmt je fais ?

merci cantador
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
6 avril 2011 à 09:25
tu la relies le DBGRID avec un TDatasource + un TDataset + TADOQuery

tu écris ce code qui affecte une requête SQL au TADOQuery

procedure TForm1.Button1Click(Sender: TObject);
begin
    AdoQuery1.Close;
    with AdoQuery1.SQL do
    begin
      Clear;
      Add('select CDATE,Count(*)as Resultat');
      Add('FROM table1');
      SQL.Add('group by (CDATE)');
      AdoQuery1.Open;
    end;
end;


si tout va bien, sur le clic du bouton, tu dois voir apparaître dans ton DBGRID, quelque chose comme ça:

07/01/10 12
12/02/10 18
14/03/11 24

etc..


cantador
0
louay02 Messages postés 9 Date d'inscription jeudi 13 août 2009 Statut Membre Dernière intervention 6 mars 2012
6 avril 2011 à 13:17
Merci bien CATADOR j'ai ajouté une boucle qu'inséré les enregistrements apparaisent dans le DBGRIG.

adoquery1.First;
repeat
adotable3.Insert;
adotable3.FieldByName('Résultat').AsString:=adoquery1.FieldByName('Résultat').AsString ;
adotable3.FieldByName('CDATE').AsString:=adoquery1.FieldByName('CDATE').AsString ;
adotable3.Post;
adoquery1.Next;
until adoquery1.Eof;


merci

Louay02
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
8 avril 2011 à 16:07
[i]
adotable3.Post;/i

NON, pas de stockage !

juste un calcul et un affichage..

cantador
0
Rejoignez-nous