Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/07/2011, 17h00   #1
Invité de passage
 
Inscription : juillet 2011
Messages : 18
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 18
Points : 0
Points : 0
Par défaut Champs supprimé => Formulaire cassé

Une simple petite question :

Dans une table j'ai supprimé un Champs Lié à une autre Table (Jadis en Clé Primaire), et dans mon formulaire, ça ne veux plus marcher.

J'ai tenté de bidouiller, et maintenant je ne peux plus entrer de donnée dans mon Formulaire :


Code à modifier :
Code :
1
2
SELECT [Table-Apport].[Force], [Table-Objet].[Base Force], [Table-Apport].[Date Du SimCraft]
FROM [Table-Objet] INNER JOIN [Table-Apport] ON [Table-Objet].[Date Du SimCraft] = [Table-Apport].[Date Du SimCraft];

Code que j'ai tenté de modifier :
Code :
1
2
SELECT [Table-Apport].[Force], [Table-Objet].[Base Force], [Table-Apport].[Date Du SimCraft]
FROM [Table-Objet] , [Table-Apport];
On remarque que nule part je ne fait appel à [Table-Objet].[Date Du SimCraft] (celui que j'ai supprimé).
[Le code est volontairement tronqué pour éviter le surplus d'info)
Nemesis666 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/07/2011, 13h08   #2
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 085
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 085
Points : 11 622
Points : 11 622
Bonjour,

Refait une requête propre à partir du générateur.

Sql n'est pas un langage approximatif qui supporte la bidouille.

c'est très bien pour avoir un joli nombre d'enregistrements à l'arrivée.

En effet le nombre d'enregistrements sera : Nbre table1 X Nbre Table2

Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/07/2011, 14h28   #3
Invité de passage
 
Inscription : juillet 2011
Messages : 18
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 18
Points : 0
Points : 0
C'est le formulaire qui a créér cette "requête" SQL, ducoup hmmmm...

En faite c'est assez simple comme question : Lorsque l'on supprime un champs d'une table lié qui est appelé dans un formulaire, comment nétoye t'on le code SQL Généré ?

Ca doit surement arriver à beaucoup de mon je présume, la solution ne doit pas être bien compliqué.
Nemesis666 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2011, 09h12   #4
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 085
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 085
Points : 11 622
Points : 11 622
Bonjour,

Citation:
C'est le formulaire qui a créér cette "requête" SQL, ducoup hmmmm...
Là il ne s'agit surement pas de l'action du wizard c'est clairement de la bidouille !
Code :
1
2
SELECT [Table-Apport].[Force], [Table-Objet].[Base Force], [Table-Apport].[Date Du SimCraft]
FROM [Table-Objet] , [Table-Apport];
La réponse est claire
Citation:
Refait une requête propre à partir du générateur.
Si il s'agit d'une requete simple, mono-table sans regroupement, ou que le SQL n'a plus de secret pour nous, on peut le faire à la main. On supprime simplement tout ce qui a rapport au champ dans le texte SQL.

Lorsque la requête est plus complexe on passe pas le générateur.
On copie le texte et on le colle dans le générateur, lorsqu'on passe en mode création on peut modifié sans risque d'erreurs. Quand on a le résultat escompté il n'y a plus qu'à faire l'opération inverse, copier/coller vers la source.

Note que le fait, dans le générateur en mode création a une action corrective.

Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 11h21   #5
Invité de passage
 
Inscription : juillet 2011
Messages : 18
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 18
Points : 0
Points : 0
J'ai au moins une centaine de champ, ça prend une éternité...

C'est pas normal de devoir tout recommencé à chaque modification de champs... Doit y avoir autre chose c'est pas possible...

EDIT : Bon, le résultat reste strictement le même : Impossible de modifier les contrôles depuis le formulaire, et le code SQL généré est strictement identique à ma "bidouille".

Je vais joindre mon fichier à une DropBox pour que vous puissiez lire et modifier :

http://dl.dropbox.com/u/21043222/Pro...oW_Stuff.accdb
Nemesis666 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 14h35   #6
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 085
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 085
Points : 11 622
Points : 11 622
Bonjour,

Le développement demande du temps, de la patience et beaucoup d'investissement personnel.

Ce qui n'est effectivement pas normal c'est de devoir tout reprendre à la moindre modification.

Si tu supprimes un champ de la source et que tu supprimes son controle ça doit fonctionner.

Ce qui ne peut fonctionner c'est cette requete.

sans aucun lien entre elles ça n'a pas de sens. Comment tu crois qu'il va faire la correspondance entre les 2. Access est puissant mais pas devin.

As-tu compris ce point ?

Donc construit une VRAI requête avec le générateur. Si répéter les champs te gène fais un SELECT *.

Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 20h32   #7
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 085
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 085
Points : 11 622
Points : 11 622
Je viens de tester ton formulaire.

Il fonctionne parfaitement par rapport à ta source. Pas de message d'erreur si ce n'est qu'il averti à juste titre que tu ne peux pas modifier le recordset.

Normal vu la source comme je te l'ai dis.

cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2011, 09h56   #8
Invité de passage
 
Inscription : juillet 2011
Messages : 18
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 18
Points : 0
Points : 0
Je comprend l'idée.

Mais ça ne correspond pas à ce que je veux faire :

Je veux trois choses :

- Une zone en haut qui parle à une table indépendante de la base.

- Une zone au milieu qui parle à une autre table indépendante de la base.

- Une zone en bas qui calcul, additionne, multiplie et donne les résultats.

Au début, j'avais lié les deux bases par une date, manque de bol, chaque changement de date devais "en théorie" changer d'enregistrement (ça ne le faisais pas) : Si je suis au 21 et que j'ai des données, je voulais qu'en passant au 22 je passe aussi à l'enregistrement du 22, hors ça ne changeais rien (s'était pourtant une clé primaire, mais j'ai du zapper un épisode);
Mais ça ne devais pas toucher à la 2nd table, qui elle n'a aucun rapport avec la première.

Mon problème n'ayant finalement rien a voir avec le titre du topic, dois-je en recréer un ?
Il n'y a pas une partie "projet" sur ce Forum :o ? Ca m'éviterais de créer 15 topics à chaque soucis :o .
Nemesis666 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2011, 11h00   #9
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 085
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 085
Points : 11 622
Points : 11 622
Non inutile de créer des fils de discussions supplémentaires.

Je vois un peu l'idée mais je n'arrive pas à comprendre comment les enregistrements de la table 1 et la table 2 sont sélectionnés pour obtenir le résultat du calcul ?

Je te donne un exemple :
Code :
[Table-Apport].[Force] * [Table-Objet].[Base Force]
Comment sais-tu qu'il faut calculer avec 1er enregistrement de la table-Apport et le 3ème de Table-Objet et non pas le 2ème avec le 4ème ?

Dans de rare cas on est obligé de stocker le résultat des calculs.

Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2011, 12h53   #10
Invité de passage
 
Inscription : juillet 2011
Messages : 18
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 18
Points : 0
Points : 0
La première partie est donc choisie (pour le moment, et en théorie) à partir de la Date ( [Table-Apport].[Date du SimCraft] ==>> clé primaire )

La seconde partie est choisi en fonction du numéro d'identification ( [Table-Objet].[ID-Item] ==>> clé primaire ) ou du nom d'objet ( [Table-Objet].[Nom Objet] ), ces deux options sous forme de menu déroulant (en théorie)

Une fois les deux enregistrements pointé, le calcul ce fait (toujours en théorie), mais ce calcul n'est pas sauvegardé, il est calculé à chaque fois, et à chaque changement de date (de la première table) ou du changement d'ID ou de Nom d'Objet.

Tout cela, c'est la théorie, en pratique ça ne donne pas vraiment cela :o .

PS : Je cherche toujours à faire des listes de choix pour le contenu d'un champs, j'arrive pour lister le nom des champs d'une table mais c'est tout (Exemple : Emplacement).
Nemesis666 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2011, 14h02   #11
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 085
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 085
Points : 11 622
Points : 11 622
Dans ce cas il te faut calculer les valeurs dans une requete source. Tu peux également le faire dans le formulaire mais il faut que tu places ton where sur les 2 tables.

Comme ceci :
Code :
1
2
3
SELECT Apport.DateApport, Objet.IdObjet, [Apport].[Force]*[Objet].[Force] AS LaForce, [Apport].[Expertise]*[Objet].[Expertise] AS Lexpertise, [Apport].[Endurance]*[Objet].[Endurance] AS Lendurance
FROM Apport, Objet
WHERE (((Apport.DateApport)=#7/27/2011#) AND ((Objet.IdObjet)=1));
Si tu souhaites faire des calculs dans ton formulaire. Utilises 1 sous-formulaire par table avec les propriétés champs père champ fils définis et utilise mon tuto sur les appels formulaires pour créer tes formules.

Du boulot en perspective.
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2011, 10h05   #12
Invité de passage
 
Inscription : juillet 2011
Messages : 18
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 18
Points : 0
Points : 0
Je vais donc choisir la solution : deux sous-formulaires dans un formulaire.

Je vais bouquinner votre tuto .
Nemesis666 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/07/2011, 16h44   #13
Invité de passage
 
Inscription : juillet 2011
Messages : 18
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 18
Points : 0
Points : 0
Le tuto est très bien fait et explique clairement ce qu'il faut.

Ainsi, j'ai pu faire mes 3 sous formulaires, les liés entres eux, et faire les calculs.

Hélas, cela ne ce met pas à jour tout seul comme dans un formulaire classique, donc je sais que les calculs fonctionnent car j'ai testé avec des chiffres, mais dès que je modifie, ça ne bouge pas.

Existe t'il un moyen de mettre à jour automatiquement, ou via un bouton "Actualisé" ?
Nemesis666 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/07/2011, 19h20   #14
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 085
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 085
Points : 11 622
Points : 11 622
Tu peux prendre les valeurs de calculé et faire une requete insert ou update.

Sinon faire les calculs en vba puis les affecter dans les controles, dans ce cas il te suffit de mettre le champ correspondant dans la propriété source pour que ça sauvegarde.
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/07/2011, 14h15   #15
Invité de passage
 
Inscription : juillet 2011
Messages : 18
Détails du profil
Informations forums :
Inscription : juillet 2011
Messages : 18
Points : 0
Points : 0
Je n'y arrive pas.

Je me sert de ce tuto : http://sqlpro.developpez.com/cours/sqlaz/dml/

Les commandes INSERT et UPDATE servent à mettre à jour des champs/enregistrement, ce n'est visiblement pas ce que je souhaite faire.

Je souhaite simplement que, d'une manière automatique au possible, ou vie un bouton, je puisse mettre à jour les contrôles calculés.
Nemesis666 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h20.


 
 
 
 
Partenaires

Hébergement Web