|
| GCUSSE | Posté le 06/09/2003 @ 16:37 |
Petit astucien
171 Messages
| hello,
Voici mon ptit bleme.
J'ai une table se composant de divers champs dont le champs heures (contenant un nombre d'heure sous format numérique) et le champs individuel (oui-non).
De cette table, je doit extraire ,pour une certaine selection se faisant sur un autre champs, la somme des heures individuelles. Jusque là pas de prob. Mais si dans cette selection, il n'y a pas d'individuel, cette requete doit m'afficher 0. Ceci parce que cette requete selection fait partie d'une requete ajout et si elle n'affiche pas la somme ou zero, elle bloque l'ensemble de la requete mise à jour.
Merci de votre aide
|
| |
| |
| Publicité |
|
|
| baptiste | Posté le 06/09/2003 à 17:38 |
Equipe PC Astuces
| salut
dans quel langage ? |
| |
|
| GCUSSE | Posté le 06/09/2003 à 19:40 |
Petit astucien
171 Messages
| Sorry j'avais oublié... (oupsss)
soit en access ou en SQL (puisque moteur SQL sous access 2000)
merci |
| |
|
| baptiste | Posté le 06/09/2003 à 22:40 |
Equipe PC Astuces
| Peux-tu aussi donner le code sql de ta requête ajout ? car là, je vois pas trop comment t'aider, car j'ai deux solutions différentes :
1/ tu ouvres un recordset avec ta requête genre :
dim rst as recordset
set rst=currendb.openrecordset("SELECT * FROM Matable;")
et après tu vérifies si elle a des enregistrements :
if rst.recordcount<>0 then
'execution du code
else
'execution du code si pas d'enregistrement
end if
2/ au niveau de ta requête, dans ton champ d'heures, tu mets :
Nz([monChamp];0)
qui normalement permets de convertir les résultats nuls en 0 |
| |
|
| GCUSSE | Posté le 07/09/2003 à 14:48 |
Petit astucien
171 Messages
| au niveau du NZ, cela ne fonctionne malheureusement.
Par contre, je te fourni les codes SQL:
en gras se trouve le champs problematique
1ere requete (selection):
[code]SELECT Sum(Calendrier.Heure) AS SommeDeHeure
FROM Organismes INNER JOIN (FichesPres INNER JOIN Calendrier ON FichesPres.N°FichePresence = Calendrier.N°FichePrésence) ON (Organismes.N°CentreForm = FichesPres.N°CentreForm) AND (Organismes.N°CentreForm = FichesPres.N°CentreForm)
GROUP BY Calendrier.N°FichePrésence, Organismes.TypeFormation, Calendrier.Indiv
HAVING (((Calendrier.N°FichePrésence)=[Formulaires]![NomsClients]![FichesPres sous-formulaire].[Formulaire]![N°FichePresence]) AND ((Organismes.TypeFormation)="PREFORMATION") AND ((Calendrier.Indiv)=True));[/code]
2eme requete (ajout):
[code]INSERT INTO Horforma ( FSSO, FSSRN, FSSSP, FSSR, RefFiche, INDIV )
SELECT AjoutHorforma.SommeDeHeure, AjoutHorforma2.SommeDeHeure, AjoutHorforma3.SommeDeHeure, AjoutHorforma4.SommeDeHeure, [Formulaires]![NomsClients]![FichesPres sous-formulaire].[Formulaire]![N°FichePresence] AS Expr1, AjoutHorformaI.SommeDeHeureFROM AjoutHorforma, AjoutHorforma2, AjoutHorforma3, AjoutHorforma4, AjoutHorformaI;[/code]
je te remercie de ton aide
|
| |
|
| baptiste | Posté le 07/09/2003 à 16:05 |
Equipe PC Astuces
| le souci vient quans tu n'as pas d'enregistrement dans la 1ere ? si tu as aussi une impression d'écran des resultats de l'extraction, ça pourrait aider aussi |
| |
|
| GCUSSE | Posté le 07/09/2003 à 16:45 |
Petit astucien
171 Messages
| c'est bien cela, s'il ne trouve pas d'enregistrement satisfaisant à ses conditions, elle n'affiche rien et dès lors, lorsque je lance la requete ajout en visu, rien "snots quedal sur fonds d'azur" pas une ligne car tous les champs de requetes ne sont pas remplis. |
| |
|
| baptiste | Posté le 07/09/2003 à 19:41 |
Equipe PC Astuces
| bah dans ce cas là j'opte pour ma première solution, on modifiant la requête ajout (une nouvelle) afin de satisfaire même s'il n'y a pas d'enregistrement |
| |
|
| GCUSSE | Posté le 08/09/2003 à 07:39 |
Petit astucien
171 Messages
| voila la solution que j'ai tenté d'adopter mais sans véritable succés.
J'ai mon formulaire principal gerant mon client, dans celui-ci, j'ai un sous formulaire gerant la fiche de présence, et dans ce dernier se trouve un autre sous formulaire calendrier relatif à la fiche de présence. (en resume: Formprincipal:sous-form:sous-sous-form)
j'ai récupéré le total d'individuel dans un controle de liste (le seul capable de m'afficher le total) placé dans le sous-sous-form calendrier.
je fait mon test dessus. mais j'ai un serieux probleme. il ne me récupére pas la données actuelle, mais l'avant derniere donéee et ce malgré le reqery. J'ai du certainement foirer quelque chose.
Voici comment je procede: je l'actualise ( controle.requery) je me deplace dessus, je selectionne son contenu ( controlle.selected(0)= true) et ensuite j'effectue la distinction (if controle.value(0) = 0 then .... )
même ma requete me donne l'avant derniere valeur???? je n'y comprend plus rien... |
| |
|
|
| Haut de la page |