This article needs additional citations for verification. Please help by adding citations to reliable sources. Unsourced material may be challenged and removed. Find sources: – ···scholar·JSTOR(October 2020) (Learn how and when to remove this template message)
The Leszynski naming convention (or LNC) is a variant of Hungarian notation popularized by consultant Stan Leszynski specifically for use with Microsoft Access development.[1] Although the naming convention is nowadays often used within the Microsoft Access community, and is the standard in Visual Basic programming, it is not widely used elsewhere.
The conventions are derived from an earlier set of conventions, the Leszynski/Reddick naming conventions, originally developed in 1992 by . Eventually, Leszynski and Reddick had different ideas about how the conventions should be developed, and split into two separate sets of conventions, the other being the .
As in all Hungarian notations, it uses prefixes (called tags) to indicate the type of objects and database development fields. The general structure of Hungarian notation (named after Charles Simonyi's native country) is to break down object names into the following elements:
[prefix(es)][tag]BaseName[Suffix/Qualifier]
The tags are lower case and the object name is camel case. Spaces and underscores are not used.
Since the Leszynski naming convention is a special form of Hungarian notation the same general advantages also apply to the Leszynski convention.
The use of distinctive prefixes makes your database self-documenting; when you see frmSales in VBA code, you will know that it references a form, and when you see curSales you will know that it is a Currency variable. When selecting a query from a drop-down list, you will know that a query starting with qmak is a make-table query, while one starting with quni is a union query. This information will allow you to avoid errors such as using the SetFocus method (a control method) with a field, or trying to open a table.
Disadvantages[]
Since the Leszynski naming convention is a special form of Hungarian notation the same general disadvantages also apply to the Leszynski convention.
Changes in database design may require wholesale renaming. For example, replacing a table with a query would involve either retaining the tbl name for the query, or going through the entire database replacing the tbl name with a query name.
When transferring the database to a different DBMS, problems will arise if the target DBMS does not support CamelCase names.
As every object of the same type starts with the same letter, it is not possible to navigate through the objects in a List box by typing the beginning letter.
Elements[]
The elements of the naming convention are described in the following table.
Component
Description
Example
Prefix(es)
A lowercase letter that adds extra information to the tag
p for Public variable
Tag
A three-letter sequence indicating the object type
tbl for table
BaseName
A word or two describing the object. If several words are used, each starts with a capital letter, and there are no spaces between them
OutlookContacts – contacts imported from Outlook
Suffix (RVBA), Qualifier (LNC)
A word giving more specific information about an object
ByDate – the data is sorted by date
The Basic LNC Object Prefixes[]
Object
Tag
Incomplete objects, backup objects, or objects that are under development
_ or – (In some versions of Access, dashes sort to the beginning of the database object list.)
Hidden system objects
zh
Displayed system objects
zs
Programmatically created temporary objects
zt
Backup copies of objects, for later copying or reuse
zz
The Basic LNC Variable Prefixes[]
Variable Type
Tag
Local variable
[no prefix]
Local static variable
s
Module-level variable
m
Public variable in a form or report module
p
Public variable declared in the Declarations section of a standard module
g
The Basic LNC Database Object Tags[]
Object
Tag
Class module
cls
Form
frm
Form (dialog)
fdlg
Form (menu)
fmnu
Form (message)
fmsg
Form (subform)
fsub
Macro
mcr
Module
bas
Module
mod
Query (any type)
qry
Query (append)
qapp
Query (crosstab)
qxtb
Query (data definition)
qddl
Query (delete)
qdel
Query (form filter)
qflt
Query (lookup)
qlkp
Query (make-table)
qmak
Query (select)
qry (or qsel)
Query (SQL pass-through)
qspt
Query (union)
quni
Query (update)
qupd
Report
rpt
Report (subreport)
rsub
Table
tbl
Middle Table
trel
Table (attached dBASE)
tdbf
Table (attached Excel)
txls
Table (attached FoxPro)
tfox
Table (attached Lotus)
twks
Table (attached ODBC)
todb
Table (attached Paradox)
tpdx
Table (attached SQL Server)
tsql
Table (attached text)
ttxt
Table (lookup)
tlkp
Pages
pge
The LNC Table Field Tags[]
Object
Tag
Autonumber (random non-sequential)
idn
Autonumber (replication ID)
idr
Autonumber (sequential)
ids
Binary
bin
Byte
byt
Currency
cur
Date/Time
dtm
Double
dbl
Hyperlink
hlk
Integer
int
Long
lng
Memo
mem
OLE
ole
Single
sng
Text (character)
chr
Yes/No (Boolean)
ysn
The LNC Tags for VBA Variables[]
Object
Tag
Boolean
bln
CommandBar
cbr
Control (generic; useful when cycling through controls on a form or report)
ctl
Currency
cur
Database
dbs
Double
dbl
Form
frm
Integer
int
Long
lng
QueryDef
qdf
Report
rpt
Single
sng
Snapshot
snp
String
str
Table
tbl
Type (user-defined)
typ
Variant
var
The LNC Tags for Form and Report Controls[]
(may also be used in code referencing controls)
Object
Tag
Attachment
att
Bound object frame
frb
Chart (graph)
cht
Check box
chk
Combo box
cbo
Command button
cmd
Custom control
ocx
Frame
fra
Hyperlink
hlk
Image
img
Label
lbl
Line
lin
List box
lst
Option button (Radio Button)
opt
Option group
grp
Page (on a Tab control)
pge
Page break
brk
Rectangle (shape)
shp
Subform/report
sub
Tab control
tab
Text box
txt
Toggle button
tgl
Button
btn
Unbound object frame
fru
Some Typical LNC Names for Database Objects, Controls and Variables[]
Object/variable name
LNC naming elements
Description
tblEmployees
tag + base name
A table of employee data
qupdSales
tag + base name
A query that updates sales data
fsubDayMax
tag + base name + qualifier
A subform that shows the maximum day
intLines
tag + base name
An Integer variable to hold a value representing the number of lines in a Word table
curSales
tag + base name
A Currency variable holding a Sales value
pstrForm
prefix + tag + base name
A public String variable holding a form name
zztblContacts
prefix + tag + base name
A backup Contacts table, for copying and filling with imported data
References[]
Part of this article is based on Helen Feddema's book, Expert One-on-One Microsoft Access Application Development, Wiley, ISBN0-7645-5904-4.