Leszynski naming convention

{{Refimprove|date=October 2020}}

The Leszynski naming convention (or LNC) is a variant of Hungarian notation popularized by consultant Stan Leszynski specifically for use with Microsoft Access development.{{cite web|url=http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/dnaraccess/html/msdn_20naming.asp|title=Naming Conventions for Microsoft Access (Archived Microsoft Access Content)|website=MSDN.Microsoft.com}}{{Dead link|date=February 2020 |bot=InternetArchiveBot |fix-attempted=yes }} 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 Greg Reddick. 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 RVBA Conventions.

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.

Advantages

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.

class="wikitable"
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 =

class="wikitable"

!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=

class="wikitable"

!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=

class="wikitable"

!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=

class="wikitable"

!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=

class="wikitable"

!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=

class="wikitable"

|+(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=

class="wikitable"

!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, {{ISBN|0-7645-5904-4}}.

{{reflist}}