Table Stuff. Microsoft Access
Iklan
Iklan
Microsoft Access Techniques
Table Stuff
Relational Database
Access supports a database composed of tables that adhere to the relational model and that are normalized, i.e., in the third normal form. Consult Wikipedia for an explanation of database normalization. You will encounter frustrating problems creating forms, reports, and queries when your database is not normalized. Get your data model right!
Primary Key(s)
The role of the primary key (PK) is to identify the field(s) that uniquely identify a record. Access
automatically prevents duplicate or null values from being entered in PK fields.
To set a PK in table design view:
1. Select the field(s). To select only one field, click its row selector. To select 2+ fields, hold down the [Ctrl] key and click the row selector for each field.
2. Click the PK icon in the Table Design Toolbar or select menu Edit, Primary Key.
Indexes
Indexes have pros and cons:
they speed finding records by SELECT queries
they slow append queries (because the index must be maintained too).
An index can be established for 1 to as many as 10 fields.
It can be helpful to create an index for key queries. An index is automatically created for the PK and for autonumber fields. An index can be defined as unique and to ignore nulls (which excludes records from the index whose indexed field contains Null values). An index has a sort order based on the sequence of the fields in the index; each field can be ASC or DSC.
Empty a Table
Do with a query:
DELETE * FROM [table name];
Import Table Specification
An import/export specification can be created to define the way in which an imported file can be transformed into an Access table. The specification can only be created and edited using the
Import Text Wizard; access it with the [Advanced] button. The specification defines the input file format (for text files, as delimited or fixed width); the file origin (for text files, as Windows ANSI or DOS PC‐8; the format of dates, times, and numbers; and, for each field, its name, data type, whether it is indexed, and whether it is skipped in the import. These specifications can be a parameter in the macro action TransferText (or DoCmd.TransferText). They can be imported to a different Access database along with menus and toolbars. They cannot be accessed via code!
They are not in the object model.
Import Excel Worksheet
You can import an Excel worksheet into an existing table or into a new table. Importing accomplishes:
Revision: 9/2/2012
Copyright 2001–2012 by Susan J. Dorey
Page 37 of 119
Microsoft Access Techniques
The columns in the list are the fields in the database.
The column labels in the list are the field names in the database.
Each row in the list is a record in the database.
There are a few restrictions:
The XLS file can have only one worksheet.
The XLS file must have the same type of data in each field (column)
The XLS file must have the same fields in every row.
Only one heading row in the XLS file.
If you import into an existing table, the XLS file column headings must match the table field names.
If you import into an existing table, the XLS file column must have the same data type as table fields. Since XLS file columns don’t really have data types, you mayhave to finagle getting a number into a text field (put a letter in the field in the first record, then delete it from the table).
I suspect that the size of the table field must be large enough to hold the XLS cell. Not sure what happens if this is not true.
Link Table to DB2 Table
You can access data in DB2 tables.
Create linked Access table with File, Get External Data, Link. On “Import” window, select file type = ODBC(). A “Select Data Source” window opens. Select DSN Name = LOCDB6A.
A “Connect to DB2 Database” window opens. Select Database alias = PD21R, enter your
TSO id and password, [OK]. NOTE: this worked at PG&E.
Access Table Properties, Description=
ODBC;DSN=CCSP;UID=ABCD;MODE=SHARE;PATCH1=131072;LOBMAXCOLUMNSIZE=1048575;LONGDA
TACOMPAT=1;DBALIAS=PD21R;;TABLE=CCSP.CI_BATCH_CTRL
Link Table to SQL Server
You can access data in SQL Server tables.
Table properties, Description =
ODBC;DSN=BRTE;Description=ABC Exception Database ;UID=sa;APP=Microsoft®
Access;WSID=WSGO182635;DATABASE=ABCE;Network=DBMSSOCN;TABLE=dbo.Statistics
Edit Data While Input
An Input Mask, a field property which can be set in the table definition, can be used to change lowercase letters to uppercase. For example, PG&E’s LAN ID is a four‐character code composed of letters and numbers. You can add an Input Mask with the following properties, and then assign it to certain fields: mask: >AAAA no placeholder sample data: ABC3 mask type: text/unbound.
Validation Rule can be a simple as: = “U” or “M”
Revision: 9/2/2012
Copyright 2001–2012 by Susan J. Dorey
Page 38 of 119
Microsoft Access Techniques
Default Field Labels in Forms & Reports
The Caption field property is set in the table definition. When present, it overrides the actual field name as a field label in forms and reports.
Table Definition: Lookup Values with Value List
You can define a value lookup for a table field as a Value List. The appropriate properties are:
DisplayControl = Combo Box
RowSourceType = Value List
RowSource = “value1”, “value2.” . .
LimitToList = Yes/No
This causes a combo box to appear as datasheet view. If you add such a field to a form, its control can be defined as a text box, list box, or combo box. If the control is the same type as the table field’s DisplayControl and if the field is added to the form after the Value List is created, then the same Value List is operative in the form. If you add the Value List after the field has been added to a form, delete the field from the form and then re‐add it.
Table Definition: Lookup Values with Query
You can define a value lookup for a table field using a lookup table where lookup table has ID
(code) and text description. The appropriate properties are:
DisplayControl = Combo Box
RowSourceType = Table/Query/SQL statement
RowSource = table/query name
LimitToList = Yes
BoundColumn = # of ID column in row source, usually 1
ListWidth combined column widths
You can define a value lookup for a table field so that the user is suggested to choose an existing value by using a combo box populated with a query like:
SELECT field FROM table GROUP BY field ORDER BY 1
Define Table Fields with Formatting
You can control the formatting (presentation only, not stored) of fields in a table. For example, concatenate a literal to a text field:
Format = !"(Office 1) "@
The ! character forces the field to be left‐aligned. The characters between the double‐quotes are the literal. So any text entered is displayed as {Office 1) xxxxxxx. When you specify formatting at the table level, it carries forward to datasheets, queries, forms, and reports.
You can specify the format of date fields in a report with the control’s Format property:
Format = !"(Office 1) "@
This has the advantage of concatenating the text only in that report.
Automatically Set Last Change Date in a Record
Code to do this can be put in an event procedure associated with a form control. You can use the form.Dirty event to set the value of the field. Or the form.BeforeUpdate event.
Revision: 9/2/2012
Copyright 2001–2012 by Susan J. Dorey
Page 39 of 119
Microsoft Access Techniques
Hyperlinks
Per Microsoft: If you create a table by importing data, Microsoft Access automatically converts any column that contains URLs (an address that specifies a protocol such as HTTP or FILE and a full filename or website address, for example: http://www.microsoft.com/) or UNCs (a name with the syntax \\server\share\path\filename) paths into a hyperlink field. Access will convert the column only if all the values start with a recognized protocol, such as “http:” or “\\.” If any
value starts with an unrecognized protocol, Access wonʹt convert the column into a hyperlink field.
But what about an existing table?
In an Access table a valid hyperlink has the form displaytext#address#subaddress#screentip where the address part either includes the protocol (e.g., “file:”) or is a UNC. When a field has data type Hyperlink, after you import data into it, the hyperlink has no address (href) and consequently has no effect. If you run a query like:
UPDATE CandidateFiles SET URL = URL + “#” + URL + “#” the hyperlink becomes operative. This will not work if the field’s data type is Text.
If the value of a Text field has the form displaytext#address#subaddress#screentip, all the text appears as the field value and there is no operative hyperlink. When the field’s data type is changed to Hyperlink, then the hyperlinks looks and operates correctly.
Hyperlinks in a Table Field: Open Any File
Say you want to let the user scroll through a list of files and be able to open them one by one.
You might want to do this in conjunction with a program that reads all the files in a directory structure.
In this case get the filenames into a table. The table has an additional field, say URL, with a
Hyperlink data type. The URL field can be populated programmatically by concatenating the path and filename, e.g., url = p & "\" & fno
Bracket the actual URL with #, e.g.,
Then you can open the table in datasheet view and click on the URL field and—voila—the file opens. When the form is the data source for a form, then the corresponding form field is also a hyperlink.
The complete code to populate the table is:
Sub LogFile(p, fn, dt, ty)
' there will be a problem if the filename has an apostrophe in it!
FindString = "'"
ReplaceString = "' & Chr(39) & '" fno = Replace(fn, FindString, ReplaceString) url = p & "\" & fno
DoCmd.SetWarnings False strSQL = "INSERT INTO DocInventory (Path, Filename, LastSaveDateTime, Type,
URL) VALUES ('" _
& p & "', '" & fno & "', #" & dt & "#, '" & ty & "', '#" & url & "#')"
DoCmd.RunSQL strSQL
Revision: 9/2/2012
Copyright 2001–2012 by Susan J. Dorey
Page 40 of 119
Microsoft Access Techniques
DoCmd.SetWarnings True
End Sub
Resetting Autonumbers to Zero
If a table is empty when the database is compacted, the autonumber fields are reset to 0. Should the table be used as the authority on some numbering sequence, you might preserve the highest‐ numbered record.
Fixing a Table with an Autonumber Key
When you mess up a table whose key is an autonumber data type, especially when the key has a corresponding foreign key in another table, what to do? Say you deleted a record whose key is present in the other table, and because it is an autonumber field you cannot add a new record with the old key value. This can be fixed:
Starting point: Table A is missing a needed record; its key is an autonumber field.
1. Design table A: change key data type from autonumber to long integer.
2. Create/edit table A record to recreate missing record with original key value.
3. Copy table A to table B.
4. Empty table A.
5. Design table A: change key to autonumber.
6. Append table B records to table A.
7. When you are sure all is well, delete table B.
Making Yes/No Type Fields Appear with Checkbox
Microsoft Access uses a check box control as the default control for the Yes/No data type in datasheets (both tables and queries), forms, and reports. The check box control is used when you define a table with the user interface (Design View). If you use DDL to add a field to a table (with
ADD COLUMN), the check box control is NOT used.
Revision: 9/2/2012
Copyright 2001–2012 by Susan J. Dorey
Page 41 of 119
Unduh
Iklan