Environment Options

<< IBExpert Options menu | IBExpert | Editor Options >>

Environment Options

Environment Options can be found in the IBExpert Options menu. It enables the user to organize his IBExpert working environment as he wishes. It is possible, for example, to set certain defaults for editors and specific menu items, alter colors or the system font, etc.


The Preferences window allows the user to specify certain general preferences or defaults.

These include:

(1) User interface

tutorial available

The pull-down list offers the options MDI or SDI.

The user interface is the connection between the machine and the user, i.e. the way the software is presented to the user on-screen. The user interface enables the user to use the program and manipulate data.

Under the IBExpert Options menu item, Environment Options, the user interface can be defined as SDI (Single Document Interface) or MDI (Multiple Document Interface).

When altering the user interface from SDI to MDI and vice versa, IBExpert needs to be restarted for the change to take effect.

(2) Interface language

tutorial available

The default language is English. The pull-down list offers the following alternative languages:

  • Czech
  • Dutch
  • English
  • French
  • German
  • Hungarian
  • Italian
  • Japanese
  • Polish
  • Portuguese
  • Romanian
  • Russian
  • Spanish

Should you not be able to see the full list of languages in the drop-down list, either delete the ibexpert.lng file or rename the english.lng file, found in the IBExpert Languages directory, to ibexpert.lng, and place this in the main IBExpert directory.

You can customize or update your language using the IBExpert Tools menu item, Localize IBExpert.

(3) Default server version

If the same database version is used for all projects, it is advisable to set a default version here. This saves having to enter the database server version every time a database is registered. The pull-down list offers the following database versions:

  • Unknown (default)
  • Firebird 1.0
  • Firebird 1.5
  • Firebird 2.0
  • Firebird 2.1
  • Firebird 2.5
  • Firebird 3.0
  • InterBase 5.x
  • InterBase 6.1
  • InterBase 6.5
  • InterBase 7.0
  • InterBase 7.1
  • InterBase 7.5
  • InterBase 2007
  • InterBase 2009
  • Yaffil 1.0

(4) Default character set

The default character set is the character set defined when creating the database, and applicable for all areas of the database unless overridden by the domain or field definition. It controls not only the available characters that can be stored and displayed, but also the collation order. If not specified, the parameter defaults to NONE, i.e. values are stored exactly as typed.

Please refer to Default character set for further information.

The following character sets are currently available:

  • BIG_5
  • CYRL
  • DOS437
  • DOS850
  • DOS852
  • DOS857
  • DOS860
  • DOS861
  • DOS863
  • DOS865
  • EUCJ_0208
  • GB_2312
  • ISO8859_1
  • ISO8859_2
  • KSC_5601
  • NEXT
  • NONE
  • SJIS0208
  • UTF8
  • WINI1250
  • WINI1251
  • WINI1252
  • WINI1253
  • WINI1254

(5) Default client library

The GDS32.DLL is dependent upon the database server. Firebird has, in addition to this, its own library, FBCLIENT.DLL. The GDS32.DLL is however also included for compatibility reasons. When working with Firebird, or different Firebird/InterBase server versions, the DLL can be selected here, as wished; simply click the Open File icon to the right of this field, to select the library required.

As IBExpert is still currently a 32-bit application, it requires a 32-bit client dll. If you try to register a 64-bit Firebird (with the standard 64-bit fbclient.dll) in IBExpert you will get an error message informing you that the fbclient.dll is missing or invalid.

So to use IBExpert with a 64-bit Firebird version, you will need to use the Firebird 32-bit client library. Simply download a 32-bit Firebird version, for example, the fbembed.dll, which is delivered in the full IBExpert installation package and found in the IBEUDB subdirectory.

The Script Executive always uses this default client library unless it is overriden using the SET CLIENTLIB command directly in the Script Executive editor.

(6) Localize form shortcut

Here you can specify your own shortcut for opening the Localizing Form, if you do not wish to use the default [Ctrl + Shift + Alt + L]. The Localizing Form displays all functions and the respective key combinations, which can also be customized. Please refer to Localizing Form for further information.

Check options

The following features can be checked or unchecked as wished:

