create pdf thumbnail image c# : Add picture to pdf form control application platform web page html .net web browser AccessTutorial5-part964

Fig 
3.6
Messages and control tips
Select New guest in Design mode.
Define ControlTip text.
Use Shift+F2 for long texts
To show  a message box:
Enter the Visual Basic world
with Ctrl+G (debugger)
Type these commands.
Select New guest in Design mode.
Define ControlTip text.
Use Shift+F2 for long texts
You can add as many screen parts to the Word docu-
ment as you like. Then print it and your mockup is al-
most ready. What remains is to copy pages, trim mes-
sage boxes and control tips with scissors, and write 
data in the various windows. Usually it is best to en-
large the screens when you copy them. 
In the document, you now see a copy of the entire win-
dow (or the message box). For mockup purposes, you 
will only need a small part of the entire window. Crop 
away the unnecessary parts as follows: 
10. In the Word document, select the screen picture. If 
necessary, open the Picture toolbox (View -> 
Toolbars -> Picture). 
This works but is very cumbersome, and it is almost 
impossible to crop away exactly the right amount. 
Further, the document becomes a huge file due to all 
the large screen dumps (they are there in full size even 
if you have cropped most of them away). 
11. Select the Crop tool from the picture toolbox. 
12. Crop the picture so that you only have the neces-
sary part left. 
Copy a menu. With this approach you cannot copy a 
drop-down menu, because it rolls up when you press 
Alt. To copy a drop-down menu, you have to use Print 
Screen without Alt. This copies the entire screen to the 
clipboard. You then have to crop away most of the 
screen, but it can be done. 
For professional use, get a screen grabber (a screen 
capture tool). There are freeware screen grabbers avail-
able that work very well. These tools help you copy 
just the right part of the screen, and many of them can 
also capture a menu when it is rolled down. 
3. Access-based user interfaces 
51
Add picture to pdf form - C# PDF Field Edit Library: insert, delete, update pdf form field in C#.net, ASP.NET, MVC, Ajax, WPF
Online C# Tutorial to Insert, Delete and Update Fields in PDF Document
add attachment to pdf form; pdf save form data
Add picture to pdf form - VB.NET PDF Field Edit library: insert, delete, update pdf form field in vb.net, ASP.NET, MVC, Ajax, WPF
How to Insert, Delete and Update Fields in PDF Document with VB.NET Demo Code
change font size in pdf form; pdf fillable form creator
4. Queries - computed tables 
Highlights 
Combine multiple tables into one (Query). 
Basics of Structured Query Language  (SQL). 
User-entered search criteria. 
In this chapter we will begin making a functional pro-
totype that can show real data and update it. To do this, 
we often have to combine data from many tables in the 
database. All relational database systems provide 
means for combining tables into new tables by means 
of queries. In this chapter we will see how to do it in 
Access. 
4.1 Query: join two tables 
In Chapter 3 we had a simple version of the Find Guest 
window. It showed a list of guests based on data from 
the Guest table. In the real system we want to show a 
list of stays, including data about the guest and the 
room booked. This means that we have to combine 
data from the Stay table, the Guest table, and the 
RoomState table.  
Our first version of the stay list will just combine the 
Stay table and the Guest table. The bottom of Figure 
4.1 shows the result we want: a single table with some 
fields from tblStay and some from tblGuest.  
Create a query 
1.  Start in the database window. Select Queries and 
Create query in Design view. (In Access 97 select 
New and then Design view.
2.  Access asks you to select the tables you want to 
combine. Select tblGuest and tblStay (Figure 4.1). 
Click Add and then Close. 
You now see the query design window (middle of Fig-
ure 4.1). The top part of the window is an E/R-model, 
in our case consisting of tblGuest and tblStay. Access 
has included the relationship from the full E/R-model. 
It shows that the tables will be combined according to 
guestID. This is just what we want in our case, but in 
other cases you have to remove the relationships you 
don't need and add new ones that you need for the 
query. These changed relationships are only used in the 
query; they don't influence the full E/R-model. 
You may delete tables from the query window or add 
further tables by right-clicking in the E/R-model. 
In the lower part of the window, you see the query 
grid where we will make a column for each field in the 
computed table. 
3.  Drag stayID from tblStay to the grid. Then drag 
nameaddress1 and phone from tblGuest. Finally, 
drag state from tblStay. (You may also double-
click the fields.) 
You may rearrange the columns by selecting a column 
and dragging it to another place. 
4.  Switch to datasheet view. The query table should 
look like the bottom of the figure. It contains all 
stays recorded in the database with guest informa-
tion attached. In the example, John Simpson has 
three stays and Yun Chen two stays. 
5.  Save the query and give it the name qryStayList
(The standard prefix for queries is qry.) 
This looks almost too easy. What happens really? 
Access has made a so-called join of tblGuest and 
tblStay. According to the E/R-model, each record in 
tblStay has a connecting string to a record in tblGuest. 
In the query table, there will be one record for each of 
these strings. If one of the stays didn't have a string to a 
guest, this stay would not occur in the result. 
Since each query record corresponds to a string be-
tween two source records, we can include arbitrary 
fields from both source tables. This is what we have 
done. 
Star = all fields? Note that the data model at the top of 
the query window has a star in each box. It means "all 
fields". You may drag it to the grid and all source fields 
will be included in the query table. This may be con-
venient, but don't do it yet. Why? Assume that you 
drag the star from both tables. Then you will have two 
guestID fields in the result. You then have to refer to 
them as tblStay.guestID and tblGuest.guestID. This 
leads to endless confusion later, particularly because 
some of Access's built-in Wizards cannot figure out 
about these names and screw things up.  
Dynaset and data entry to query table 
The query not only shows data, it can also be used for 
data entry. Try these experiments: 
6.  Open qryStayList and tblGuest at the same time. 
7.  In the query table, change the name of one of the 
guests. As soon as you move the cursor to the next 
line, you will see the change in the query table as 
well as the guest table. 
8.  In tblGuest, try to change the guest name again. 
The query table will be updated immediately. 
The query table we look at is a dynaset because it is 
updated automatically. We can enter data into it be-
cause it is a simple query where Access can find out 
how to store the data into the source tables. For more 
complex queries, this is not possible.   
52 
4. Queries - computed tables 
C# PDF insert image Library: insert images into PDF in C#.net, ASP
Insert images into PDF form field. Access to freeware download and online C#.NET class source code. How to insert and add image, picture, digital photo, scanned
change font in pdf form field; pdf form save
VB.NET PDF insert image library: insert images into PDF in vb.net
Import graphic picture, digital photo, signature and logo into PDF Add images to any selected PDF page in VB.NET. Insert images into PDF form field in VB.NET.
adding a text field to a pdf; cannot edit pdf form
Fig 
4.1
Query - join two tables
Computed
tables
Tables
to join
Tables
to join
Drag wanted
fields to grid.
Drag the wanted
fields to grid.
(Or double click)
Wanted:
List of stays
with guest data
Datasheet
view
Query grid
The query has a property called Recordset Type. It is 
Dynaset as a standard, but you can change it to Snap-
shot. Then Access computes the record list when you 
open the query, and doesn't update it dynamically. In 
this case you cannot enter data through the query. 
(How to find the Recordset Property? From the query 
design window, use View -> Properties. But don't 
change anything right now.) 
Adding/deleting records in a dynaset 
9.  In the query table, enter a guest name in the last 
line (with star-indication). When you move the 
cursor up, you have created a new guest record 
(but not a new stay record). You cannot see it in 
tblGuest, but if you close and open tblGuest, you 
will see it. (Using the sort button A/Z on the tool-
bar will also show the new guest.) 
10. In the query table, enter a state in the last line and 
move the cursor up. Access refuses to do it. It tries 
to create a stay record, but lacks the foreign key to 
the guest and cannot preserve the referential integ-
rity. If you had included the foreign key in the 
query, you could set it now and succeed. Never 
mind. (Remember to use Esc to get out of the in-
consistent data update.) 
11. In the query table, try to delete a line. What you 
delete is the stay record, not the guest record. 
Conclusion. The dynaset is suitable for editing data 
produced by a simple query. As soon as you fill in a 
field in the new record line (star-marked), Access will 
try to create a new record. If you fill in a field from the 
guest table, Access will make a guest record. If you fill 
in a field from the stay table, Access will (also) make a 
stay record. When you move the cursor to another 
record, Access will check that referential integrity and 
other rules are met. 
4. Queries - computed tables 
53
VB.NET Image: Image Cropping SDK to Cut Out Image, Picture and
VB.NET image cropping method to crop picture / photo; size of created cropped image file, add antique effect Public Partial Class Form1 Inherits Form Public Sub
pdf add signature field; create a pdf form online
VB.NET Image: Image Scaling SDK to Scale Picture / Photo
VB.NET DLLs to Scale Image / Picture. There are two this VB.NET image scaling control add-on, we RE__Test Public Partial Class Form1 Inherits Form Public Sub New
adding text fields to pdf acrobat; add submit button to pdf form
4.2 SQL and how it works 
SQL means Structured Query Language. Behind a 
query is always an SQL-statement that specifies what 
to compute. Let us look at the SQL statement in 
qryStayList: 
1.  Open qryStayList. Select SQL view with the view 
menu at the top left of the Access window. 
The result should be as shown on Figure 4.2. At first 
sight, an SQL-statement looks overwhelming, but after 
a while it is not so hard to read. Most SQL-statements 
are SELECT statements with this structure: 
SELECT <the fields to show in the result> 
FROM <one or more tables> 
The SELECT part corresponds to the top-two lines of 
the query grid. Field names may include strange char-
acters, and in this case Access surrounds the name with 
square brackets to avoid that the name is interpreted as 
something else. (Often Access surrounds the names 
with square brackets for no apparent reason.) Examples 
of names with strange characters: 
guest# written as [guest#] 
Guest History written as [Guest History] 
The FROM part corresponds to the tables and the rela-
tionships in the top part of the query window. In our 
example, the FROM part says that tblGuest and tblStay 
must be joined, and the join criterion must be that 
guestID must be equal in the two tables. 
Actually, Access stores the query as an SQL-statement, 
and when we want to see the query in design view, 
Access translates it into a grid and the data model. You 
can sometimes observe this when you have set up the 
grid in one way. When you close the query and open it 
again, the grid looks different, for instance with the 
columns in a different sequence. Your version and 
Access's version correspond to the same SQL state-
ment. 
You can also type the SQL-statement directly in SQL-
view. Access may still be able to show it as a grid, but 
for some SQL-statements it is not possible. For in-
stance this is the case with a UNION statement, where 
two tables are to be concatenated one after the other. 
Access can handle this, but not show it as a grid. 
Expert Access developers sometimes define a query 
with a grid, sometimes with SQL, and often they 
switch between the two during development. 
Capital letters. Access doesn't care whether you type 
with capitals or small letters. For instance you may 
type SELECT with small letters, but when you close 
and open the query in SQL view, SELECT will be with 
capitals. When you define field names and other 
names, Access remembers the capitalization in the 
name definition, but accepts names written with differ-
ent caps as equivalent. 
The matrix at the bottom of Figure 4.2 illustrates what 
the SQL-statement basically does. It finds the result in 
seven steps (a to g): 
a) Cartesian product. The SQL-engine takes the 
first guest record and extends it with all the fields 
from the first stay record. It corresponds to the top 
left cell of the matrix. Then it takes the second 
guest record and extends it with the first stay 
record. This corresponds to the second cell in the 
top row. And so on for all the guest records. This 
corresponds to all the cells in the top-row of the 
matrix. Then it does it once again using the second 
stay record. This gives the second row of the ma-
trix. And so on until we have got a row for each 
stay record. 
In summary, the matrix corresponds to all the possible 
combinations of a stay and a guest. If tblGuest has x 
records and tblStay y records, the result will be x*y 
records. This is called the Cartesian product after the 
mathematician and philosopher Des Cartes. 
b) Join. Next, the SQL-engine discards all cells 
where the join criterion is not met. In our case, the 
criterion is that guestID must be equal in the two 
source tables. What is left are the cells marked 
with a cross on the figure. Notice that all stays are 
included because they have a cross in their row. 
However some guests (for instance guest 2) are not 
included because no stay is recorded for them in 
the database. 
c) Where. We can also specify Where criteria, for 
instance  
Where state=1
This would cause the SQL-engine to discard all 
cells where state isn't one. They are discarded at 
this point of the process. 
d) Group By. We can specify Group-By criteria. 
They cause the SQL-engine to bundle the 
remaining records according to the Group-By 
criteria and compress each bundle into one record. 
e) Having. If we have a Group-By, we can also 
specify  Having criteria. They tell the SQL-engine 
to keep only bundles that meet the criterion. Other 
bundles are discarded at this point. 
f) Order By. We can ask the SQL-engine to order 
the remaining records according to some criteria. 
Some people say that the records are sorted rather 
than ordered.  
54 
4. Queries - computed tables 
C# TIFF: How to Insert & Burn Picture/Image into TIFF Document
Support adding image or picture to an existing or new new REImage(@"c:\ logo.png"); // add the image powerful & profession imaging controls, PDF document, tiff
add jpg to pdf form; best way to create pdf forms
VB.NET Image: Image Resizer Control SDK to Resize Picture & Photo
NET Method to Resize Image & Picture. Here we this VB.NET image resizer control add-on, can provide powerful & profession imaging controls, PDF document, image
add forms to pdf; adding text to pdf form
Fig 4.2  What SQL does step-by-step
a) Cartesian product: 
5*7 combinationsof guest and stay
b) Join: 
Include only those where 
tblGuest.guestID = tblStay.guestID
c) Where:
Include only thosewhere . . .
d) Group By:
Compress bundles of records to one
e) Having:
Include only bundles where . . .
f)  Order By:
Sort the remaining records according to . . .
g) Select:
Select and compute new fields,
discard the rest
tblGuest: guestID
tblStay:
stayID, guestID
728  1
736  1
740  1
727  5
729  5
737  6
739  8
1
2
5
6
8
g) Select. Finally, SQL discards all the fields that we 
have not mentioned in the SELECT-part. In the 
grid there is a Show indication in each column. It 
indicates that this column must be in the SELECT-
part and be shown in the final table. We will later 
see that we can compute new fields in the 
SELECT part. This computation also takes place at 
this stage. 
Notice that these rules tell us that we can have join 
criteria (and other criteria) that refer to fields that are 
not shown in the result. We have utilized this rule in 
qryStayList because the join criterion is given by 
guestID, which isn't in the result at all. 
Although the query result is as described above, the 
SQL-engine doesn't arrive at it that way. It would take 
much too long time in large databases. Assume that we 
joined two tables each with 10,000 records. The SQL-
engine would have to create 100 million combination 
records, and then discard most of them. In practice, the 
SQL-engine uses index tables and other tricks to create 
only the "crosses". 
Wonder why we talk about Access and the SQL-en-
gine? You don't see the SQL-engine directly because 
Access's user interface hides it. But Access and the 
SQL-engine are two different software components. 
We may connect our Access application to another 
SQL-engine than the one delivered with Access. As an 
example, we might connect it to an Oracle database. 
Most of our user interface would still work the same 
way. 
4. Queries - computed tables 
55
VB.NET Image: How to Save Image & Print Image Using VB.NET
of saving and printing multi-page document files, like PDF and Word, in assembly with VB.NET web image viewer add-on, you VB.NET Method to Save Image / Picture.
change font size in pdf form field; change font pdf form
VB.NET PowerPoint: Add Image to PowerPoint Document Slide/Page
image, clip art or screenshot, the picture will be AddPage", "InsertPage" and "DeletePage" to add, insert or & profession imaging controls, PDF document, tiff
can save pdf form data; convert pdf to editable form
4.3 Outer join 
The query we made above used an INNER JOIN in the 
SQL-statement. Can we also make an outer join? Yes, 
and we need it right now. Usability tests showed that 
users had troubles distinguishing guests from stays. 
The solution turned out to be that whatever the user 
searched for, the system would show matching stays 
and matching guests. 
What we need is a list of all stays, but the list must also 
include guests that have no stay at present in the data-
base (guest 2 on Figure 4.2 was an example). Now we 
want to include all guests, no matter whether they have 
a matching stay or not. This is an OUTER JOIN. Make 
it this way: 
1.  Make sure there is a guest in the database without 
a stay. If not, enter a new guest record now. 
2.  Show qryStayList in design mode (Figure 4.3). 
3.  Select the relationship arrow, then right-click it. 
Choose inclusion of all records from tblGuest. 
4.  Switch to datasheet view. Now the stay-less guests 
should appear on the list. These lines will have 
blanks in the fields originating in tblStay. 
5.  Look also at the SQL version. It now says  
FROM tblGuest LEFT JOIN qryStayArrival 
ON ...
This means that all records in the left side table 
have to be included. Right joins exist too, of 
course. An outer join means a Left or a Right Join. 
What happens in an outer join? When the system finds 
a guest without any stay, it combines the guest with a 
blank stay record and includes it in the result. The bot-
tom of Figure 4.3 shows how this rule would include 
guest 2. Blank fields have the value Null. 
56 
4. Queries - computed tables 
C# Image: How to Add Antique & Vintage Effect to Image, Photo
function to add antique charm to picture & photo C#.NET antique effect creating control add-on is powerful & profession imaging controls, PDF document, tiff
add image field to pdf form; create pdf form
VB.NET Image: VB.NET Codes to Add Antique Effect to Image with .
mature technology to replace a picture's original colors add the glow and noise, and add a little powerful & profession imaging controls, PDF document, image
pdf form save in reader; change font pdf fillable form
Fig 
4.3
Outer join
Wanted:
Include all guests
Outer join:
Right-click and choose
Outer join:
Right-click and choose
Blanks for stay fields
Outer join:
Add missing guests combined
with a blank stay (Null values).
tblGuest: guestID  
tblStay:
stayID, guestID  
SELECT tblStay.stayID, tblGuest.name,  . . .
FROM tblGuest LEFT JOIN tblStay ON
tblGuest.guestID = tblStay.guestID;
1      2      5      6      8
728  1
736  1
740  1
727  5
729  5
737  6
739  8
Null stay  
4. Queries - computed tables 
57
4.4 Aggregate query - Group By 
If we want to use the stay list for the real user interface, 
we still lack something: the arrival date and the room 
number. In order to get this data, we have to include 
data from tblRoomState: 
arrival  =  first date among the room states. 
room    =  first roomID among the room states.  
When there is more than one room, 
show only the text "more".  
We will first compute an extended version of the stay 
table with these data added to each stay. The small da-
tasheet to the right in Figure 4.4A outlines the desired 
result. In order to do this, we have to bundle all room 
states of the stay into one, leaving only the arrival date 
and the room indication. This is an example of an ag-
gregate query. Here is how to do it: 
1.  From the database window, create a new query in 
design mode. Include tblRoomState and tblStay. 
(See top of Figure 4.4A.) 
2.  Drag these fields to the grid: stayID , guestIDstate 
(from tblStay) , date and roomID . You now have 
an ordinary inner join based on the criterion 
tblRoomState.stayID=tblStay.stayID
3.  Change to datasheet view. You should now see a 
table like the one at the lower left of Figure 4.4A. 
It contains a record for each of the room states - 
with some of the stay fields added. 
Find the smallest date and roomID. We want to 
combine all records with the same stayID into one, as 
shown on the figure. For instance we have four records 
with stayID = 727. They make up a bundle of records. 
All the records in the bundle have the same stayID, but 
they have different dates and room numbers. We want 
to compress this bundle into one record - the one 
shown to the right. 
4.  Click the sum symbol on the tool bar (
Σ
) or right-
click in the grid to find the 
Σ
. You will now see a 
new row in the grid, Total 
Initially, Access shows Group By everywhere in the 
total-line. We want to group records by stayID. For 
date and roomID we want to find the lowest value in 
each group: 
5.  Change the total-setting for the date column to 
Min. Do the same for the roomID column. If you 
now change to datasheet view, you should see a 
shorter table, somewhat like the one to the right. 
The heading for the date column now says MinOfDate 
and it correctly shows the first date for this stay. The 
roomID column is similar.  
You may wonder why we have left guestID and state 
as Group By. Actually, when two records have the 
same stayID, they also have the same guestID and 
state, because these columns are fields from the stay 
table. So grouping by them is alright. You may try to 
change the setting for guestID to Min rather than 
Group By. It makes no change in the result since all 
records in the bundle have the same stayID and thus 
the same guestID. 
6.  Save the query and give it the name qryStay-
Arrival
Alias - renaming a column. At this stage the arrival 
date is computed correctly, but we would like a differ-
ent name (an alias) for the column: 
7.  Open the query in design view. In the grid, change 
the heading of the date column to arrival: date
This causes Access to compute the first date as be-
fore, but give the result the name arrival. 
Computed field. The last thing missing is that the first 
roomID may be confusing to the user if there is more 
than one room in the stay. It is particularly confusing if 
John Simpson first stays in room 12, then moves to 
room 11. The stay list would then indicate room 11 and 
the receptionist might by mistake give him the key for 
room 11 when he arrives. This is why we want to show 
"more" if the stay involves more than one room. The 
receptionist will then have to open the stay window to 
see which rooms and when.  
In order to find out whether there are more than one 
room in the stay, we compute the Min and Max of 
roomID and compare them: 
8.  Add another roomID column in the grid and let it 
compute Max rather than Min (Figure 4.4A). Re-
name the two roomID columns to A and B as 
shown. 
9. 
Use a blank column - no dragging of fields. In the 
total line, indicate that it is an Expression (a com-
puted value). In the top line specify this expres-
sion: 
room: IIf(A=B, A, "more") 
Warning: Depending on the regional settings of 
your computer, you may have to use semicolons 
instead of commas (see more in section 6.6):  
room: IIf(A=B; A; "more") 
This expression says that we want a new field called 
room. If column A (the smallest roomID) is equal to 
columnB (the largest roomID), then the result shown 
must be this roomID. Otherwise the result must be the 
text "more". The operator IIf is called an immediate if. 
See the result in datasheet mode. It should be as shown 
at the lower right of Figure 4.4A. The room column is 
what we need for the stay list. 
Also have a look at the SQL-version: 
58 
4. Queries - computed tables 
Fig 4.4A Aggregate query - Group By - bundle records
B
u
n
d
l
e
-
>
M
i
n
(
d
a
t
e
)
Σ
: Group By
SELECT Min(tblRoomState.date) AS arrival . . . 
FROM tblStay INNER JOIN tblRoomState 
ON tblStay.stayID = tblRoomState.stayID
GROUP BY tblStay.stayID . . . ;
Wanted result:
grouped by stayID
Alias
SELECT Min(tblRoomState.date) AS arrival . . .  
FROM tblStay INNER JOIN tblRoomState ON 
tblStay.stayID = tblRoomState.stayID 
GROUP BY tblStay.stayID . . . ; 
The renaming is in SQL handled by AS arrival in the 
first line. The bundling of records is handled by 
GROUP BY in the last line. Group By works after the 
Join, but before the Select is made. The Select part can 
thus refer to any of the fields Grouped By, but what 
about the non-grouped fields, for instance date? If we 
mention them in the Select part, which of the date val-
ues in the bundle should the computer choose? For this 
reason, non-grouped fields must be accessed via Min or 
another aggregate function. 
4. Queries - computed tables 
59
Select bundles HAVING 
We may select only certain bundles and discard the 
rest. Figure 4.4B shows an example. We want to keep 
only the stays with arrival 21-10-2002 (European date 
format). 
10. In the grid column for arrival, set the criterion as 
shown in the figure. The result should be as shown 
at the lower right of the figure. 
Also have a look at the SQL-version: 
SELECT Min(tblRoomState.date) AS arrival . . .  
FROM . . . 
GROUP BY tblStay.stayID  
HAVING Min(tblRoomState.date) = #10/21/02# ; 
Notice that in the query grid, we could just set the 
criterion on the arrival column. It is tempting to make 
a similar thing in SQL: 
SELECT Min(tblRoomState.date) AS arrival . . .  
FROM . . . 
GROUP BY tblStay.stayID  
HAVING arrival = #10/21/02# ; 
However, this fails because SQL doesn't compute new 
fields such as arrival until all the criteria have been 
handled. Thus arrival isn't available at the time when 
HAVING is dealt with. So in SQL you have to repeat 
the Min-expression in the HAVING clause. 
Also notice the date formats. In the query grid we use 
the regional date formats, but in SQL we must use US 
date formats. 
Other aggregate functions 
Above we have used two aggregate functions, Min and 
Max. There are others available. Here is a summary of 
them: 
Count(x)  The number of records in the bundle. 
Records with a null value in column x are 
not counted. 
Sum(x) 
The total of the non-null values in column 
x of the bundle. Null if all values are null. 
Avg(x) 
The average of the non-null values, i.e. 
Sum/Count. Null if all values are null. 
Min(x), Max(x)  The lowest (highest) non-null value. 
Null if all values are null. 
First(x), Last(x)  The first (last) value in column x of 
the bundle. May be null. Although Access 
allows it, never use these functions in a 
query. The reason is that the sequence of 
the records is arbitrary during the SQL-en-
gine's work - even if you specify that the 
input or the result be ordered in some way. 
The result will be a random record in the 
bundle. 
First and Last are not parts of SQL because 
the result of a true SQL query is a set of 
records, not an ordered list of records. It 
makes no sense to talk about the first or 
last in a set. Ordering of the records into a 
list only makes sense when the records are 
used outside SQL. As an example, First 
and Last may be used in Visual Basic to 
find the first or last value in a list shown to 
the user. 
Var(x) 
The variance of the values in column x. A 
variance is used in statistical analysis. It 
shows how much the x values in the 
bundle deviate from the average x value.  
First the Var-function computes the 
differences between each x and the 
average in the bundle. Then it squares the 
differences and finds the total of the 
squares. Finally it finds the average 
squared difference by dividing with 
Count(x)-1. 
VarP(x) 
Similar to Var(x) but divides with 
Count(x) rather than Count(x)-1. You 
cannot select VarP in the query grid, but 
you can specify it in SQL. 
In statistics, Var(x) is suited if the group is 
a sample of a larger population, while 
VarP(x) is suited for the entire population.  
StDev(x)  The standard deviation of the values in 
column x. It is the square root of Var(x). 
While Var(x) exaggerates large deviations, 
StDev(x) is more like an average 
deviation. 
StDevP(x)  The square root of VarP(x).  
60 
4. Queries - computed tables 
Documents you may be interested
Documents you may be interested