Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : vba sous access - insertion d'une requete dans une table [ Archives / Problème avec une requête ] (bonnaud)

mercredi 4 mai 2005 à 10:40:08 | vba sous access - insertion d'une requete dans une table

bonnaud

Bonjour,

J'ai fait une requête sous access en vba qui me permet de calculer un nouveau champ que j'ai nommé total à partir d'une table.
J'arrive à visionner cette requête sous le nom de R_Conso.
J'aimerai maintenant insérer ce champ total créé par cette requête dans une autre table existante.

Est-ce que cela est possible et comment faut-il faire ?

Merci d'avance. 

vendredi 6 mai 2005 à 16:45:53 | Re : vba sous access - insertion d'une requete dans une table

tecman

Salut bonnaud.

Je ne comprend pas pourquoi tu tiens à inclure un nouveau champ.
Il me semble plus judicieux de structurer tes tables et ensuite de les mettre à jour à l'aide d'une requête
(du style UPDATE maRequete INNER JOIN maTable ON maRequete.id = maTable.id SET maTable.total = [maRequete].[total];).

Cela te permet ainsi de conserver la structure des tables et des droits et contraintes associées.


Tecman


mardi 10 mai 2005 à 10:52:08 | Re : vba sous access - insertion d'une requete dans une table

bonnaud

Salut Tecman.

J'ai essayé de faire ce que tu m'avais dit (ce qui me parait effectivement beaucoup plus correct) mais access me dit "Too few parameters".

En fait, je dispose d'une table que j'ai importée. Je veux garder certains champs de cette table et en rajouter en faisant des calculs que j'ai fait à l'aide de requêtes.

Voici le code :

Public Sub Insert()

Dim MaBD As Database
Dim MonSQL As String
Dim MonSQL2 As String
Dim MonSQL3 As String
Dim MonSQL4 As String

Set MaBD = CurrentDb()
MonSQL = "SELECT  FOURNISSEUR,[TYPE FICHIER],[TYPE PIECE],[DATE PAIEMENT], [NUMERO FACTURE],[DATE FACTURE],[MODE PAIEMENT], [CODE BANQUE], [SOCIETE FACTUREE], [COMPTE DE FACTURATION],[AUTRE REFERENCE], [NUMERO MARCHE], [NUMERO CONTRAT SERVICE],[DATE DEBUT FACTURE CP],[DATE FIN FACTURE CP],[COMPTE UTILISATEUR],[NOM USUEL SITE UTILISATEUR] INTO Table1 FROM Table8"

MaBD.Execute MonSQL

MonSQL2 = "SELECT Table8.[NOM SITE INSTALLE], RoundCost (sum (RoundCost([QUANTITE CONSOMMEE]*[TARIF UNITAIRE CONSO]/60))) AS Total INTO Table2 FROM Table8 GROUP BY Table8.[NOM SITE INSTALLE] " 'requête qui calcule la conso avant reduction  Q conso * Tarif unitaire et fait la somme pour chaque site'

MaBD.Execute MonSQL2

MonSQL3 = "UPDATE Table1 INNER JOIN Table2 ON Table1.id = Table2.id SET Table2.total = Table1.total"

MaBD.Execute MonSQL3

MaBD.Close
End Sub

En clair, j'ai importé un fichier excel sous la table8 et j'ai inséré certains champs dans la table1. Je fais ensuite des calculs avec la table8 et je voudrais donc insérer ce calcul dans ma nouvelle table (la table1). Or il me dit "Too few Parameters" quand j'exécute MonSQL3.

Que dois je faire pour contourner ce problème ?

Merci pour ton aide.

Bonnaud


mardi 10 mai 2005 à 11:20:57 | Re : vba sous access - insertion d'une requete dans une table

tecman

Oups !!

