Salut,
au risque d'enfoncer une porte ouverte, l'ordre des elements d'une date en sql sous Access est #MM/JJ/AAAA#
Salut,
au risque d'enfoncer une porte ouverte, l'ordre des elements d'une date en sql sous Access est #MM/JJ/AAAA#
Cycle de vie d'un bon programme :
1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise
Pas de question technique par MP, je ne réponds pas
Mes ouvrages :
Apprendre à programmer avec Access 2016, Access 2019 et 2021
Apprendre à programmer avec VBA Excel
Prise en main de Dynamics 365 Business Central
Pensez à consulter la FAQ Excel et la FAQ Access
Derniers tutos
Excel et les paramètres régionaux
Les fichiers Excel binaires : xlsb,
Autres tutos
Merci,
Je n'avais pas vu cette porte s'ouvrir, je vais vérifier tout de suite les résultats en changeant les formats.
Je viens de vérifier sur la base Access, et je vois 01/05/2017 correspondant au 5 mai 2017, ne serait-ce donc pas dd/MM/yyyy ?
En faisant les requêtes avec ce format plutôt que le précédent je me retrouve avec les même résultats
Cordialement
Bonjour,
désolé de m'incruster dans une discussion bien entamée sens avoir pris du temps de lire les autre poste, mais tu parle de VB.Net!
tu vas appeler une requête Access ou ton programme contiendra ta requête?
Code : Sélectionner tout - Visualiser dans une fenêtre à part (SELECT Site,Building,Modul,Room,Desk FROM People WHERE @EndDate <= EndDate AND @StartDate >= StartDate)
Bonjour dysorthographie,
Dans mon programme vb.net je construis la requête en tant que string en fonction des éléments graphiques (textbox,datetimepicker,etc...) puis j'ouvre une connexion avec la base, et j'exécute la requête et je récupère le OleDbDataReader renvoyé par la fonction ExecuteReader().
Donc je n'appelle pas de requête Access, je la fais à la main, tu penses que ce serait mieux d'appeler une requête Access directement ?
Cordialement
Attention,
si tu ne passes pas par une requete Access, tout ce qui t'a ete dit jusqu'a present dans ce fil peut s'averer inutile
Et on basculera le sujet en VB.Net pur et non pas en Requetes et SQL sous Access
Cycle de vie d'un bon programme :
1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise
Pas de question technique par MP, je ne réponds pas
Mes ouvrages :
Apprendre à programmer avec Access 2016, Access 2019 et 2021
Apprendre à programmer avec VBA Excel
Prise en main de Dynamics 365 Business Central
Pensez à consulter la FAQ Excel et la FAQ Access
Derniers tutos
Excel et les paramètres régionaux
Les fichiers Excel binaires : xlsb,
Autres tutos
déjà je ferais en sorte que ma requête fonctionne en l'état dans Access, mais là je laisse mes collègue qui sont plus au vif du sujet t’aiguiller!
ensuite je modifierais ma requête dans Access pour accepter de paramètre!
Code Sql Access : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 PARAMETERS [ @StartDate] DateTime, [@EndDate] DateTime; SELECT Site,Building,Modul,Room,Desk FROM People WHERE [@EndDate] <= EndDate AND [@StartDate] >= StartDate
et enfin dans VB.net j’appellerais cette requête!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 sql="Select * from RequêteAccess" PARAMETERS.add("@EndDate",etc...
Bonjour,
Oui je vais regarder sur Access pour effectuer les requêtes, puis les utiliser en vb.
Bonjour galoir,
Je viens d'écrire les requêtes sur Access directement, et effectivement avec les paramètres, cela fonctionne correctement.
Il ne me manque plus qu'à appeler ces requêtes depuis vb
Bonjour,
Avant tu copiais collais ta requête Access dans Vb, la c'est pareil sauf que tu donnes le nom de ta requête!
Select table ou select requête c'est pareil! Une requête c'est un vue,
https://www.developpez.net/forums/d1...s/#post8640457
Dernière modification par Invité ; 22/05/2017 à 15h06.
Bonjour,
Je reviens vers vous, car toujours avec la même base :
J'ai créé la requête RequeteFreeDesk :
Requête contenant le code suivant :
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT t.site, t.Building, t.Modul, t.Room, t.Desk FROM Offices AS t LEFT JOIN (SELECT Site, Building, Modul, Room, Desk FROM People WHERE ([DebutPeriode] < EndDate) AND ([FinPeriode] > StartDate)) AS r ON (t.Site = r.Site) AND (t.Building = r.Building) AND (t.Modul = r.Modul) AND (t.Room = r.Room) AND (t.Desk = r.desk) WHERE r.Site IS NULL GROUP BY t.site, t.Building, t.Modul, t.Room, t.Desk;
J'ai changé les inégalités strictes par des inégalités simples, j'ai aussi essayé avec deux formats pour la date : #30/05/2017# et #05/30/2017# mais tous me donnent les mêmes résultats, c'est à dire tous les bureaux (1902) sauf 12, la table People est pourtant complète au niveau des dates de début, la plupart mises par défaut au 1er janvier 2000 :
J'ai pourtant scrupuleusement respecté les requêtes écrites précédemment, j'ai l'impression de passe à côté de quelque chose mais je ne sais absolument pas quoi.
Je ne vois pas vraiment d'alternative.
Cordialement
Salut,
un champ nul ne peut pas etre compare a une date =]
Il te faut des comparaisons par defaut avec la fonction Nz()
Cycle de vie d'un bon programme :
1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise
Pas de question technique par MP, je ne réponds pas
Mes ouvrages :
Apprendre à programmer avec Access 2016, Access 2019 et 2021
Apprendre à programmer avec VBA Excel
Prise en main de Dynamics 365 Business Central
Pensez à consulter la FAQ Excel et la FAQ Access
Derniers tutos
Excel et les paramètres régionaux
Les fichiers Excel binaires : xlsb,
Autres tutos
Merci Jean-Philippe André,
Je me retrouve donc avec une requête du genre :
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT t.Site, t.Building, t.Modul, t.Room, t.Desk FROM Offices AS t LEFT JOIN (SELECT Site, Building, Modul, Room, Desk FROM People WHERE (Nz([DebutPeriode],0) < Nz(EndDate,0)) AND (Nz([FinPeriode],0) > Nz(StartDate,0))) AS r ON (t.Desk = r.Desk) AND (t.Room = r.Room) AND (t.Modul = r.Modul) AND (t.Building = r.Building) AND (t.Site = r.Site) WHERE (((r.Site) Is Null)) GROUP BY t.Site, t.Building, t.Modul, t.Room, t.Desk;
Est-ce bien une comparaison des Nz des dates ?
Je ne suis pas certain des valeurs nulles par défaut
Je serais plutot parti sur
Nz(TonChampDate,Date())
Cycle de vie d'un bon programme :
1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise
Pas de question technique par MP, je ne réponds pas
Mes ouvrages :
Apprendre à programmer avec Access 2016, Access 2019 et 2021
Apprendre à programmer avec VBA Excel
Prise en main de Dynamics 365 Business Central
Pensez à consulter la FAQ Excel et la FAQ Access
Derniers tutos
Excel et les paramètres régionaux
Les fichiers Excel binaires : xlsb,
Autres tutos
En faisant cela, si une date de fin n'a pas été remplie, alors elle sera remplacée par la date d'aujourd'hui ?
Ça ne risque pas de poser des problèmes si par exemple je choisis un bureau 1 mois à l'avance, alors tous les bureaux occupés seront libres vu que les bureaux occupés (sans date de fin) se retrouveront avec une date de fin à la date d'aujourd'hui; et la date qui sera comparée sera celle de dans 1 mois.
Auquel cas tu fais un plus pragmatique
Nz([DebutPeriode],EndDate) < EndDate) AND (Nz([FinPeriode],StartDate) > StartDate)
Cycle de vie d'un bon programme :
1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise
Pas de question technique par MP, je ne réponds pas
Mes ouvrages :
Apprendre à programmer avec Access 2016, Access 2019 et 2021
Apprendre à programmer avec VBA Excel
Prise en main de Dynamics 365 Business Central
Pensez à consulter la FAQ Excel et la FAQ Access
Derniers tutos
Excel et les paramètres régionaux
Les fichiers Excel binaires : xlsb,
Autres tutos
Oui c'est certainement plus robuste, cependant le soucis persiste, je me retrouve avec 1890 bureaux soit-disant libres, lorsque je fais une requête qui regarde les EndDate non nulles, je me retrouve avec moins de 250 résultats, alors certes, certains de ces bureaux dont les EndDates sont remplies ont peut-être été réassignés, mais c'est la meilleure approximation que j'ai réussi à faire fonctionner.
Cordialement
Dans les applications que j'ai gere jusqu'a present, une date vide en date de fin signifie jamais disponible, ce n'est pas ton cas ?
Cycle de vie d'un bon programme :
1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise
Pas de question technique par MP, je ne réponds pas
Mes ouvrages :
Apprendre à programmer avec Access 2016, Access 2019 et 2021
Apprendre à programmer avec VBA Excel
Prise en main de Dynamics 365 Business Central
Pensez à consulter la FAQ Excel et la FAQ Access
Derniers tutos
Excel et les paramètres régionaux
Les fichiers Excel binaires : xlsb,
Autres tutos
Effectivement, si aucune date de fin n'est renseignée, c'est que le bureau n'a pas prévu d'être libéré pour le moment. Pour voir les bureaux libres à partir d'une certaine date, je prends donc les bureaux qui ont une date de fin renseignée. Ce n'est pas correct ?
Bonjour,
voilà la syntaxe pour gérer les occupations sans date de fin :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ... (EndDate IS NULL OR [DebutDate] <= EndDate) AND [FinDate] >= StartDate ...
Bonjour galoir,
Les bureaux sans date de fin ne m'intéressent pas vraiment dans le cadre de la recherche des bureaux libres, puisque s'ils n'ont pas de date de fin, alors ils sont occupés.
La requête que j'ai pour le moment bien que pas correcte à 100% fonctionne, je pense la garder comme cela, vu que d'une autre façon ça n'a pas l'air de vouloir marcher.
Je met le sujet en résolu.
Merci encode de votre aide
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager