Le jeu de la séduction


L'éternel Débutant - Entrée de Journal #6.1
Cet article est d'abord paru sur http://www.undu.com
Si vous avez des requêtes paramétrées, vous êtes probablement obtenir des plages de dates pour un champ ou d'une autre dans le processus. Typique d'un besoin peut être un chiffre total des ventes de rapport pour un temps déterminé.
la solution La plus simple est de mettre en place un couple de datepickers et utiliser les paramètres de la fonction de la requête pour affecter la valeur. Personnellement, j'aime construire la requête dynamiquement à chaque fois. C'est un peu plus lent, mais, je peux voir la totalité de la requête dans mon code de programmation et c'est souvent une aubaine.
en Outre, je tiens à offrir mes utilisateurs une méthode rapide pour entrer dans une telle nébuleuse des délais de ce mois, dernier trimestre ou de l'année à ce jour. Donc, ce qui suit est la manière dont je construis une Date Ranger dans mes applications.
La première étape est l'acquisition de l'ESB Dates freeware bibliothèque. Glen s'Accroupir et de contributeurs ont créé une grande ressource dans le site web: www.esbconsult.com.au
Pendant que vous êtes à l'ESB site, prenez le freeware bibliothèques pour les mathématiques et pour les routines. Chaque code est inclus et son haut-de-gamme de la programmation. Et un coup d'oeil sur les Stats du programme qui est la caractéristique principale du site. Si vous n'avez AUCUNE fantaisie de maths dans votre programme, puis c'est l'outil pour vous.
j'utilise la Date de Ranger formulaire pour servir aussi comme une confirmation de ce que l'utilisateur veut exécuter le rapport. Il dispose de deux datepickers (si vous avez suivi d'autres fils de discussion sur le web, vous savez à propos de la récente craintes au sujet de l'Delphi natif de vendangeurs. J'utilise Orphée de la version à la place, avec sa capacité à il suffit de taper dans de courtes phrases en anglais pour les dates. Orphée est disponible à partir de TurboPower à www.turbopower.com). Ensemble, les deux sélecteurs à la date du jour (ou de la plupart des communes de la plage de dates si il y a une écrasante majorité populaire) dans le formulaire de créer proc.
Un des avantages de l'utilisation de l'Orphée de contrôle est qu'il est facile de convertir des dates dans les quatre chiffres de l'année des chaînes de caractères. Il est appelé DateString et besoin d'un masque, comme vous le verrez.
Inbetweeen les deux datepickers, nommé cdès et dTo respectivement, est un bouton avec une simple légende. Il sert un label ET un conduit pour un menu déroulant pour faciliter la cueillette d'un ensemble de la plage de dates. La procédure pour ce bouton ressemble à ceci:
procédure TFrmReport.BtnToClick(Sender: TObject)
begin
& nbsp & nbsp pmDateRanger.Popup(FrmReport.Gauche 120, FrmReport.Top 84)
fin
En forçant l'appel de la fenêtre contextuelle, vous avez à lui dire où pop-up. Vous pouvez expérimenter et absolue des coordonnées, ou vous pouvez utiliser une formule qui peut être assez impliqué. Une chose à ne pas oublier, lors de l'utilisation de la formule suivante, vous devez créer un assez grand à accueillir la légende et à toute hauteur de menu:
(FrmReport.gauche BtnTo.à gauche, FrmReport.top BtnTo.top BtnTo.hauteur 25)
Vous pouvez aussi pointer le menu contextuel de la propriété du bouton à l'pmDateRanger. De cette façon, si l'utilisateur clique, il s'affiche dans les interdits de l'endroit. Si le droit de l'utilisateur clique sur le bouton, le menu s'affiche par défaut, un certain nombre de pixels plus bas et vers la droite. C'est seulement un peu déconcertant.
dans Le menu pop-up est peuplé de votre choix dans le menu. Le groupe I utilisation peut ou peut ne PAS correspondre à la vôtre. Je suis sûr que vous aurez un groupement différent concept que le mien. Cependant, le secret est dans la fixation de l'étiquette de chaque option de menu, de sorte qu'il peut être traité par une centrale de gestionnaire. J'utilise la 11-13 pendant des jours, du 21 au 23 pendant des semaines, 31-33 pendant des mois, 41-43 pour les quarts, 51-54 pour la date groupe, 61-62 biz jours, 71-72 pendant des années et 80 pour le omniprésente à TOUTES les Dates. Notez que vous pouvez définir le cdès pour un jour plus tôt que 1980 si vous avez besoin d'encore PLUS de la date historique de gamme.
Il est important à ce point de vous dire un piège, je suis tombé dans les trois premières fois que j'ai essayé le programme de cette de la mémoire. (Je suis un newbie, après tout). Il ya un sentiment que vous devriez utiliser le OnPopUp ou de l'événement OnChange du menu déroulant pour faire le menu de la cueillette de la manipulation. Nope! Créer une procédure distincte à l'utilisation de la méthode OnCLICK de chaque élément de menu, ALORS qu'il est affiché dans le concepteur de menu. Ensuite, vous pouvez maj-clic sur l'ensemble de l'action immédiate des éléments de menu et le point le OnClick à votre gestionnaire. NE PAS inclure le parent d'un enfant de menus que vous pourriez avoir. Fait cette erreur.
Le code pour mettre à jour le sélecteur de date pour un set fourchette s'étend de la pmMenuHandler proc:
procédure TFrmReport.pmMenuHandler(Sender: TObject)
var
& nbsp & nbsp t, s : TDateTime
begin
& nbsp & nbsp t := date
& nbsp & nbsp cas (expéditeur TMenuItem).la balise
& ! & ! & ! & nbsp 11 : begin // hier
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateFrom.date := t - 1
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateTo.date := t - 1
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp 12 : begin // aujourd'hui
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateFrom.date := t
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateTo.date := t
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp 13 : begin // demain
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateFrom.date := t 1
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateTo.date := t 1
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp 21 : begin // la semaine dernière
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp s := t - 7
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp tandis que isMonday(s) = false do
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp s := s - 1
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateFrom.date := s
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateTo.date: s= 6
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp 22 : begin // cette semaine
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp s := t
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp tandis que isMonday(s) = false do
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp s := s - 1
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateFrom.date := s
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateTo.date: s= 6
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp 23 : begin // la semaine prochaine
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp s := t 7
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp tandis que isMonday(s) = false do
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp s := s - 1
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateFrom.date := s
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateTo.date: s= 6
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp 31 : begin // le mois dernier
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp s := GetFirstDayOfMonth(t)-1 // obtient le dernier jour du dernier mois.
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateFrom.date := GetFirstDayOfMonth(s)
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateTo.date := s
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp 32 : begin // ce mois-ci
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateFrom.date := GetFirstDayOfMonth(t)
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateTo.date := GetLastDayOfMonth(t)
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp 33 : begin // le mois prochain

& ! & ! & ! & ! & ! & ! & ! & ! & nbsp s := GetLastDayOfMonth(t) 1 // obtient le premier jour de la prochaine mo.
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateFrom.date := s
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateTo.date := GetLastDayOfMonth(s)
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp 41 : begin // le dernier trimestre
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp s := GetFirstDayOfQuarter(t)-1 // obtient le dernier jour de la dernière Q
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateFrom.date := GetFirstDayOfQuarter(s)
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateTo.date := s
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp 42 : begin // ce trimestre
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateFrom.date := GetFirstDayOfQuarter(t)
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateTo.date := GetLastDayOfQuarter(t)
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp 43 : begin // le prochain trimestre
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp s := GetLastDayOfQuarter(t) 1 // obtient le premier jour de la prochaine Q
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateFrom.date := s
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateTo.date := GetLastDayOfQuarter(s)
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp 51 : begin // le mois de la date
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateFrom.date := EncodeDate(ThisYear,nommée thismonth,1)
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateTo.date := t
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp 52 : begin // date de l'année
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateFrom.date := EncodeDate(ThisYear,1,1)
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateTo.date := t
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp 53 : begin // 365 derniers jours
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateFrom.date := t - 365
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateTo.date := t
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp 54 : begin // 13 dernières semaines
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateFrom.date := t - 91
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateTo.date := t
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp 61 : begin // avant biz jour
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp s := t-1 // hier
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp tandis que isWeekend(s)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp do s := s - 1
& ! & ! & ! & ! & ! & ! & ! & ! & nbs eDateFrom.date := s
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateTo.date := s
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp 62 : begin // prochaine biz jour
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp s := t 1 // demain
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp tandis que isWeekend(s)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp do s := s 1
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateFrom.date := s
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateTo.date := s
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp 71 : begin // l'année dernière
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp s := GetFirstDayOfYear(Date2Year(t))-1 // obtient le dernier jour de la dernière an.
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateFrom.date := GetFirstDayOfYear(Date2Year(s))
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateTo.date := s
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp 72 : begin // cette année
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateFrom.date := GetFirstDayOfYear(Date2Year(t))
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateTo.date := GetLastDayOfYear(Date2Year(t))
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp 73 : begin // l'année prochaine
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp s := GetLastDayOfYear(Date2Year(t)) 1 // obtient le premier jour de la prochaine mo.
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateFrom.date := s
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateTo.date := GetLastDayOfYear(Date2Year(s))
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp 80 : begin // toutes les dates
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateFrom.date := strToDate('1/1/1980')
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateTo.date := strToDate('1/1/2222')
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp fin
fin
plus Tard, un fragment de code pour profiter de ce que nous obtenons avec la plage de date sélectionné. Voici le code pour lancer une requête à l'aide de la plage de dates sélectionnée:
procédure TFrmReport.BtnRepPrintClick(Sender: TObject)
var
& nbsp & nbsp dStart, dEnd : string
begin
& nbsp & nbsp dStart := ' (DateProd >= '' cdès.DateString ('mm/dd/yyyy') '')'
& nbsp & nbsp dEnd := ' ET (DateProd <= '' dTo.DateString ('mm/dd/yyyy') '')'
& nbsp & nbsp avec cote do begin
& ! & ! & ! & nbsp active := false
& ! & ! & ! & nbsp sql.beginUpdate
& ! & ! & ! & nbsp sql.clair
& ! & ! & ! & nbsp sql.add('SELECT DISTINCT ')
& ! & ! & ! & nbsp sql.add(' PartNum,')
& ! & ! & ! & nbsp sql.add(' LotNum,')
& ! & ! & ! & nbsp sql.add(' DateProd,')
& ! & ! & ! & nbsp sql.add(' Production,')
& ! & ! & ! & nbsp sql.add(' ProductionValue')
& ! & ! & ! & nbsp sql.add ('DE')
& ! & ! & ! & nbsp sql.add(' 'VENTES'.db'')
& ! & ! & ! & nbsp sql.add ('OÙ')
& ! & ! & ! & nbsp sql.ajouter( DStart)
& ! & ! & ! & nbsp sql.ajouter( Dfin)
& ! & ! & ! & nbsp sql.add('ORDER BY ')
& ! & ! & ! & nbsp sql.add(' PartNum,')
& ! & ! & ! & nbsp sql.add(' LotNum,')
& ! & ! & ! & nbsp sql.add(' DateProd,')
& ! & ! & ! & nbsp sql.add(' Production,')
& ! & ! & ! & nbsp sql.add(' ProductionValue')
& ! & ! & ! & nbsp sql.EndUpdate
& ! & ! & ! & nbsp active := true
& ! & ! & ! & nbsp fin
& nbsp & nbsp qrValue.Impression
fin
Il n'y a pas de question, je peux avoir paramaterized cette requête. Mais il est vraiment facile à construire et à modifier. Par exemple, beaucoup de modification du nombre de case sur le formulaire de rapport pour permettre l'option de limiter le rapport. Une simple ligne à ajouter, après le 'ajouter dfin' ligne serait:
si editLotNum.text <> '
& nbsp & nbsp sql.add (' ET LotNum='' editLotNum.le texte'') '
Si vous avez BEAUCOUP de paramètres à remplir de cette façon, puis aller à l'un des sql dynamique de la création de services publics. Ils semblent surgir de partout. J'utilise SimpleQuery de lelSoft (http://lelsoft.hypermart.net). Mais si la date allant est tout ce dont vous avez besoin, vous devriez être en jeu à écrire votre propre.
Gary Mugford
l'Idée de Mécanicien, Bramalea SUR Canada
[email protected]









Le jeu de la seduction


Le jeu de la seduction : Plusieurs milliers de conseils pour vous faciliter la vie.


L'eternel Debutant - Entree de Journal #6.1
Cet article est d'abord paru sur http://www.undu.com
Si vous avez des requetes parametrees, vous etes probablement obtenir des plages de dates pour un champ ou d'une autre dans le processus. Typique d'un besoin peut etre un chiffre total des ventes de rapport pour un temps determine.
la solution La plus simple est de mettre en place un couple de datepickers et utiliser les parametres de la fonction de la requete pour affecter la valeur. Personnellement, j'aime construire la requete dynamiquement a chaque fois. C'est un peu plus lent, mais, je peux voir la totalite de la requete dans mon code de programmation et c'est souvent une aubaine.
en Outre, je tiens a offrir mes utilisateurs une methode rapide pour entrer dans une telle nebuleuse des delais de ce mois, dernier trimestre ou de l'annee a ce jour. Donc, ce qui suit est la maniere dont je construis une Date Ranger dans mes applications.
La premiere etape est l'acquisition de l'ESB Dates freeware bibliotheque. Glen s'Accroupir et de contributeurs ont cree une grande ressource dans le site web: www.esbconsult.com.au
Pendant que vous etes a l'ESB site, prenez le freeware bibliotheques pour les mathematiques et pour les routines. Chaque code est inclus et son haut-de-gamme de la programmation. Et un coup d'oeil sur les Stats du programme qui est la caracteristique principale du site. Si vous n'avez AUCUNE fantaisie de maths dans votre programme, puis c'est l'outil pour vous.
j'utilise la Date de Ranger formulaire pour servir aussi comme une confirmation de ce que l'utilisateur veut executer le rapport. Il dispose de deux datepickers (si vous avez suivi d'autres fils de discussion sur le web, vous savez a propos de la recente craintes au sujet de l'Delphi natif de vendangeurs. J'utilise Orphee de la version a la place, avec sa capacite a il suffit de taper dans de courtes phrases en anglais pour les dates. Orphee est disponible a partir de TurboPower a www.turbopower.com). Ensemble, les deux selecteurs a la date du jour (ou de la plupart des communes de la plage de dates si il y a une ecrasante majorite populaire) dans le formulaire de creer proc.
Un des avantages de l'utilisation de l'Orphee de controle est qu'il est facile de convertir des dates dans les quatre chiffres de l'annee des chaînes de caracteres. Il est appele DateString et besoin d'un masque, comme vous le verrez.
Inbetweeen les deux datepickers, nomme cdes et dTo respectivement, est un bouton avec une simple legende. Il sert un label ET un conduit pour un menu deroulant pour faciliter la cueillette d'un ensemble de la plage de dates. La procedure pour ce bouton ressemble a ceci:
procedure TFrmReport.BtnToClick(Sender: TObject)
begin
& nbsp & nbsp pmDateRanger.Popup(FrmReport.Gauche 120, FrmReport.Top 84)
fin
En forçant l'appel de la fenetre contextuelle, vous avez a lui dire ou pop-up. Vous pouvez experimenter et absolue des coordonnees, ou vous pouvez utiliser une formule qui peut etre assez implique. Une chose a ne pas oublier, lors de l'utilisation de la formule suivante, vous devez creer un assez grand a accueillir la legende et a toute hauteur de menu:
(FrmReport.gauche BtnTo.a gauche, FrmReport.top BtnTo.top BtnTo.hauteur 25)
Vous pouvez aussi pointer le menu contextuel de la propriete du bouton a l'pmDateRanger. De cette façon, si l'utilisateur clique, il s'affiche dans les interdits de l'endroit. Si le droit de l'utilisateur clique sur le bouton, le menu s'affiche par defaut, un certain nombre de pixels plus bas et vers la droite. C'est seulement un peu deconcertant.
dans Le menu pop-up est peuple de votre choix dans le menu. Le groupe I utilisation peut ou peut ne PAS correspondre a la votre. Je suis sûr que vous aurez un groupement different concept que le mien. Cependant, le secret est dans la fixation de l'etiquette de chaque option de menu, de sorte qu'il peut etre traite par une centrale de gestionnaire. J'utilise la 11-13 pendant des jours, du 21 au 23 pendant des semaines, 31-33 pendant des mois, 41-43 pour les quarts, 51-54 pour la date groupe, 61-62 biz jours, 71-72 pendant des annees et 80 pour le omnipresente a TOUTES les Dates. Notez que vous pouvez definir le cdes pour un jour plus tot que 1980 si vous avez besoin d'encore PLUS de la date historique de gamme.
Il est important a ce point de vous dire un piege, je suis tombe dans les trois premieres fois que j'ai essaye le programme de cette de la memoire. (Je suis un newbie, apres tout). Il ya un sentiment que vous devriez utiliser le OnPopUp ou de l'evenement OnChange du menu deroulant pour faire le menu de la cueillette de la manipulation. Nope! Creer une procedure distincte a l'utilisation de la methode OnCLICK de chaque element de menu, ALORS qu'il est affiche dans le concepteur de menu. Ensuite, vous pouvez maj-clic sur l'ensemble de l'action immediate des elements de menu et le point le OnClick a votre gestionnaire. NE PAS inclure le parent d'un enfant de menus que vous pourriez avoir. Fait cette erreur.
Le code pour mettre a jour le selecteur de date pour un set fourchette s'etend de la pmMenuHandler proc:
procedure TFrmReport.pmMenuHandler(Sender: TObject)
var
& nbsp & nbsp t, s : TDateTime
begin
& nbsp & nbsp t := date
& nbsp & nbsp cas (expediteur TMenuItem).la balise
& ! & ! & ! & nbsp 11 : begin // hier
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateFrom.date := t - 1
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateTo.date := t - 1
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp 12 : begin // aujourd'hui
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateFrom.date := t
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateTo.date := t
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp 13 : begin // demain
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateFrom.date := t 1
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateTo.date := t 1
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp 21 : begin // la semaine derniere
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp s := t - 7
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp tandis que isMonday(s) = false do
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp s := s - 1
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateFrom.date := s
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateTo.date: s= 6
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp 22 : begin // cette semaine
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp s := t
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp tandis que isMonday(s) = false do
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp s := s - 1
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateFrom.date := s
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateTo.date: s= 6
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp 23 : begin // la semaine prochaine
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp s := t 7
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp tandis que isMonday(s) = false do
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp s := s - 1
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateFrom.date := s
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateTo.date: s= 6
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp 31 : begin // le mois dernier
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp s := GetFirstDayOfMonth(t)-1 // obtient le dernier jour du dernier mois.
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateFrom.date := GetFirstDayOfMonth(s)
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateTo.date := s
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp 32 : begin // ce mois-ci
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateFrom.date := GetFirstDayOfMonth(t)
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateTo.date := GetLastDayOfMonth(t)
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp 33 : begin // le mois prochain

& ! & ! & ! & ! & ! & ! & ! & ! & nbsp s := GetLastDayOfMonth(t) 1 // obtient le premier jour de la prochaine mo.
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateFrom.date := s
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateTo.date := GetLastDayOfMonth(s)
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp 41 : begin // le dernier trimestre
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp s := GetFirstDayOfQuarter(t)-1 // obtient le dernier jour de la derniere Q
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateFrom.date := GetFirstDayOfQuarter(s)
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateTo.date := s
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp 42 : begin // ce trimestre
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateFrom.date := GetFirstDayOfQuarter(t)
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateTo.date := GetLastDayOfQuarter(t)
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp 43 : begin // le prochain trimestre
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp s := GetLastDayOfQuarter(t) 1 // obtient le premier jour de la prochaine Q
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateFrom.date := s
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateTo.date := GetLastDayOfQuarter(s)
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp 51 : begin // le mois de la date
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateFrom.date := EncodeDate(ThisYear,nommee thismonth,1)
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateTo.date := t
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp 52 : begin // date de l'annee
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateFrom.date := EncodeDate(ThisYear,1,1)
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateTo.date := t
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp 53 : begin // 365 derniers jours
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateFrom.date := t - 365
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateTo.date := t
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp 54 : begin // 13 dernieres semaines
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateFrom.date := t - 91
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateTo.date := t
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp 61 : begin // avant biz jour
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp s := t-1 // hier
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp tandis que isWeekend(s)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp do s := s - 1
& ! & ! & ! & ! & ! & ! & ! & ! & nbs eDateFrom.date := s
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateTo.date := s
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp 62 : begin // prochaine biz jour
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp s := t 1 // demain
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp tandis que isWeekend(s)
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp do s := s 1
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateFrom.date := s
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateTo.date := s
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp 71 : begin // l'annee derniere
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp s := GetFirstDayOfYear(Date2Year(t))-1 // obtient le dernier jour de la derniere an.
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateFrom.date := GetFirstDayOfYear(Date2Year(s))
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateTo.date := s
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp 72 : begin // cette annee
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateFrom.date := GetFirstDayOfYear(Date2Year(t))
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateTo.date := GetLastDayOfYear(Date2Year(t))
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp 73 : begin // l'annee prochaine
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp s := GetLastDayOfYear(Date2Year(t)) 1 // obtient le premier jour de la prochaine mo.
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateFrom.date := s
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateTo.date := GetLastDayOfYear(Date2Year(s))
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp 80 : begin // toutes les dates
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateFrom.date := strToDate('1/1/1980')
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp eDateTo.date := strToDate('1/1/2222')
& ! & ! & ! & ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp fin
fin
plus Tard, un fragment de code pour profiter de ce que nous obtenons avec la plage de date selectionne. Voici le code pour lancer une requete a l'aide de la plage de dates selectionnee:
procedure TFrmReport.BtnRepPrintClick(Sender: TObject)
var
& nbsp & nbsp dStart, dEnd : string
begin
& nbsp & nbsp dStart := ' (DateProd >= '' cdes.DateString ('mm/dd/yyyy') '')'
& nbsp & nbsp dEnd := ' ET (DateProd <= '' dTo.DateString ('mm/dd/yyyy') '')'
& nbsp & nbsp avec cote do begin
& ! & ! & ! & nbsp active := false
& ! & ! & ! & nbsp sql.beginUpdate
& ! & ! & ! & nbsp sql.clair
& ! & ! & ! & nbsp sql.add('SELECT DISTINCT ')
& ! & ! & ! & nbsp sql.add(' PartNum,')
& ! & ! & ! & nbsp sql.add(' LotNum,')
& ! & ! & ! & nbsp sql.add(' DateProd,')
& ! & ! & ! & nbsp sql.add(' Production,')
& ! & ! & ! & nbsp sql.add(' ProductionValue')
& ! & ! & ! & nbsp sql.add ('DE')
& ! & ! & ! & nbsp sql.add(' 'VENTES'.db'')
& ! & ! & ! & nbsp sql.add ('OU')
& ! & ! & ! & nbsp sql.ajouter( DStart)
& ! & ! & ! & nbsp sql.ajouter( Dfin)
& ! & ! & ! & nbsp sql.add('ORDER BY ')
& ! & ! & ! & nbsp sql.add(' PartNum,')
& ! & ! & ! & nbsp sql.add(' LotNum,')
& ! & ! & ! & nbsp sql.add(' DateProd,')
& ! & ! & ! & nbsp sql.add(' Production,')
& ! & ! & ! & nbsp sql.add(' ProductionValue')
& ! & ! & ! & nbsp sql.EndUpdate
& ! & ! & ! & nbsp active := true
& ! & ! & ! & nbsp fin
& nbsp & nbsp qrValue.Impression
fin
Il n'y a pas de question, je peux avoir paramaterized cette requete. Mais il est vraiment facile a construire et a modifier. Par exemple, beaucoup de modification du nombre de case sur le formulaire de rapport pour permettre l'option de limiter le rapport. Une simple ligne a ajouter, apres le 'ajouter dfin' ligne serait:
si editLotNum.text <> '
& nbsp & nbsp sql.add (' ET LotNum='' editLotNum.le texte'') '
Si vous avez BEAUCOUP de parametres a remplir de cette façon, puis aller a l'un des sql dynamique de la creation de services publics. Ils semblent surgir de partout. J'utilise SimpleQuery de lelSoft (http://lelsoft.hypermart.net). Mais si la date allant est tout ce dont vous avez besoin, vous devriez etre en jeu a ecrire votre propre.
Gary Mugford
l'Idee de Mecanicien, Bramalea SUR Canada
[email protected]


Le jeu de la séduction

Le jeu de la séduction : Plusieurs milliers de conseils pour vous faciliter la vie.
Recommander aux amis
  • gplus
  • pinterest

Messages récents

Commentaire

Laisser un commentaire

évaluation