Tout d'abord, je te conseillerais de modifier le nom de tes champs.
Il est ainsi recommandé de ne pas insérer de code non ASCII dans les nommages. Donc évites les espaces (préfère le _ ) les accents et autres signes cabalistiques pouvant ne pas permettre une interprétation par les machines.
Personnellement, pour les nommages mon principe et d'abord de nommer l'objet puis son(ses) qualifiant(s). Ainsi [TYPE FICHIER] devriendrait fichierType (j'utilise les majuscules -méthode Hongroise- pour séparer les mots).

Pour la mise à jour, pourquoi faire des calculs dans une table puis l'insérer dans une autre. Autant faire directement la mise à jour dans la table voulue.
Le fait d'importer des données d'une table dans une autre et faire ensuite les calculs n'est pas optimun.
Il te faut garder à l'esprit que l'espace mémoire est une richesse qu'il est nécessaire de préserver; même si actuellement tu n'es pas confronter à cette problématique avec tes tables Access. Entre la gestion des index, les accès écriture-lecture et autres, tout ceci est très gourmand en CPU.

Je te conseillerais donc de conserver les données à un seul endroit. Evites les copies de table à table, car cela complique les mises à jour (quelles sont les bonnes données ?).
Met à jour les champs selon tes calculs dans cette table.
Créé une vue (requête de sélection sous Access) pour ne voir que les données voulues.

Bon courage.

PS : Aprés renommage, peux-tu m'envoyer ta base si elle n'est pas trop confidentielle ?
Tecman

jeudi 12 mai 2005 à 10:17:17 | Re : vba sous access - insertion d'une requete dans une table

bonnaud

Re !

Je suis toujours perdu. En fait, ma table est un fichier excel que j'ai importé sous access.
Je dois faire des calculs dessus. Comme tu l'as compris, je fais une requête. Cette requete
 me calcule 3 nouveaux champs (je peux pas faire autrement car les champs sont liés).
J'arrive à visionner cette requete qui est donc une table à 3 champs.
Et je voudrais insérer ces 3 champs dans une nouvelle table qui sera ma table finale
(elle comprendra également d'autres champs).  
Comment pouvoir insérer ces champs dans cette table ?
Je n'ai toujours pas trouvé de solutions.

Merci de ton aide.

Bonnaud.

PS : Ces données sont confidentielles, sinon je t'aurais envoyé la base
sans aucun problème.




Cette discussion est classé dans : vba, access, table, requête, insertion


Répondre à ce message

Sujets en rapport avec ce message

Ecrire une requette SQL pour affichier les 3 derniers enregistements dans une table Access [ par hotlines ] Bonjour,je voudrais écrire une requette SQL pour afficher  les 3 derniersenregistrement dans une table Access,pour être claire j'ai un site et je voud Problème Requête SQL INSERT INTO sous access [ par bonnaud ] Bonjour,J'ai un problème avec une requête INSERT INTO.En fait je veux insérer dans une BDD des champs d'une autre table. Le problème qu'en j'insère ce Ajout d'un description d'un champs pour access en sql [ par Jbs106 ] Salutationvoilà mon souci:Dans access, quand on visualise une table, miz à part le nom et le type du champs, il est possible d'ajouter un commentaire COMMENT FAIRE UN CHAMP like UN AUTRE CHAMP [ par Delph83 ] Bonjour tout le monde Voilà j'ai un problème avec une requête sql et la clause LIKE : <P class=MsoNormal style="MARGIN: 0cm 0 Requête UNION ne passe pas. [ par dpfort ] BonjourJ'ai exécuté une requête sous SQL  ne passe pas. J'ai voulu faire un goupement de Points par table, d'une même table qui est  divisée en 2.Les requête sur le résultat d'une requête [ par sev622 ] Bonjour, J'ai un problème dans la construction de ma requête. J'ai une table avec 2 champs numériques : id_p, id_f Je veux compter le nombre d'id_p qu Requête liée au sein de la même table, comme faire? [ par jmey ] Bonjour,Je souhaite obtenir le résultat suivant (comparatif): <FONT face ACCESS : commment récupérer les requetes : Create Table [ par tousimages ] Access permet de réaliser facilement des tables grâce à son interface graphique. Toutefois je souhaiterai extraire les requêtes sql de création de tab faire une copie d'une table de ma base de données [ par romydamour ] salut à tous, voilà j'ai un souci avec une requête sql. Je travaille avec VisualC++ et Access. Voilà j'ai dans ma BD une table "Cycles" avec 3 colonne insert into cherche exemple ... SVP! [ par trexor ] Voilà, c'est pas que j'en ai marre mais je pète un peu les plonds. Pour insérer des données dans une bas access, c'est vraiment la merde avec vb.net!l


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,218 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.