(7) Don't Show Splash Screen: disables the IBExpert Splash Screen displayed whilst IBExpert is being loaded.
(8) Disable multiple instances of IBExpert: when checked this option ensures that IBExpert is only opened once.
(9) Restore desktop after connect: if this option is checked, IBExpert will restore all those forms left open as the last connection was ended, when it reconnects to the database.
(10) Maximize first child window: the first Editor/window opened is automatically expanded to fill the maximum screen area. This option is only available in the MDI version.
(11) Autohide DB Explorer when inactive: this option hides the DB Explorer automatically, if it is not focused. In other words, when the mouse is held over the left area, the DB Explorer appears; when the mouse is removed to begin work in an editor or child window, the DB Explorer is blended out, offering a larger work area.

back to top of page


Some users find it annoying to be constantly asked for confirmation, whether or not they really want to carry out an operation. This window allows the user to specify, which confirmations he considers wise.

The following options are available:

  • Confirm object (or documentation) saving: if this option is checked, IBExpert will request confirmation before saving object modifications or descriptions.
  • Confirm exit from editor (if object is changed): if this option is checked, IBExpert will request confirmation, if alterations have been made, before exiting from an object editor.
  • Confirm object dropping (recommended): if this option is checked, IBExpert will request confirmation before dropping any database object.
  • Confirm exit: if this option is checked, IBExpert will request confirmation before closing IBExpert.
  • Confirm successful compilation: (recommended) if this option is checked, IBExpert displays a dialog, showing whether compilation was successful or not.
  • Confirm closing of all windows
  • Confirm commit/rollback transaction: (recommended) this option determines whether a message box appears, asking for confirmation when a user commits or rolls back active transactions in the SQL Editor, Table Editor, View Editor or Stored Procedure Editor.
  • When there is an active transaction in form to be closed: this option allows you to control which default action should be taken when closing an active transaction. By default IBExpert asks for your choice for each active transaction when you close a form. Now you can select from the options Let me choose an action, Commit or Rollback.

back to top of page


The Tools page allows the user to specify the following for all tools if wished:

  • Autogrant privileges when compiling procedures, triggers and views: this saves the repetitive task of autogranting privileges on the Grants page of the object editors each time a new procedure, trigger or view is created, and prevents the problems which inevitably arise should the assignment of rights be forgotten. (IBExpert version 2014.03.16 introduced support of Firebird 3.0 packages and functions.)
  • Revoke existing privileges: if this option is enabled, an object's (stored procedure, trigger, view) existing privileges will be deleted before granting it new privileges.
  • Inplace Objects Editors: this item applies to the so-called editors within editors.

For example, the Table Editor is active and a trigger is selected on the Trigger page: if this option is not checked, an SQL Editor window appears automatically in the lower part of the Table Editor, displaying the trigger code, but not allowing any changes to be made. When this option is however checked, a simple click on a trigger automatically opens the Trigger Editor in this lower area, enabling work to be done on it, without having to leave the Table Editor and opening the Trigger Editor.

back to top of page

DB Explorer

Here it is possible to specify whether database object descriptions should be displayed or not (this only makes sense if object descriptions are entered by the user), and whether double-click expanding (for the DB Explorer tree) is desired. Further options include a check-box option to allow filtering of inactive database nodes and a drop-down list for the specification of the tab position of the Database Explorer pages.

Furthermore, colors may be specified for the following:

  • system objects
  • database folders
  • database folder containing active DB
  • inactive triggers

back to top of page

SQL Editor

The following options may be user-defined for the SQL Editor:

  • Fetch All: when this option is checked, all records corresponding to the query will be extracted from the table and displayed on the Results page, as opposed to only those displayed that are visible in the Results area, when this option is left unchecked.
  • Go to Results page after executing: this option is only worth checking of course if you have specified Separate Results page (see below).
  • Clear editor after successful execution of DDL statement: this clears the results page after the query has been committed.
  • Separate Results page: turn this option off to place SQL query results directly below the code editor, or activate it to display query results on a separate page (found directly to the right of the Edit page).
  • Request new query name immediately before creating: This option was implemented in IBExpert version 2014.09.15. If this option in enabled IBExpert will request a new query name just before creating it.

The following set of options control the behavior of the SQL Editor's Query Manager, when multiple instances of the SQL Editor are started:

  • Synchronize text of active query in opened SQL Editors immediately when the second, third etc. SQL Editor starts
  • Use next existing query set
    • Create a new query set when there are no more inactive query sets
  • Create a new empty query in query set used by this SQL Editor

back to top of page

SQL Script Options

The SQL Script Options page offers the following user specifications:

  • Abort Script on Error: the script execution is halted the moment an error is detected.
  • Rollback on Abort: the script is automatically rolled back the moment an error is detected in the script. This option is only possible, if the first item, Abort Script on Error, is already selected.
  • Fire event blocks: please refer to the Script Executive's Options page for further information.

back to top of page

PSQL Debugger

  • Toggle to the Message tab on error/warning/message while debugging: implemented in IBExpert version 2019.07.24. By default the PSQL Debugger activates the Message tab on every error/warning/message occurred while debugging. If you don't like the default behaviour turn this option off.

back to top of page


Here it is possible for the user to specify the system (i.e. IBExpert) font name and size. The Sample Text 12345 displays the specified font as it will appear in IBExpert.

back to top of page


Here certain additional data, metadata and script default transaction properties may be defined for the server connection.

These are all Firebird/InterBase API terms, and may be checked as wished.

Data Transaction Properties:

  • Snapshot
  • Read Committed
  • Read-Only Table Stability
  • Read-Write Table Stability

Metadata Transaction Properties:

  • Snapshot
  • Read Committed
  • Read-Only Table Stability
  • Read-Write Table Stability

Script Transaction Properties:

  • Snapshot
  • Read Committed
  • Read-Only Table Stability
  • Read-Write Table Stability

back to top of page


Here a range of options are available, applicable for all data grids:

Check boxes for the following options:

  • Stripy Grids: makes reading wide lines of data rows easier.
  • Scrollbars tracking
  • Show text blobs as memo: The memo option enables the blob to be easily read by simply focusing the cursor over the blob field.
  • Immediate editor: Enables immediate editing in the data grid by simply placing the cursor on a field, as opposed to having to first double-click on the field, in order to edit it.
  • Allow records grouping: When this option is checked, an additional gray bar appears above the column headers over the grid. A column header simply needs to be dragged 'n' dropped into this area, to group by the selected column. A reorganized data view appears, where the group contents can be revealed or hidden, by clicking on the '+' or '-' buttons. Please note that this is not the same as the data grid right-click menu item Group Fields/Ungroup Fields.
  • Enable tooltips: when checked, this option displays the full field contents when the cursor is held over a particular field, if the column width is not sufficient to display all information. This is useful, if tables with many columns and long field contents need to be scanned.
  • Enable navigation using [Tab] and [Shift + Tab] keys
  • Allow multiselect: allows multiple data sets to be selected for editing (e.g. copying). If this is not checked, it is only possible to select one data set at a time. The change of mode can be recognized by the form/shade of the arrow on the left when pointing at a selected data set.
  • Full refresh (close and open dataset) when Refresh button clicked: by default, the Refresh button in all IBExpert Data grids refreshes only the current record, not the entire record set. if you wish to use the data grids to enter multiple data sets, you can alter this default value by checking this option.

Furthermore it is possible to specify the exact representation of a NULL and NOT NULL fields. The default value is displayed as <null> (in red). NOT NULL fields can be displayed as bold text or be highlighted with color.

back to top of page


Here the user can specify the colors for different elements in the grids:

  • Grid Background
  • Current Row
  • Odd Rows

back to top of page

Display Formats

These options allow the user to specify the display format in grids for INTEGER, FLOAT, DATE, TIME and DATE/TIME fields.

Further options include a check box option for Use field scale, which allows a field definition to override these standard specifications, and an option to specify the String fields' width for characters.

The following lists the various date and time formatting options available.

Date Time Formats

The following format allows you to alter the way the date and time is displayed. Please note that this does not alter the way this information is stored, only the way it is displayed.

Date time format strings specify the formatting of date-time values (such as TDateTime) when they are converted to strings. Date time format strings are passed to formatting methods and procedures (such as FormatDateTime), and are also used to set certain global variables (such as ShortDateFormat).

