3.2.1 Subform in Datasheet view 
First we will make the continuous form that shows the 
guest data. We could create it from scratch in the same 
way as we created frmFindStay, but in this case Access 
has a Wizard that helps us a lot. Figure 3.2B illustrates 
how to use it: 
1.  Start in the database window, click the Forms tab, 
and select Create form by using Wizard. (In 
Access 97 you click New, then select Form 
Wizard.) 
2.  Access asks you which table to base the form on. 
Choose tblGuest.  
3.  Select the fields you want to include. In our case, 
select all fields except the guestID field, which the 
user should not see. Click Next
4.  Access asks you to select a layout for the form. 
The best layout in our case is Columnar. It will 
show the fields with labels. Click Next. 
It is tempting to choose the datasheet layout rather than 
columnar. Don't do it. It works, but the fields get no 
labels and this makes it much harder to give the fields 
user-oriented names later in the process. 
5.  The next screen asks you to select a style, meaning 
the look of the frames around the fields, the picture 
behind the fields, etc. Choose Standard in this case 
where we just want a simple look. 
6.  Finally, give the form a name. Choose fsubStay-
List. The prefix fsub is conventionally used for a 
form that becomes a subform. Click Finish
Fig 
3.2B
Create the continuous form
Base form on
guest table
All fields
exceptguestID
In database window:
Select Forms ->
Create form by using wizard
Columnar format:
Fields with labels 
3. Access-based user interfaces 
31
Pdf form creator - 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
create pdf form; android edit pdf forms
Pdf form creator - 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 on pdf form; pdf form maker
You will now see the form in user mode as on Figure 
3.2C. You can use PageDown and PageUp to walk 
through the guests. Or you can use the navigation but-
tons at the bottom of the form. You may enter data into 
the form. The data will end up in the guest table. 
Choose datasheet view 
7.  Select the continuous form and use the view icon 
to change to Datasheet View. Adjust the width of 
the form and the widths of the columns. The result 
should be as on the lower part of Figure 3.2C. 
When we insert the continuous form into the Find 
Guest form, we want it to be shown only as a datasheet. 
Specify it in this way: 
8.  Select the continuous form and  switch to design 
view. Open the property box of the form and select 
the Format tab. Set Default View to Datasheet
Access 2000: Also set Views Allowed to Da-
tasheetAccess 2003: Disallow Form View and 
allow Datasheet View. 
Bound and unbound forms 
9.  Use the opportunity to look at the Data tab for the 
form properties. It shows that Record Source is 
tblGuest. This is why the form can show fields 
from the guest table. We say that fsubStayList is 
bound to tblGuest. 
10. Switch to Datasheet view to check that everything 
is okay. Then close the continuous form. 
Create the subform control 
Now it is time to use the continuous form as a subform 
on frmFindStay. 
11. Open frmFindStay in design view. Extend the grid 
area by dragging its borders (see Figure 3.2D). 
12. Select the Subform/Subreport tool and draw a large 
box as on the figure. The result is a subform con-
trol. Delete the label for the subform control 
(called Child7 or the like).  
13. Look at the property box for the subform control. 
Set the name property on the Other tab: Name = 
subStayList. The prefix sub is used for subform 
controls. 
Connect the continuous form to the subform control 
14. Look at the Data tab for the subform control. Set 
this property: Source Object = fsubStayList (select 
it from the drop-down list).  
15. Switch to Form View. 
The result should be as shown at the bottom of Figure 
3.2D. The result is not pretty, but is easy to correct the 
problems. Notice the names we use: 
Name of the Subform control: subStayList 
Name of the Continuous form: fsubStayList (seen 
in the Access database window) 
32 
3. Access-based user interfaces 
C# Create PDF Library SDK to convert PDF from other file formats
Tell Users How to Create New PDF File and Load PDF from Other Files. Free PDF creator SDK for Visual Studio .NET. C# Project: PDF Creator Library DLLs.
create a pdf form to fill out; add date to pdf form
VB.NET Create PDF Library SDK to convert PDF from other file
Free PDF creator SDK library compatible with Visual Basic .NET class and able to create PDF in both .NET WinForms and ASP.NET program.
best program to create pdf forms; adding form fields to pdf files
Fig 
3.2C
Continuous form
In Datasheet
view
Continuous
form in Form view
Navigation
Buttons
Adjust dividing lines.
Drag or double-click 
heading line
Fig 
3.2D
Creating and connecting the 
subform
control
Name property: 
Other -> Name = subStayList
Connect to fsubStayList
Draw a subform
control
Result in 
Datasheet view
3. Access-based user interfaces 
33
C# PDF metadata Library: add, remove, update PDF metadata in C#.
metadata.Keywords = "University, Public, etc."; metadata.Creator = "MS Office String inputFilePath = Program.RootPath + "\\" 1.pdf"; String outputFilePath
cannot edit pdf form; convert word doc to pdf with editable fields
VB.NET PDF - How to Add Barcode on PDF Page
Link: Edit URL. Bookmark: Edit Bookmark. Metadata: Edit, Delete Metadata. Form Process. This VB.NET PDF barcode creator add-on, which combines the PDF
edit pdf form; chrome pdf save form data
3.2.2 Adjust the subform 
To make the subform look nicer, we remove the navi-
gation buttons at the bottom, give the columns user-
oriented names, etc. (See Figure 3.2E.) 
1.  Open fsubStayList in design mode. Open the prop-
erty box for the form and set Navigation Buttons to 
No. 
2.  Remove the unnecessary fields address2, address3 
and passport. (Select them and click Delete.) 
3.  Change the labels to user-oriented names. (Click 
the label and change the text on the spot.) 
4.  Close fsubStayList and open the main form in user 
mode. It should look like Figure 3.2E.  
Notice that the labels are used as column headings. 
You may wonder what happens if we have a text box 
without a label. In this case the control name (the Vis-
ual Basic name) is used as a heading. You may change 
the control name to a user-oriented name, but it is 
harder and would influence a program that addresses 
the text box. 
5. Adjust column widths. The user can adjust the 
column widths. Try it: Point the mouse to a divid-
ing line in the header section (see Figure 3.2E). 
Drag the dividing line to adjust the column width. 
Double-click the dividing line to have Access fit 
the line to the existing data. The column widths are 
persistent data that are stored as part of fsubStay-
List. 
6. Column sequence. The user can also adjust the 
column sequence: Click the column heading to 
mark the entire column. Then drag the entire 
column to another position in the sheet. The 
column sequence is also persistent data. 
7. Sorting rows. The user may ask for the data rows 
to be sorted according to a specific column: Right-
click somewhere in the column and choose Sort 
Ascending or Sort Descending. The sorting se-
quence is also persistent data. Access records the 
sorting sequence as the Order By property of the 
form. 
Add another field 
What to do if you have forgotten one of the fields on 
the subform? Starting all over with the Wizard is 
cumbersome. The solution is to use the Field List to 
add the missing field: 
Switch to design view. Click the Field List icon on 
the tool bar (Figure 3.2E). All fields from the 
record source come up as a list. 
Drag the missing field from the list to the form. 
Adjust lookup fields 
When the field is defined as a lookup field in the 
database, it becomes a combo box on the form. This is 
usually fine, except for the fact that in the database we 
wanted the visible value to be the real thing stored in 
the database, for instance the code 2 for Visa. This was 
convenient when we as designers entered test data into 
the database.  
On the user interface we don't want the user to see the 
codes, but the mnemonic values, for instance Visa. 
Here is how to do it: 
Open the property box for the combo box. On the 
Format tab, look at Column Widths. Set the first 
column width to 0. This makes this column 
invisible to the user. 
Font size for datasheets. The datasheets in the booklet 
use font size 8 (default is 10). You can set size 8 as the 
default font size. Select Tools -> Options -> Datasheet 
-> Default Font -> Size = 8. This setting will influence 
all datasheets where you haven't set the font size 
explicitly. 
How to open the continuous form in design mode: 
You may simply open the continuous form from the 
database window. However, you may also access it 
from the main form in design view: 
Access 2000 and 2003: When the main form is in de-
sign mode, the subform control will usually also show 
the continuous form. You may click and adjust the 
controls directly inside the subform control.  
Access 97: When the main form is in design mode, the 
subform field is always blank. Click in the form out-
side any control. Next double-click the subform con-
trol. The continuous form will then open in design 
mode. 
34 
3. Access-based user interfaces 
VB.NET PDF metadata library: add, remove, update PDF metadata in
metadata.Keywords = "University, Public, etc." metadata.Creator = "MS Office Dim inputFilePath As String = Program.RootPath + "\\" 1.pdf" Dim outputFilePath
add text field pdf; add photo to pdf form
VB.NET PowerPoint: VB Codes to Create Linear and 2D Barcodes on
as 2d barcodes QR Code, Data Matrix, PDF-417, etc Imaging.Basic.dll", "RasterEdge. Imaging.Barcode.Creator.dll" and barcode, which will be in the form of REImage
change font in pdf form; cannot save pdf form in reader
Fig 
3.2E
Adjusting the 
subform
Change labels to
user-oriented names
Delete unneccesary
fields
Remove navigation
buttons through
property box
Adjust dividing lines.
Drag or double-click heading line
Reorder columns:
Mark column + drag and drop
Field List for
adding more fields
Drag to
form
Drag to
form
3. Access-based user interfaces 
35
VB.NET Imaging - Generate Barcode Image in VB.NET
Barcode creator SDK to write & customize ISSN barcode generation in VB.NET imaging project. ITF-14 valid for scanner reading on any pages in a PDF or TIFF
allow users to save pdf form; adding a signature to a pdf form
C# TIFF: Create Linear and 2D Barcodes on TIFF Document Using C#
TIFF Barcodes Creation. This C# TIFF Barcode Creator Add-on the supported barcode types are listed in the following form. C# TIFF Micro PDF-417 Creating, C# TIFF
create a form in pdf; change pdf to fillable form
3.2.3 Mockup subform 
Above we have based our experimental subform on 
tblGuest rather than a complex computation of the real 
stay list. This was to try the mechanisms - it looks all 
wrong to the user. When we make a tool-based mockup 
for usability testing, we need the planned columns, but 
the data fields should be empty because we add the 
data with pencil. 
The easiest way to make such a mockup is to start with 
any continuous form and add dummy text boxes. We 
will use this technique to create a mockup list of rooms 
occupied by a guest (Figure 3.2F). (We will later use 
this form in the Stay window.) When filled in with 
pencil, the list shows the first night, the number of 
nights, the room number, the number of persons in the 
room, the price per night, and the total for all the 
nights. 
1.  Make a copy of fsubStayList: In the database win-
dow, select fsubStayList, copy it with Ctrl+C and 
paste it with Ctrl+V. Give the copy the name fsub-
StayRooms
2.  Open fsubStayRooms in design mode. Remove all 
fields relating to the guest and insert text boxes as 
shown. Give the labels the user-oriented names. 
3.  Change the caption of the form, for instance to 
RoomList
4.  Switch to Datasheet mode, and the mockup should 
be ready. 
How does this work? The subform is bound to tblGuest 
and shows a line for each guest. However, the line 
doesn't show any guest fields, only the text boxes we 
have added. These text boxes are only dialog data. 
They don't store anything in the database. If you for 
instance enter a number in Nights, you will see the 
same number in all the lines. There is only one instance 
of the dialog data. 
If you want more lines in the mockup, add new guests 
to tblGuest. The mockup shows one line for each guest. 
Insert a table directly as a subform? 
Access 2000 and 2003 allow you to connect a subform 
control  to a table - without making a continuous form. 
Don't use this shortcut.  
The result looks okay at first sight, but you have no 
control of the appearance. You cannot remove naviga-
tion buttons, use colors in the fields, or address the 
user's selection from a Visual Basic program.  
3.2.4 Subform in Form view 
A continuous form can also be shown in Form view. 
This gives us more freedom to structure the data pres-
entation. As an example, we will create a subform that 
makes Find Guest look like Figure 3.2G. The subform 
area now shows a heading area and a list of small 
forms - the details. Here is how to do it: 
1.  Make another copy of fsubStayList (Ctrl+C and 
Ctrl+V). Give the copy the name fsubStayList2
2.  Open the copy in Design view and drag the border 
between header and footer so that you see a header 
area (Figure 3.2G). If you cannot see the Form 
Header bar, use the View menu: 
View -> Form Header/Footer.  
3.  Change the form so it looks like Figure 3.2G: 
ɷ
Remove the labels from the detail area and 
adjust the sizes of the three fields as shown. 
ɷ
Adjust the size of the detail area to remove 
empty space at the bottom. 
ɷ
Draw fresh labels in the header area. 
At this point, the user can only see the form in Da-
tasheet view. Change this: 
4.  On the property sheet for the form, set Default 
Views to Continuous Forms and Views Allowed 
to Form.  
In user mode you will now see the continuous form as 
a list of small forms. You may connect it to the main 
form to get the wanted result: Change the SourceObject 
property of the subform control. 
Form Wizard - tabular layout 
It is a bit cumbersome to construct the continuous form 
in this way. You may let the Form Wizard do some of 
the job: 
5.  From the database window, click the Forms tab 
and select Create Form by using Wizard. 
6.  Select the proper table, next select Tabular layout. 
7.  Finally select a style (e.g. Standard) and give the 
form a name. 
You will now have a form that looks very much like 
the one you constructed above.  
36 
3. Access-based user interfaces 
Create Thumbnail in Web Image Viewer | Online Tutorials
Go to the toolbar: Select "Thumbnail Creator" & activate RasterEdge OCR Engine; PDF Reading; Encode & Decode JBIG Twain Scanning; DICOM Reading; Form Recognition
add text field to pdf acrobat; changing font size in a pdf form
VB Imaging - Micro PDF 417 VB Barcode Generation
in a programming way. Following are the main features of this VB.NET Micro PDF 417 barcode creator SDK. The Barcode Creator Add-on
changing font in pdf form; can reader edit pdf forms
Fig 
3.2F
Mockup 
subform
Roomlist
for a guest
Add unbound textboxes
Give them user oriented labels
Delete all
guest fields
Switch to Datasheet view
- the mockup is ready
Make a copy of fsubStayList
Call it fsubRoomListMockup
Wanted:
Tool-based
mockup list
Fig 
3.2G
Subform
in Form view
Make a copy of
fsubStayList
Call it fsubStayList2
Wanted: Subform
in Form view
Drag Detail down to
make a Form Header
Add labels to
the header
Delete labels from detail area.
Adjust fields.
Header
Details
Header
Detail
3. Access-based user interfaces 
37
3.2.5 Summary of subforms 
Datasheet view or form view? 
Datasheets and forms not only look different. They 
have other usability differences too. 
Datasheet view allows cursor movements in all direc-
tions as in a spreadsheet. It also allows the user to se-
lect a rectangle of cells. The Visual Basic program can 
find out which cells the user has selected. 
The weakness is that the display format is very re-
stricted. Each record is shown as a single line with text 
boxes, combo boxes, etc. Also the column headings are 
very restricted. They are just simple texts and they 
cannot even be empty. 
Form view allows all the available display formats, 
including pictures retrieved from a database. (There 
cannot, however, be continuous forms inside another 
continuous form. Continuous forms can only be used in 
one level.) 
The weakness of forms is that the cursor moves less 
intuitively. The user can tab through the fields of each 
record, but not easily move up and down the list of re-
cords. Furthermore, the user can only select a full 
record, not part of a record. 
Current record. A subform can show many records at 
the same time, but only one of them is the current 
record. It is marked with the little arrow to the left, the 
record selector, as shown on Figure 3.2H. (You may 
change the form settings so that the record selector area 
is invisible.)  
When the user types something into the form, it will 
always be into the current record. When the cursor 
moves into another record, it becomes current 
Until now we have only seen a main form that is not 
bound to the database. But main forms may be bound 
too. Then they have a current record and they need the 
record selector (see examples in section 4.7). 
The subform concepts 
Figure 3.2H gives a summary of the many subform 
concepts we have used above. A main form is a user 
window with title bar, etc. It may contain one or more 
subform controls. 
Each subform control may be connected to a con-
tinuous form. The continuous form can be shown in 
Form view. Then it has a form header and a list of de-
tail forms. The continuous form can also be shown in 
Datasheet view. Then it looks like a table.  
Properties. The following properties (attributes) are 
important to understand when you work with subforms. 
Figure 3.2H shows examples of these properties. 
Main form: The Name property is the designer's form 
name. It is this form name you see in the data-
base window. You can only change the name 
there. The Caption property is the name the 
user sees in the title bar of the form. You can set 
the caption through the Format tab in the prop-
erty box. 
Subform control: The Name is the designer's name of 
the control. A program would use this name to 
address the control. You can set the name prop-
erty through the Other tab in the property box. 
The SourceObject indicates the continuous 
form connected to the subform control. 
Continuous form: The Name is the form name that you 
see in the database window. Record Source in-
dicates the table bound to the form. Default 
View indicates whether the form is shown as a 
datasheet or as detail forms with a header. An-
other property, Views Allowed, indicates 
whether the user can change from one view to 
another. 
3.2.6 Prefixes 
A prefix is a few letters before a name. The prefix 
helps the reader understand what this name is about. Is 
it the name of a table, a form, etc? In just slightly 
complex systems, prefixes are crucial to help the 
developers. The bottom of Figure 3.2H shows the full 
list of prefixes used in this booklet. For subforms the 
following are important: 
tbl  Table names. 
frm  Names of main forms. 
sub  Names of subform controls. 
fsub  Names of continuous forms connected to a sub-
form control. 
38 
3. Access-based user interfaces 
Fig 
3.2H
Summary of 
subform
concepts
Subform control
Main form
Main form:
Name = frmFindStay
Caption = Find Guest
Subform control:
Name = subStayList
SourceObject = fsubStayList
Continuous form:
Name = fsubStayList
Record Source = tblGuest
Default View = Continuous Forms
Views Allowed = Both
Table behind the
continuous form
Continuous form
in Datasheet view
Continuous form
in Form view
Current
record
Control prefixes:
cbo
Combobox control.
chk
Checkbox control.
cmd Command button
ctl
Other type of control
grp
Option group
lbl
Label
mni Menu item
lst
Listbox
opt
Option button
sub
Subform control
tgl
Toggle button
txt
Text control
Other prefixes:
bas
Module (used by VBA)
frm
Main form.
fsub Continuous form (connected to a subform control).
qry
Query
qxtb Crosstab query
tbl
Table
3. Access-based user interfaces 
39
3.3 Bound, unbound and computed controls 
A form may be bound to a table. In this case its 
controls can be bound to fields of the table, so that the 
user can see the fields and update them through the 
control. As an example, fsubStayList was bound to the 
guest table, and we could see and update the guest data. 
In this section we will look at this in more detail. We 
will explicitly bind controls and let controls be com-
puted from multiple fields. 
Unbound control in a bound form 
1.  Open fsubStayList2 in design mode. 
2.  Select the checkbox tool and add a checkbox to the 
detail form as shown on Figure 3.3A. 
3.  Switch to user mode. There will be a checkbox in 
each detail form, but all of them will be gray. The 
reason is that the checkbox has not got any value 
yet. 
4.  Click the checkbox so that it shows a tick. Move to 
the next record. All the checkboxes have now got a 
tick. Click to remove the tick. It disappears from 
all the checkboxes. 
As we added the checkbox, it became an unbound 
control. The Yes/No value is not stored in the database, 
but it is a single dialog variable in the form. All the 
checkboxes show this single variable and thus show the 
same. If you close and open fsubStayList2, the dialog 
variables disappear and are created again. The check-
boxes are gray again. 
Bound control 
5.  Show fsubStayList2 in design mode. Set this prop-
erty for the checkbox:  
Data -> ControlSource = passport 
(choose the field from the list). Change to user 
mode. 
This action binds the checkbox control to the passport 
field in tblGuest. The first form instance shows data 
from the first record in tblGuest, the second instance 
shows data from the second record, etc. You can bind 
the control to any field in tblGuest no matter whether it 
was included when the Wizard generated the form. 
In user mode, the checkboxes still look gray but that is 
because they try to show the passport fields. A 
checkbox can show a Yes/No value or a number (with 
zero shown as No). The passport fields are either blank 
or contain a text, and the checkbox doesn't know what 
to show. 
6.  Try to check and uncheck some of the boxes. 
Notice that they are independent of each other. The 
Yes/No value is stored in the passport field of 
tblGuest. Look at the table contents. Notice that 
Yes is stored as -1, No as 0. (Sorry if some of the 
real passport numbers disappeared.) 
Computed control 
7. Combine two database fields. A text box may be 
computed from database fields. Try it with the 
address text box. Set its ControlSource to this ex-
pression 
= phone & address2 
(Make sure to type the equal sign too.) 
The equal sign changes the checkbox to a computed 
control. The & is the concatenation operator. We have 
asked Access to concatenate the two guest fields and 
show them as a single text. Check in user mode that 
this is what you get. However, now you cannot enter 
anything in the address text box - Access has no place 
to store what you enter. 
On Figure 3.3A we have made the combined field look 
a bit better with a comma and a space between the two 
parts. As shown on the figure, we have concatenated 
the control source from three parts, the phone field, a 
text constant holding the comma and a space, and the 
address2 field: 
= phone & ", " & address2 
Don't worry about the square brackets on the figure. 
Access often adds them as a parenthesis around names 
in order to deal with names that contain spaces, # and 
other strange characters. 
Troublesome expressions 
Sometimes an expression may give strange results be-
cause the expression happens to refer to something you 
didn't anticipate. Here are some examples. 
8. Self-reference. Concatenating phone and address 
is just an experiment. It is more useful to concate-
nate address1 and address2. Try to enter this con-
trol source in the address text box: 
= address1 & ", " & address2 
Access doesn't give you an error message, but in user 
mode you will see the text #Error rather than the guest 
data. This highly user-friendly message (;-) is in this 
case caused by a self-reference: 
Notice that the programmer name for the address text 
box is address1 - exactly the same as the name of the 
database field. Access assumes that we want to con-
catenate the address1 text box and the address2 field. In 
order to do this, Access has to compute the address1 
text box, but this means concatenating address1 and 
address2 once again. The computation would never 
stop and Access shows it with #Error. 
9. Repair self-reference. In order to repair the 
problem, give the address1 text box another pro-
grammer name. On the Other tab, replace the 
name address1 with Address. In user mode, the 
form should now look as the last form on Figure 
3.3A. 
40 
3. Access-based user interfaces 
Documents you may be interested
Documents you may be interested