Web Access Builder Request an instance

Access and Web Access Builder compared

<img src="../public/img/logo.svg" alt="Web Access Builder" width="276">

Web Access Builder is modelled on Microsoft Access (2010 onwards, with the PivotTable and PivotChart views of 2002–2010) but runs in a browser against a database on a server. Most things work the way an Access developer expects. This page lists where they don't: what is missing, what behaves differently, and what Web Access Builder adds. The VBA environment gets the most detail, because that is where ported code meets the differences.

Key: Same works as in Access · Different works, but not quite as in Access · Missing not in Web Access Builder (yet, or because a web page can't) · Added Web Access Builder only: code using it won't run in Access.

The big picture

Access Web Access Builder
Where it runs A Windows program; the database is an .accdb file A web page; the database lives on a server (SQLite)
Sharing Split front end and back end on a network share Everyone opens the same site; nothing to install
Security None, or the database password; user-level security only in old .mdb files Sign-in for every user, with two roles: admin (design, code, import, users) and user (data)
Design changes One designer at a time, with the database open exclusively Admins design while users work; a saved design is what the next person to open the object gets
Code VBA in the Office VBA editor, running on Windows A VBA interpreter in the browser, with a VBA-style editor; it runs on any device
Getting outside the database DLLs, COM/ActiveX, files, the registry, Shell None, deliberately: code sees only its own database and the browser. JavaScript modules replace DLLs
Dates and money Windows regional settings UK throughout: dd/mm/yyyy and £
Backups Copy the file Database Tools > Back Up Database downloads a SQLite copy
Help with errors Help pages and the web Explain Error and Fix Error ask Claude about the error on the line (admins; needs an API key on the server)

Tables and data types

Feature Notes
AutoNumber, Short Text, Long Text, Number, Currency, Date/Time, Yes/No Same Number sizes Byte, Integer, Long Integer, Single, Double, Decimal
Attachment, OLE Object, Hyperlink, Lookup Wizard, Calculated, Large Number, Date/Time Extended Missing Attachment and OLE fields are dropped on import
Field size, Caption, Default Value, Required, Indexed Same Default Value is a literal, Date() or Now()
Format, Input Mask, Validation Rule and Text, Allow Zero Length, Text Format, Unicode Compression Missing An empty string is always stored as Null (Allow Zero Length off)
Object and field names Same Access's rules: up to 64 characters; letters, digits, spaces and punctuation except . ! ` [ ]; not starting with a space. Module names are stricter: letters, digits and _
Primary key, multi-field keys, unique indexes Same An AutoNumber field is always the only key field
Multi-field indexes, the Indexes window Missing
Relationships window, referential integrity, cascades Missing Joins are made in each query
Table-level validation, data macros Missing Use form BeforeUpdate events
Changing a design with data in the table Different The table is rebuilt and the rows copied; renames keep data; a dialog lists data that will be cut or cleared before you confirm
Datasheet: edit in place, save on leaving the row, sort, Filter by Selection Same
Datasheet: column widths, freezing and hiding columns, Find, totals row, subdatasheets Missing
Text comparison Same Case-insensitive
Dates Different Stored as ISO text and shown dd/mm/yyyy; Access stores a Double

Queries and SQL

Feature Notes
Design grid, joins by dragging, Join Properties, Totals, criteria rows, parameters Same
SQL view Same Editing SQL by hand detaches the grid: Web Access Builder cannot turn SQL back into a grid
Select queries saved and used as sources Same
Action queries (make-table, append, update, delete) Same Query Type in Design view, with Append To, Update To and Delete rows; saved, run from the Navigation Pane with Access's warnings, or from code. Everyone can run them; make-table needs an admin
UPDATE or DELETE with a join Same Changes one table
UNION, crosstab (TRANSFORM…PIVOT), pass-through, data-definition queries Missing The PivotTable view covers much of what crosstabs are used for
TOP n Different Ties are not included
TOP n PERCENT Missing
Editable query results (dynasets) Missing Select query results are read-only in datasheets and forms. In code, a recordset on a query that reads one table can be edited
Date literals #…# Different Read day first (#08/11/2026# is 8 November). Access SQL reads month first. #2026-11-08# means the same in both
True Different 1 in SQL, not −1. Not is logical, not bitwise
Division by zero Different Null in a query instead of an error; #Div/0! in a calculated control
Aliases in HAVING and ORDER BY Different Allowed; Access usually treats them as parameters
Replace, In (…) Different Case-sensitive in SQL
InStr, StrComp compare argument; first-day-of-week arguments Different In SQL, StrComp's compare argument and the first-day-of-week arguments are ignored and InStr takes no compare argument (a fourth is an error): both always ignore case, and weeks start on Sunday
Domain functions inside SQL Missing Available in code and in calculated controls
PARAMETERS Different One-word types only (Text, not Text (255))
IN 'other.accdb', linked tables, ODBC Missing Connections to external SQL databases are on the roadmap
Like wildcards * ? # [a-z] [!a] Same ANSI % and _ are ordinary characters

Forms

Feature Notes
Single Form, Continuous Forms, Datasheet Same
PivotTable and PivotChart views Same as Access 2002–2010 Access 2013 removed them
Split Form, Layout view, Navigation forms, web browser control Missing
Header, Detail and Footer sections Same No page header or footer
Labels, text boxes, combo and list boxes, check boxes, option groups, option and toggle buttons, buttons, tab controls, images, subforms, lines, rectangles Same
Hyperlink Different A control of its own (http, https, mailto) rather than a hyperlink field
Bound and unbound object frames, attachments, charts (other than PivotChart), ActiveX Missing
Button actions Different A fixed list (save, undo, new, delete, navigation, close, open a form, hide/show the ribbon and pane) in place of the Command Button Wizard's macros
Combo boxes Different Bound Field and Display Field in place of Column Count and Column Widths; one column shown; up to 1,000 rows. NotInList is not raised
Calculated controls, =Sum() and other totals, domain functions Same Totals are worked out by the server
Conditional formatting, including data bars Same as Access 2010 Up to 50 rules per control; text boxes and combo boxes
Anchoring, Pop Up, Modal, Auto Center Same A form fills its tab, as a tabbed document does
Startup form, custom ribbons, custom shortcut menus Missing Button actions and DoCmd.ShowToolbar can hide the ribbon and Navigation Pane. The Navigation Pane has a right-click menu (Open or Run, Design View); forms and datasheets have none
Code in Datasheet view Different A form in Datasheet view (its own, a datasheet subform, or Default View Datasheet) runs none of its event code; conditional formatting still applies
Filter by Form, Advanced Filter/Sort, Find and Replace Missing Filter by Selection, sorting and code filters work
Design undo, copy and paste between forms, alignment, sizing, spacing Same
Subform nesting Different Three levels (Access allows seven)
Forms on queries Different Read-only
Images Different Stored in the form, up to 400 KB

Reports, macros and other objects

Object Notes
Reports: Report button, Design view, Report View, Print Preview, printing Same Report, Page, Detail and group headers and footers; labels, text boxes, check boxes, hyperlinks, images, lines, rectangles; conditional formatting
Group, Sort, and Total; Totals; Running Sum; Hide Duplicates; Force New Page; Repeat Section; Keep Together; Page Numbers Same
Export a report to PDF Different Through the browser's print dialog (Save as PDF); no PDF made on the server yet
Subreports, Can Grow and Can Shrink, Layout view, labels wizard, charts in reports Missing Subreports and Can Grow/Shrink are next
Opening reports from code (DoCmd.OpenReport, OutputTo), the Reports collection Missing DoCmd.OpenReport raises 2501 "Reports come in a later update"
Macros, embedded macros, data macros, AutoExec Missing Use VBA
Modules and class modules Same
Relationships, Documenter, Analyzer, linked table manager, Switchboard Missing
Compact and Repair Same Database Tools
Import from Access: Import Objects dialog, tables (definition and data, or definition only) and queries Same Queries are rebuilt as Access SQL, including action queries; one that can't run as it is still comes in, with the reason. Union, crosstab and pass-through queries can't come in yet
Import forms, reports, macros and modules from Access files Missing Listed but not imported yet. Export modules from Access's editor and use Import File…
Import from Excel, text Same .xls must be saved as .xlsx first
Export to Excel, text Same Also from users, not just designers
Saved imports and exports, SharePoint, XML, ODBC Missing
User and group security Different Built in: admins and users, managed in Database Tools > Users

The VBA editor

Feature Notes
Project list, Object and Procedure drop-downs Same Inside the app's code window, not a separate program
Syntax colouring, auto-indent, case and spacing tidy on leaving a line, red syntax-error lines Same
IntelliSense: List Members, constants, Parameter Info, Complete Word (Ctrl+J, Ctrl+I, Ctrl+Space) Same Lists include your Types, Enums, classes and JavaScript functions
Debug > Compile Same Also flags code that can't run on the web, with the reason
Breakpoints, Step Into/Over/Out, Run to Cursor, Locals, Watches, Call Stack Same Same keys (F5, F8, F9…). Admins only
Immediate window Same Also has IntelliSense; while paused, works in the paused procedure
Edit and Continue Different Change variables while paused and continue; code edits take effect the next time the procedure runs, not in the paused one
? in code Different Becomes Debug.Print, not Print
Clearing the Immediate window from code Added Debug.Clear or Cls
Explain Error, Fix Error (AI) Added Claude explains the error on the line and proposes a fix to apply or not; admins, when the server has an API key
Properties window, Object Browser, UserForms, Add Watch conditions (break when true or changed), Set Next Statement, Quick Watch, bookmarks, split window Missing
Import and Export File Same .bas and .cls files open in Access's editor; .frm UserForms do not import
Tools > References Different Fixed list: VBA, Access, DAO and JSON always on; Scripting Runtime, VBScript Regular Expressions and six JavaScript libraries to tick. No COM type libraries or Browse…
Module passwords, VBA project protection, digital signatures, Trust Center Missing Only admins can open the code window, but every module's code is sent to each user's browser to run, so keep secrets (keys, passwords) out of code
Where modules are saved Different All changed modules save together with Ctrl+S; a module saves even with compile errors

The VBA language

Feature Notes
Variables, constants, arrays, user-defined Types, Enums, Option Explicit/Compare/Base Same
Option Compare Binary Different Makes comparisons case-sensitive, but InStr, InStrRev, StrComp, Replace and Filter still ignore case unless given vbBinaryCompare
Sub, Function, Property Get/Let/Set, Optional, ParamArray, ByRef/ByVal, named arguments Same
If, Select Case, For, For Each, Do, While, With, GoTo, Exit, End, Stop Same
On Error GoTo / Resume Next / GoTo 0 / GoTo -1, Resume, Err.Raise Same Same error numbers and messages
Class modules, New, Class_Initialize, Class_Terminate, Is, TypeOf Same
Implements, Event, RaiseEvent, WithEvents Missing Compile error
Default members of your own classes, For Each over your own class Missing
GoSub…Return, On…GoTo, On…GoSub Missing Compile error, suggesting a Sub or Select Case
Line numbers as labels (10 x = 1, GoTo 10) Same
Erl Missing
Declare, AddressOf, LongPtr pointers Missing Write a JavaScript module
File I/O (Open, Print #, Input #, Line Input, Get, Put, FreeFile, EOF, LOF) Missing
Collection Same, plus extras Exists, Key, Keys, Items, RemoveAll, Sort and assigning to an item are added
ReDim Preserve Added Can change any bound, not just the last dimension's upper bound
Date literals in code #m/d/yyyy# Same (Different from Web Access Builder SQL, which reads day first)
CDec, Decimal Different Held as Double
CurrentUser() Same Always "Admin", as in an unsecured Access database. Application.CurrentUser gives the signed-in user (different)
StrConv Different vbUpperCase, vbLowerCase and vbProperCase only
Format, DateDiff, DatePart Different First-day-of-week and first-week-of-year arguments are ignored; weeks start on Sunday; formats are UK. Weekday honours its first-day argument
Randomize Different Accepted, no effect: Rnd cannot be seeded, so repeatable sequences (Rnd(-1) then Randomize n) are not available. Rnd(0) repeats the last number
IsError, CVErr Different IsError is always False; CVErr returns the number
SysCmd Different Returns 0
Eval Same Reads Forms! and TempVars! references, so prm.Value = Eval(prm.Name) fills a QueryDef's parameters
Error() function, Error statement Missing Use Err.Description and Err.Raise
Infinite loops and deep recursion Different No "Out of stack space" (28); the page stays busy until you press Break or Reset
Speed Different Interpreted in the browser, and every data call is a request to the server: loop over records in SQL (CurrentDb.Execute) rather than in VBA where you can

Events

Event Notes
Form Open, Load, Current, BeforeInsert, AfterInsert, BeforeUpdate, AfterUpdate, Dirty, Delete, Unload, Close, Timer Same Cancel works where Access allows it
Control Click, DblClick, Change, BeforeUpdate, AfterUpdate, Enter, Exit, GotFocus, LostFocus; tab control Change Same
Activate, Deactivate, Resize, Error, KeyDown, KeyUp, KeyPress, NotInList, form Click and DblClick, a text or combo box's Dirty Missing Offered in the editor and they compile, but they are not raised yet
MouseDown, MouseUp, MouseMove, BeforeDelConfirm, AfterDelConfirm; the KeyPreview property Missing Not offered
Events in Datasheet view Missing A form in Datasheet view runs no event code
On Render Added Runs as each record's copy of a control is drawn, for per-record formatting from code
Event properties pointing at macros or =Function() Missing Only [Event Procedure]
Report events Missing Reports have no code yet

Access objects in code

Object or member Notes
Me, Me!x, Me.x, Me("x"), Me.Controls, Me.Parent, Me.ActiveControl, subform .Form Same
Form properties: Caption, Dirty, NewRecord, CurrentRecord, OpenArgs, Filter, FilterOn, OrderBy, OrderByOn, AllowEdits and friends, TimerInterval, RecordsetClone, Recordset, Bookmark Same
Me.RecordSource = … Missing Error 2448 "comes in a later update"
Me.Cycle, Hwnd, Painting, Properties, WindowLeft/Top/Width/Height, Me.Height, Me.BackColor Missing They compile but fail when run (2465 or 438)
Control properties: Value, Text, OldValue, Visible, Enabled, Locked, Caption, colours, fonts, Left/Top/Width/Height (twips), Tag, ControlTipText, RowSource, ControlSource, SourceObject; Column, ItemData, ListCount, ListIndex; SetFocus, Requery, Undo Same
ItemsSelected, Selected (multi-select list boxes), Pages, PreviousControl, SelStart/SelLength/SelText Missing
Forms!Name, Forms("Name"), Forms.Count, Screen.ActiveForm, Screen.ActiveControl, TempVars Same TempVars last for the browser session
DoCmd.OpenForm (with WhereCondition, data mode, acDialog, OpenArgs), Close, GoToRecord, GoToControl, Requery, RefreshRecord, ApplyFilter, ShowAllRecords, RunSQL, SetWarnings, Hourglass, Beep, CancelEvent, ShowToolbar, MoveSize, OpenTable, OpenQuery (including action queries) Same ShowToolbar knows "Ribbon" and "Navigation Pane" only. OpenForm with acFormDS opens a plain datasheet: no WhereCondition, OpenArgs or code
DoCmd.RunCommand Different Seven commands (save, undo, delete, new record, refresh, remove filter/sort, select record); others raise 2046
DoCmd.OpenReport, OutputTo, FindRecord, FindNext, SearchForRecord Missing Compile, but raise 2501 "comes in a later update"
DoCmd.TransferSpreadsheet, TransferText, TransferDatabase, PrintOut, SendObject, RunMacro, Quit, CopyObject, DeleteObject, Rename, Echo… Missing Compile error "not available on the web"
DoCmd.Save, Maximize, Minimize, Restore Different Accepted, no effect
Application.Quit Missing Error 2501: close the browser tab
Me("x"), Me(0) Different Reach controls only; Me.x and Me!x reach controls, then fields
CurrentProject, CodeProject, CodeDb, DBEngine, Workspaces, Reports, AllForms, CommandBars, Application.FileDialog Missing
MsgBox, InputBox Same Shown as the app's own dialogs; the default title is "Web Access Builder". vbCritical and vbExclamation show a warning style; vbQuestion and vbInformation have no icon. InputBox ignores XPos, YPos and help

DAO and data from code

Feature Notes
CurrentDb.OpenRecordset on a table, query or SQL Same
Move…, EOF, BOF, RecordCount, AbsolutePosition, Bookmark, Find…, NoMatch, Clone, GetRows, Requery Same RecordCount is right straight away (no MoveLast needed)
Edit, AddNew, Update, CancelUpdate, Delete Same On recordsets of one table's records
Updating a recordset on a query Different Allowed when the query reads one table (no join, totals or DISTINCT); otherwise read-only (error 3027)
Size Different Every record is read at once, up to 50,000
CurrentDb.Execute (SQL or a saved action query), RecordsAffected, DoCmd.RunSQL with its warnings Same
Execute without dbFailOnError Different Each statement is one transaction: a bad value means nothing changes and no error is raised (RecordsAffected = 0). Access changes the records it can
[Forms]!… and [TempVars]!… in SQL for Execute and OpenRecordset Different Filled in from open forms and TempVars (Access raises 3061); other parameters still raise 3061
SELECT … INTO Different Admins only
Domain functions DLookup, DCount, DSum, DAvg, DMin, DMax, DFirst, DLast Same
DStDev, DStDevP, DVar, DVarP Missing
QueryDefs: Name, SQL, Type, Fields, Parameters, OpenRecordset, Execute, CreateQueryDef (saved or temporary), Append, Delete Same Setting SQL saves the query. Changing designs needs an admin
TableDefs: Fields (with Caption and Description properties), Indexes, RecordCount, CreateTableDef, CreateField, Fields.Append/Delete, renaming, TableDefs.Append/Delete Same Changing designs needs an admin
CreateIndex, linked tables (Connect, RefreshLink), Relations, Containers, Workspaces Missing Set Indexed in Design view
Transactions (BeginTrans, CommitTrans, Rollback) Missing Each change is saved straight away
ADO, ODBC connections, linked tables Missing
Multi-user locking (Record Locks, LockEdits, the "write conflict" dialog) Missing There are no record locks and no conflict check: if two people edit the same record, the later save wins

Things a web page cannot do

Each of these is a compile error with the reason, so ported code shows straight away what needs changing.

VBA Why Instead
Shell, SendKeys, AppActivate They drive Windows —
Kill, MkDir, RmDir, ChDir, ChDrive, FileCopy, Dir, CurDir, FileLen, FileDateTime, GetAttr, SetAttr No access to the computer's files External Data import and export
Open … For, Print #, Input #, Line Input, Get, Put, Write #, FreeFile, EOF(n), LOF No files Build text with Csv.Stringify or JSON
Environ, GetSetting, SaveSetting, DeleteSetting, GetAllSettings No Windows settings or registry A settings table, or TempVars
Declare, AddressOf No DLLs A JavaScript module
CreateObject("…") other than Scripting.Dictionary and VBScript.RegExp, GetObject No COM The JavaScript libraries; JSON
CallByName Not supported Select Case

Web Access Builder additions

Code using these won't run in Access. For SortArray, Cls, Debug.Clear, the Collection extras and ReDim Preserve beyond VBA's rules, the first time each line runs the Immediate window says so: Note (Module1, line 12): SortArray is a webaccess addition; Access's VBA doesn't have it. The others print no note.

Addition What it does
On Render event Per-record formatting from code, after conditional formatting
ReDim Preserve on any bound Keeps the elements still in range
Collection extras c(key) = value, Exists, Key(i), Keys, Items, RemoveAll, Sort
SortArray Sorts 1-D arrays, or 2-D arrays by a column
Debug.Clear, Cls Clear the Immediate window
JSON type JSON.Parse, j("key"), j.Stringify, JSON.FromRecordset
JavaScript modules Functions in JavaScript that VBA calls, in place of DLLs
JavaScript libraries Csv, Stats, Geo (British National Grid, OS grid references, chainage), Dates (UK bank holidays, working days, financial years), Fuzzy, Crypto
PivotTable and PivotChart views Restored from Access 2010
Roles and sign-in Admin and user, without user-level security files
AI help with errors Explain Error and Fix Error in the code window

Porting code from Access

  1. Import Objects from the Access file (External Data > Access) brings in the tables and saved queries. Rewrite any union or crosstab queries, and re-create the forms and reports, with the same control names.
  2. Export each module from Access's editor (right-click > Export File) and Import File… it in the code window. Form modules (Form_<name>.cls) go behind the form of that name, so make the forms first.
  3. Compile. Fix what it reports: file, registry, Shell and DLL calls; GoSub and On…GoTo; Implements and WithEvents; unsupported DoCmd methods. Explain Error helps here if the server has an API key.
  4. Check dates in SQL strings: "… WHERE Placed >= #" & Format(d, "mm/dd/yyyy") & "#" must become Format(d, "yyyy-mm-dd"), which reads the same in both. Date literals in VBA code itself are unchanged.
  5. Check code that relies on events not yet raised (KeyDown, KeyPress, NotInList, Error, Activate, Resize), on report events or on opening reports from code.
  6. If you use a Web Access Builder addition, keep a fallback if the code must still run in Access (the Immediate window notes some of them; see Web Access Builder additions).

Microsoft Access is a trademark of Microsoft Corporation. Web Access Builder is an independent product and isn't affiliated with or endorsed by Microsoft. © 2026 Simon Wilson.