They are composed from specifiers that represent values to be inserted into the formatted string. Some specifiers (such as d), simply format numbers or strings. Other specifiers (such as /) refer to local-specific strings from global variables.

In the following table specifiers are given in lower case. Case is ignored in formats, except for the am/pm and a/p specifiers.

Specifier Displays

cDisplays the date using the format given by the ShortDateFormat global variable, followed by the time using the format given by the LongTimeFormat global variable. The time is not displayed if the date-time value indicates midnight precisely.
dDisplays the day as a number without a leading zero (1-31).
ddDisplays the day as a number with a leading zero (01-31).
dddDisplays the day as an abbreviation (Sun-Sat) using the strings given by the ShortDayNames global variable.
ddddDisplays the day as a full name (Sunday-Saturday) using the strings given by the LongDayNames global variable.
dddddDisplays the date using the format given by the ShortDateFormat global variable.
ddddddDisplays the date using the format given by the LongDateFormat global variable.
eDisplays the year in the current period/era as a number without a leading zero (Japanese, Korean and Taiwanese locales only).
eeDisplays the year in the current period/era as a number with a leading zero (Japanese, Korean and Taiwanese locales only).
gDisplays the period/era as an abbreviation (Japanese and Taiwanese locales only).
ggDisplays the period/era as a full name. (Japanese and Taiwanese locales only).
mDisplays the month as a number without a leading zero (1-12). If the m specifier immediately follows an h or hh specifier, the minute rather than the month is displayed.
mmDisplays the month as a number with a leading zero (01-12). If the mm specifier immediately follows an h or hh specifier, the minute rather than the month is displayed.
mmmDisplays the month as an abbreviation (Jan-Dec) using the strings given by the ShortMonthNames global variable.
mmmmDisplays the month as a full name (January-December) using the strings given by the LongMonthNames global variable.
yyDisplays the year as a two-digit number (00-99).
yyyyDisplays the year as a four-digit number (0000-9999).
hDisplays the hour without a leading zero (0-23).
hhDisplays the hour with a leading zero (00-23).
nDisplays the minute without a leading zero (0-59).
nnDisplays the minute with a leading zero (00-59).
sDisplays the second without a leading zero (0-59).
ssDisplays the second with a leading zero (00-59).
zDisplays the millisecond without a leading zero (0-999).
zzzDisplays the millisecond with a leading zero (000-999).
tDisplays the time using the format given by the ShortTimeFormat global variable.
ttDisplays the time using the format given by the LongTimeFormat global variable.
am/pmUses the 12-hour clock for the preceding h or hh specifier, and displays am for any hour before noon, and pm for any hour after noon. The am/pm specifier can use lower, upper, or mixed case, and the result is displayed accordingly.
a/pUses the 12-hour clock for the preceding h or hh specifier, and displays a for any hour before noon, and p for any hour after noon. The a/p specifier can use lower, upper, or mixed case, and the result is displayed accordingly.
ampmUses the 12-hour clock for the preceding h or hh specifier, and displays the contents of the TimeAMString global variable for any hour before noon, and the contents of the TimePMString global variable for any hour after noon.
/Displays the date separator character given by the DateSeparator global variable.
:Displays the time separator character given by the TimeSeparator global variable.
'xx'/"xx"Characters enclosed in single or double quotes are displayed as-is, and do not affect formatting.


To format the date as month, day, year and the time as am or pm, simply enter the following on the Display Formats page:

Simply alter DateTime Fields to: mm/dd/yyyy hh:mm am/pm: and Time Fields to hh:mm:ss am/pm

back to top of page

Additional Help

The Additional Help window allows the user to add certain additional help files. This is particularly useful for incorporating the help files of third party components, installed in the IBExpert PlugIns menu or the IBExpert Tools menu item, External Tools.

An additional menu item is automatically inserted in the IBExpert Help menu, for each of these help files.

See also:
Additional Help Files

back to top of page

Additional Tools

The Additional Tools dialog allows the user to add certain additional third party tools. Once additional tools have been uploaded here, an extra menu item, External Tools, appears in the IBExpert Tools menu, allowing the user to quickly open his third party tools directly from IBExpert.

back to top of page

Disabled Names

This page can be used to define a list of disabled object names.

IBExpert refers to this list, when new database objects (and fields) are created, and publishes a warning if the new name corresponds to any name in this list.

Names that should be avoided because they are Firebird keywords, such as ORDER and START (Firebird 2.1) do not need to be added to this list, as they are automatically generated by IBExpert with the necessary quotation marks ("). If you wish to avoid metadata names in quotation marks, these words need to be typed with the quotation marks in the list of disabled names (see illustration above).

back to top of page


This dialog is important, to specify which file types IBExpert should recognize and associate with the Firebird/InterBase database. The check list includes the following suffixes:

  • .GDB
  • .FDB
  • .IB
  • .SQL
  • .GRC

back to top of page

IBExpert Direct

The IBExpert Direct dialog allows the user to specify a number of options concerning this IBExpert menu item found in the Help menu. The IBExpert configuration window can be started either from the IBExpert Options menu item, Environment Options or alternatively directly from the IBExpert Help menu item, IBExpert Direct, using the respective icon:

The options available include the following:

(1) Automatically poll network: this is recommended, as IBExpert Direct is an important information source, informing all users of news concerning IBExpert, such as new versions, documentation, downloads, plugins, forums, as well as contact addresses and a direct link to the IBExpert home page, https://ibexpert.net/ibe/.

(2) The polling interval in days can be user-specified. Check boxes allow the user to specify whether IBExpert Direct should (3) automatically shown on refresh, or whether (4) the network should be polled for new items, each time IBExpert is started.

(5) The Last update field is purely a display field, showing the last time the network was polled for new IBExpert Direct news items.

(6) It is also possible to specify a proxy server if necessary, with fields for specification of the proxy address, port, user name and password.

(7) The last field displays the IBExpert Direct link address for IBExpert to internally download the file.

back to top of page

IBExpert User Database

tutorial available

The complete IBExpert configuration and work is stored in the IBExpert User Database. The user database should always be used for your main storage for security reasons. It is also possible to store SQL scripts in the IBExpert User Database. These scripts can then be viewed and opened using the Scripts/Blocks page in the DB Explorer.

If you have not specified and registered your IBExpert User database, you will receive the following error message, each time you start IBExpert:

The simplest and quickest way to set up your User database is using the supplied Firebird embedded server.

Use the Environment Options menu item, User Database:

The following information is required in order to create a new user database. After checking the Allow User Database checkbox the following fields need to be completed:

  • User Database Connection String: Use this field to specify a local file path, e.g. c:\db\ibe.fdb. Important: do not quote a server name (e.g. localhost:) if you are intending to use the recommended Embedded Server.
  • User Name (default: SYSDBA).
  • Password (masterkey).
  • Client Library File here you should select the fbembed.dll located in the IBExpert \IBEUDB subdirectory.
  • Check box: Store Project View Data in User Database

Since IBExpert version 2020.05.10 it is possible to use environment variables in a database path and client library. To use the value of an environment variable as a part of a path enclose it between the percent chars (%):


There is an IBE_APPDIR environment variable that contains the location of the IBExpert.exe directory.

The user database can then be created and initialized using the Create and Init User Database button, and then registered using the IBExpert Database menu item, Register Database. From now on you should no longer see the error message when starting IBExpert.

You can also set the User Database properties from an INI-file.

If you wish to store the IBExpert User Database on a network drive, we recommend the following procedure: move the client library file, fbembed.dll, from the IBExpert subdirectory, \IBEUDB to a location of your own choice (but without the localhost: prefix), and rename the database with a valid name of your choice. The User Database then uses Firebird's Embedded Server.

Please also refer to the IBEBlock article: Performing a daily backup of the IBExpert User Database.

Setting User Database properties from an INI-file

New to IBExpert version 2016.09.04. IBExpert looks for IBExpert.ini file in the current directory. If there is no IBExpert.ini file in this directory - the user profile directory will be searched too.

If the IBExpert.ini file is found, IBExpert will read the "UserDB" section, if it exists. Four parameters are possible in this section:

  • UDBConnectString - the User Database connection string;
  • UDBUserName - user name
  • UDBPassword password
  • UDBClientLib - path to client library file (fbclient.dll if omitted)

Only the UDBConnectString parameter is mandatory. If this parameter is found IBExpert will connect to the specified database instead of getting the User Database connection properties from the Windows Registry.

Example of the IBExpert.ini file:


back to top of page


Please note that since version 2011.12.01 IBExpert uses the Firebird database and Firebird Embedded 2.5 to store IBExpert data (registered databases, query histories etc.) by default. In previous versions by default IBExpert stored this data in the IBExpert.stg file and the user was able to change this manually in the User Database. Working with IBExpert.stg is still possible (for example, if you disable the User Database manually) but you will get a warning every time you start IBExpert (refer to image at top of page), and we will not support this method in the future.

Pre-2011.12.01: If you wish to copy the specifications for a database already registered in one IBExpert version over to another IBExpert version, simply copy the file: \Documents and Settings\<user>\Application Data\HK-Software\IBExpert\IBExpert.stg. The preferable solution is however to change to the IBExpert User Database.

back to top of page


Using the Sounds preference, it is possible to specify a .WAV file to announce the end of a time-consuming query.

back to top of page

IBExpert After Start Script

A script specified here will be executed every time IBExpert is started.


The following example illustrates how to use the After Start Script to find all database registration records with missing database files (if local access is used), and place them into an individual folder. This only works with the User Database.

      execute ibeblock
        reg = ibec_reg_Open(__HKEY_CURRENT_USER, 0);
          if (ibec_reg_OpenKey(reg, 'Software\HK Software\IBExpert\CurrentData', FALSE)) 

            UDBConnectString = ibec_reg_ReadString(reg, 'UDBConnectString');
            UDBClientLib = ibec_reg_ReadString(reg, 'UDBClientLib');
            UDBUserName = ibec_reg_ReadString(reg, 'UDBUserName');
            UDBPassword = ibec_reg_ReadString(reg, 'UDBPassword');

        if ((UDBConnectString is null) or (UDBConnectString = '')) then

        UserDBConnectParams = 'DBName="' || UDBConnectString ||
                              '"; ClientLib=' || UDBClientLib ||
                              '; User=' || UDBUserName ||
                              '; Password=' || UDBPassword ||
                              '; Names=UNICODE_FSS; SqlDialect=1';

        UserDB = ibec_CreateConnection(__ctInterBase, UserDBConnectParams);

          -- Looking for missing database files (for local databases only)
          MissingFiles = null;
          i = 0;

          PropIni = ibec_ini_Open('');
            for select id, props from databases
                where (rec_type = 0) and (props containing 'Protocol=3')
                into :id, :props
              Props = '[DB]' || ibec_CRLF() || Props;
              ibec_ini_SetStrings(PropIni, Props);
              Props = ibec_ini_GetStrings(PropIni);
              DBFile = ibec_ini_ReadString(PropIni, 'DB', 'DBNames', '');

              if ((DBFile <> '') and (not ibec_FileExists(DBFile))) then
                MissingFiles[i] = ID;
                i = i + 1;

          if (i > 0) then
            ParentID = null;
            select id from databases
            where (rec_type = 1) and (props containing 'FolderCaption=***MISSING DATABASE FILES***')
            into ParentID;
            if (ParentID is null) then
              ParentID = gen_id(GEN_DATABASE_ID, 1);
              insert into databases (ID, PARENT_ID, REC_TYPE, DB_ORDER, PROPS)
                 values (:ParentID, 0, 1, 0, 'FolderCaption=***MISSING DATABASE FILES***');

            for i = 0 to ibec_High(MissingFiles) do
              id = MissingFiles[i];
              update databases set parent_id = :ParentID where id = :id;


The following example shows how you can limit access for certain named users to certain IBExpert features, using a combination of an IBEBlock script and an an After start script:

 execute ibeblock
   if (ibec_InputQuery('Start','Please enter password',pwd))
     if (pwd='123') then

Please also refer to the IBEBlock example, Disable and enable IBExpert features.

See also:

back to top of page
<< IBExpert Options menu | IBExpert | Editor Options >>