Page d'Accueil

Fonctions Questionner-Basées

 

Questions et fonctions intégrées

 

Introduction

Dans des leçons précédentes, nous avons vu que le Microsoft Access a été équipé d'une bibliothèque impressionnante des fonctions. Ces fonctions peuvent également être employées dans les questions et être même incluses dans des rapports de SQL. L'interprète de SQL du Microsoft Access peut identifier ces fonctions tant que vous les employez convenablement.

Employer des fonctions dans les questions

Il y a deux manières primaires que vous pouvez inclure une fonction dans une question. Si vous établissez visuellement la question dans la fenêtre choisie de question, vous pouvez écrire une expression qui inclut la fonction. Considérer la liste suivante d'employés :

 

 

 

Imaginer que vous voulez créer une colonne dans une question et que la colonne devrait tenir le nom et prénoms de chaque employé. Dans une colonne d'une table, vous pourriez employer une expression comme :

Employee: [FirstName] & " " & [MiddleName] & " " & [LastName]

Le rapport équivalent de SQL est :

SELECT Employees.EmployeeID, 
       [FirstName] & " " & [MiddleName] & " " & [LastName] AS Employee
FROM Employees;

Ceci produirait :

Noter que quelques employés n'ont pas un deuxième prénom dans leur disque et le champ inclut un espace vide inutile supplémentaire. Imaginer que vous voulez seulement inclure une initiale moyenne au lieu du deuxième prénom de totalité. Vous pouvez employer la fonction de Left$ pour rechercher le premier caractère du deuxième prénom et pour inclure l'appel à cette fonction dans votre question. Pour faire ceci visuellement, si vous créez la question dans la fenêtre choisie de question, écrire simplement l'appel de fonction où le nom de colonne serait. Pour notre scénario, le nom de colonne serait placé comme suit :

Employee: [FirstName] & " " & Left([MiddleName],1) & " " & [LastName]

Ceci produirait :

Noter de nouveau que quelques disques n'ont pas une initiale moyenne parce qu'ils n'ont pas un nom. En outre, le deuxième prénom de quelques disques a été écrit en minuscules. Pour convertir une corde en majuscule, nous avons vu que nous pourrions employer la fonction d'UCase$. Voici un exemple :

Employee: [FirstName] & " " & UCase(Left([MiddleName],1)) & " " & [LastName]

Pour les disques qui ne montrent pas un deuxième prénom, nous pouvons écrire un rapport conditionnel, en utilisant la fonction d'IIf (), pour la vérifier et prenant la mesure appropriée en conséquence. Voici le résultat :

Employee: IIf(IsNull([MiddleName]),[FirstName] & " " & 
		[LastName],[FirstName] & " " & UCase(Left([MiddleName],1)) & 
		" " & [LastName])

Le rapport équivalent de SQL est :

SELECT Employees.EmployeeID, IIf(IsNull([MiddleName]),[FirstName] & " " & _
		[LastName],[FirstName] & " " & UCase(Left([MiddleName],1)) & _
		" " & [LastName]) AS Employee
FROM Employees;

Ceci produirait :

De la même manière, vous pouvez employer des fonctions intégrées l'unes des que nous avons passées en revue dans la leçon 14.

Questions et saisie de données

Comme fait pour une table, des données peuvent être saisies dans une question. Avant de faire ceci, vous devez d'abord créer la question. Après avoir créé la question, la montrer dans la vue de Datasheet et écrire les valeurs dans les cellules. Seulement les colonnes qui viennent d'une table (ou d'une question existante) peuvent recevoir des valeurs. Une colonne qui a été créée d'une expression ne peut pas être éditée puisque le moteur de base de données prend soin de le mettre à jour employant les données saisies.

Quand des données sont saisies dans une question, sa table originale est automatiquement mise à jour. Ceci signifie que vous pouvez créer de nouveaux disques destinés à une table mais à employer une question. 

Questions de résumé et fonctions globales de SQL

 

Introduction

Sans compter que la diverse fonction intégrée de procédures le Microsoft Access et les bibliothèques de base visuelles de Microsoft, le SQL fournit une collection additionnelle de fonctions que vous pouvez employer pour effectuer de diverses opérations valables dans ce qui désigné sous le nom des questions de résumé. Une question de résumé est employée pour effectuer une opération commune sur les valeurs tenues par une question.

Imaginer que vous créez une base de données pour des magasins de meubles où le travail des ventes que les gens sont évaluent basé sur le nombre, fréquence de ventes, ou ventes totales ils ont exécutées pendant une période d'ensemble telle qu'un jour, une semaine, un mois, un trimestre, un semestre, une année, etc. Une question régulière ne te permettrait pas d'obtenir facilement les totaux de leurs ventes. Au lieu de cela, vous pouvez créer une question de résumé pour effectuer facilement une telle opération.

Créer une question de résumé

Considérer la table suivante :

Il y a de diverses informations se reproduisantes dans diverses colonnes. Il y a également une colonne qui montre des valeurs monétaires. Ces différentes colonnes peuvent être employées pour exécuter l'analyse de base de données en groupant les valeurs des façons logiques. Cette question est employée pour créer des groupes de valeurs. Vous pouvez commencer le rapport de SQL avec CHOISI comme nous avons vu jusqu'ici. Voici un exemple :

SELECT Videos.CopyrightYear
FROM Videos;

Cette question contiendrait seulement la colonne de CopyrightYear. En créant une question de résumé, vous devez considérer grouper les valeurs d'une certaine façon. Un groupe peut être fait de noms des colonnes ou être fait de résultats des fonctions ou des expressions. Vous devriez avoir une colonne qui serait employée comme référence. C'est la colonne sur laquelle le « résumé » serait exécuté. Indiquer cette colonne de raison, à la fin du rapport de SQL, précèdent son nom avec le GROUPE PAR expression. Voici un exemple :

SELECT Videos.CopyrightYear
FROM Videos
GROUP BY Videos.CopyrightYear;

Pour effectuer réellement les opérations nécessaires, une question emploie une série de fonctions désignées sous le nom de l'agrégat. Pour la rendre facile de créer ce type de question, vous pouvez employer ou le magicien de question ou dans la vue de conception. 

Pour créer une question de résumé en utilisant le magicien, commencer le magicien de question comme vous normalement. Dans la première page du magicien, vous devriez choisir les colonnes dont les valeurs suivent un modèle. De la table ci-dessus, imaginer que vous voulez obtenir une liste de videos par an mais au lieu de montrer tous les videos pour tous les ans, vous veulent savoir quelle quantité tous les ans de films vous coûte. Pour créer ce type de question en utilisant le magicien, vous pouvez commencer par double-cliquer créez la question en employant le magicien. Dans la première page du magicien, vous devriez choisir la colonne qui a une série de valeurs se reproduisantes. Dans ce cas-ci, ce seraient CopyrightYear et PriceBought :

Dans la deuxième page du magicien, vous seriez invités à indiquer si créer une question régulière ou de résumé. Si vous voulez créer une question de résumé, vous cliqueriez le bouton par radio de résumé et cliqueriez le bouton d'options de résumé :

Ceci ouvrirait la zone de dialogue d'options de résumé. De là, vous pouvez cliquer une ou plusieurs boîtes de contrôle :

Après avoir employé la zone de dialogue d'options de résumé, vous pouvez cliquer BIEN, continuer le magicien, lui donner un nom et montrer le résultat. Comme une question régulière, vous pouvez également modifier une question de résumé qui créait du magicien. Par exemple, vous pouvez placer un critère :

Ceci produirait :

Noter qui, dans la colonne d'année de ©, apparaît tous les ans seulement une fois. Le compte de la colonne de Videos montre le nombre de videos que notre table inclut pendant l'année correspondante.

Pour placer une condition dans une question de résumé, vous précédez la condition avec AVOIR l'opérateur. Le rapport de SQL de cette question est :

SELECT DISTINCTROW Videos.CopyrightYear,
		   Sum(Videos.PriceBought) AS [Sum Of PriceBought],
		   Count(*) AS [Count Of Videos]
FROM Videos
GROUP BY Videos.CopyrightYear
HAVING (((Videos.CopyrightYear) Is Not Null));

Une des conditions du magicien simple de question est qu'il doit pouvoir identifier des valeurs se reproduisantes dans les colonnes que vous avez choisies. Même si vous choisissez une colonne avec des valeurs se reproduisantes, si vous choisissez seulement une colonne, la deuxième page du magicien ne te donnerait pas l'option pour créer une question de résumé. Une autre limitation est celle, dans la première page du magicien, après choix d'une colonne, de elle est enlevée de la liste disponible de champs. Ce qui si vous voulez employer une colonne deux fois dans votre question de résumé ? Le magicien ne permet pas ceci. En fait, c'est pourquoi nous avons choisi la colonne de PriceBought dans la question ci-dessus. Basé sur le résultat que nous avons voulu obtenir, notre question n'a pas eu besoin de elle. Même si vous choisissez plus d'une colonne, par exemple, si vous créez une question de notre table de Videos où vous choisissez le titre et le CopyrightYear, si le magicien n'identifie pas des modèles, la deuxième page du magicien ne vous donnera pas à l'option pour créer une question de résumé.

Au lieu d'employer le magicien, vous pouvez créer une question de résumé dans la vue de conception. Comme mentionné ci-dessus, vous commencez une question de résumé comme une question régulière. Pour lui faire une question de résumé, vous pouvez cliquer les totaux vous boutonnez Totaux sur la conception de question toolbar. Ceci ajouterait une nouvelle rangée marquée totale dans la section inférieure de la fenêtre et chaque colonne choisie serait affectée le groupe de valeur par :

Comme cité précédemment, par opposition au magicien simple de question, dans la vue de conception d'une question, vous peut ajouter une colonne plus d'une fois. Pour une question de résumé, si vous voulez employer seulement une colonne, par exemple pour compter les occurrences de ses valeurs, vous pouvez l'ajouter une deuxième fois.

Dans toute la cellule correspondant à la colonne désirée, vous pouvez cliquer la flèche de la boîte combo et choisir l'option désirée :

Ceci produirait :

Noter que, cette fois, nous pouvons obtenir le nombre de videos par an de notre table de Videos. Le rapport de SQL de cette question est :

SELECT Videos.CopyrightYear, Count(Videos.CopyrightYear) AS CountOfCopyrightYear
FROM Videos
GROUP BY Videos.CopyrightYear
HAVING (((Videos.CopyrightYear) Is Not Null));

Fonctions globales

Pour effectuer ses diverses opérations, un résumé compte dans ce qui sont mentionnés comme des fonctions globales :

  • Compte : La fonction de compte () est employée pour compter le nombre d'occurrences d'une valeur dans une gamme. Voici un exemple :
     
    SELECT Videos.Rating, Count(Videos.Rating) AS CountOfRating
    FROM Videos
    GROUP BY Videos.Rating;
  • Somme : La fonction de somme () est employée pour créer un total de valeurs numériques des entrées communes dans une colonne. Naturellement les valeurs doivent être numériques. Voici un exemple :
     
    SELECT Videos.CopyrightYear, Sum(Videos.PriceBought) AS SumOfPriceBought
    FROM Videos
    GROUP BY Videos.CopyrightYear;
  • Avg : La fonction d'Avg () est employée pour calculer la moyenne de valeurs numériques d'un groupe. Voici un exemple :
     
    SELECT Videos.CopyrightYear, Avg(Videos.PriceBought) AS AvgOfPriceBought
    FROM Videos
    GROUP BY Videos.CopyrightYear;
  • Minute et maximum : Le minimum () (ou le maximum ()) la fonction est employée pour calculer le minimum (ou le maximum) d'un groupe de valeurs. S'il y a seulement une valeur dans le groupe, les deux fonctions renvoient la même valeur. Voici un exemple :
     
    SELECT Videos.CopyrightYear,
           Min(Videos.PriceBought) AS MinOfPriceBought,
           Max(Videos.PriceBought) AS MaxOfPriceBought
    FROM Videos
    GROUP BY Videos.CopyrightYear;
  • Premier et dernier : Le premier () (ou le bout ()) la fonction est employée pour obtenir la première (ou le bout) valeur dans une gamme. S'il y a seulement une valeur dans le groupe, les deux fonctions renvoient la même valeur.
  • StDev : La fonction de StDev () est employée pour calculer l'écart type de toutes les valeurs numériques d'un groupe. S'il n'y a aucune valeur ou la même valeur dans le groupe considéré, cette NULLE de retours de fonction. Ceci signifie qu'il devrait y avoir au moins deux valeurs différentes dans le groupe. Voici un exemple :
     
    SELECT Videos.CopyrightYear, StDev(Videos.PriceBought) AS StDevOfPriceBought
    FROM Videos
    GROUP BY Videos.CopyrightYear;
  • Variété : La fonction de variété () calcule le désaccord statistique de toutes les valeurs numériques d'un groupe. S'il n'y a aucune valeur ou la même valeur dans le groupe considéré, cette NULLE de retours de fonction. Voici un exemple :
     
    SELECT Videos.CopyrightYear, Var(Videos.PriceBought) AS VarOfPriceBought
    FROM Videos
    GROUP BY Videos.CopyrightYear;
  • Expression : Considérer la question suivante que nous avons vue plus tôt :
     

    Imaginer que vous voulez obtenir le pourcentage des occurrences de chaque estimation. Pour obtenir une telle valeur, vous pouvez écrire une expression telle que le compte ([Videos]. [Estimation]) /20. Si vous voulez faire ceci dans une question de résumé, vous pouvez indiquer tout le type comme expression. Voici un exemple :  
     
    SELECT Videos.Rating,
           Count(Videos.Rating) AS CountOfRating,
           Count([Videos].[Rating])/20 AS Percentage
    FROM Videos
    GROUP BY Videos.Rating;

  • Là où : Noter que la question ci-dessus a un disque vide (ou nulle). Ceci note ce tout à fait inutile pour la question. Nous avons cité précédemment que vous pourriez placer une condition dans les critères de boîte de la colonne utilisée comme référence, qui dans ce cas-ci évaluerait. Au lieu d'employer la colonne référentielle, vous pouvez ajouter la même colonne une plus de fois, placez son total à où et, dans ses critères de boîte, présenter type de rapport. En outre, cette colonne additionnelle ne devrait pas être montrée. Ceci signifie que, si créant la question visuellement, vous devez dégager sa boîte de contrôle d'exposition. Voici un exemple :
     


    Si vous écrivez un rapport de SQL pour la question, vous ne devez pas énumérer cette colonne additionnelle dans l'expression CHOISIE :
     
    SELECT 	Videos.Rating,
    	Count(Videos.Rating) AS CountOfRating,
    	Count([Videos].[Rating])/20 AS Percentage
    FROM Videos
    WHERE (((Videos.Rating) Is Not Null))
    GROUP BY Videos.Rating;

    Ceci produirait :
     

 

 

Précédent Copyright © Yevol, 2007 Suivant