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:
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.
The default language is English. The pull-down list offers the following alternative languages:
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.
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:
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:
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.
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.
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.
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:
The Tools page allows the user to specify the following for all tools if wished:
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.
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:
The following options may be user-defined for the SQL Editor:
The following set of options control the behavior of the SQL Editor's Query Manager, when multiple instances of the SQL Editor are started:
The SQL Script Options page offers the following user specifications:
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.
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:
Metadata Transaction Properties:
Script Transaction Properties:
Here a range of options are available, applicable for all data grids:
Check boxes for the following options:
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.
Here the user can specify the colors for different elements in the grids:
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.
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
c | Displays 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. |
d | Displays the day as a number without a leading zero (1-31). |
dd | Displays the day as a number with a leading zero (01-31). |
ddd | Displays the day as an abbreviation (Sun-Sat) using the strings given by the ShortDayNames global variable. |
dddd | Displays the day as a full name (Sunday-Saturday) using the strings given by the LongDayNames global variable. |
ddddd | Displays the date using the format given by the ShortDateFormat global variable. |
dddddd | Displays the date using the format given by the LongDateFormat global variable. |
e | Displays the year in the current period/era as a number without a leading zero (Japanese, Korean and Taiwanese locales only). |
ee | Displays the year in the current period/era as a number with a leading zero (Japanese, Korean and Taiwanese locales only). |
g | Displays the period/era as an abbreviation (Japanese and Taiwanese locales only). |
gg | Displays the period/era as a full name. (Japanese and Taiwanese locales only). |
m | Displays 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. |
mm | Displays 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. |
mmm | Displays the month as an abbreviation (Jan-Dec) using the strings given by the ShortMonthNames global variable. |
mmmm | Displays the month as a full name (January-December) using the strings given by the LongMonthNames global variable. |
yy | Displays the year as a two-digit number (00-99). |
yyyy | Displays the year as a four-digit number (0000-9999). |
h | Displays the hour without a leading zero (0-23). |
hh | Displays the hour with a leading zero (00-23). |
n | Displays the minute without a leading zero (0-59). |
nn | Displays the minute with a leading zero (00-59). |
s | Displays the second without a leading zero (0-59). |
ss | Displays the second with a leading zero (00-59). |
z | Displays the millisecond without a leading zero (0-999). |
zzz | Displays the millisecond with a leading zero (000-999). |
t | Displays the time using the format given by the ShortTimeFormat global variable. |
tt | Displays the time using the format given by the LongTimeFormat global variable. |
am/pm | Uses 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/p | Uses 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. |
ampm | Uses 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. |
Example
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
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:
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.
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).
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:
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.
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, the first time you start IBExpert:
By starting IBExpert for a second time, IBExpert automatically creates a User Database in the user\app directory.
If you do not specify the name and location of the IBExpert user database yourself, the default ibexpert.udb will be used for storage of all settings, which can be found here: \HK-Software\IBExpert\ibexpert.udb. Please note, this area is user-dependent and even if several users work on one machine, each user has their own file.
You can of course specify the location of the User Database yourself. The simplest and quickest way to do this 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:
If you do not specify the location for your user database here, the default location \HK-Software\IBExpert\ibexpert.udb will be used. This location is however user-dependent. We recommend that you specify a non-user-dependent directory and path for your user database using this menu function. If you need to - either to another user on the same machine, or another machine, you simply specify the directory and path here, or copy the IBExpert.udb to the new machine.
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 (%):
\somedata\ibedb.fdb
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.
We are often asked, how all IBExpert settings, such as database registrations, can be ported when installing IBExpert on another computer.
If you have specified the location and name of your user database in Environment Options / User Database, you can move it from here to the new location.
If you have not specified a location yourself: by default, the user database file can always be found in the folder: \HK-Software\IBExpert\ibexpert.udb. This area is user-dependent and even if several users work on one machine, each user has their own file.
Search for the file ibexpert.udb on your computer. If it is found, either copy it to the path mentioned above or create a user-independent path, e.g. c:\db\ibexpert.udb.
Restart IBExpert and enter the selected path into the User Database and restart again. Following this process all entries from the previous User Database should be visible again.
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:
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:
[UserDB] UDBConnectString=USERDB.FDB UDBUserName=SYSDBA UDBPassword=masterkey UDBClientLib=..\Firebird\fbembed.dll
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.
Using the Sounds preference, it is possible to specify a .WAV file to announce the end of a time-consuming query.
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 as begin reg = ibec_reg_Open(__HKEY_CURRENT_USER, 0); try if (ibec_reg_OpenKey(reg, 'Software\HK Software\IBExpert\CurrentData', FALSE)) then begin UDBConnectString = ibec_reg_ReadString(reg, 'UDBConnectString'); UDBClientLib = ibec_reg_ReadString(reg, 'UDBClientLib'); UDBUserName = ibec_reg_ReadString(reg, 'UDBUserName'); UDBPassword = ibec_reg_ReadString(reg, 'UDBPassword'); end finally ibec_reg_Close(reg); end; if ((UDBConnectString is null) or (UDBConnectString = '')) then exit; UserDBConnectParams = 'DBName="' || UDBConnectString || '"; ClientLib=' || UDBClientLib || '; User=' || UDBUserName || '; Password=' || UDBPassword || '; Names=UNICODE_FSS; SqlDialect=1'; UserDB = ibec_CreateConnection(__ctInterBase, UserDBConnectParams); try ibec_UseConnection(UserDB); -- Looking for missing database files (for local databases only) MissingFiles = null; i = 0; PropIni = ibec_ini_Open(''); try for select id, props from databases where (rec_type = 0) and (props containing 'Protocol=3') into :id, :props do begin 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 begin MissingFiles[i] = ID; i = i + 1; end; end; finally ibec_ini_Close(PropIni); end; if (i > 0) then begin ParentID = null; select id from databases where (rec_type = 1) and (props containing 'FolderCaption=***MISSING DATABASE FILES***') into ParentID; if (ParentID is null) then begin 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***'); commit; end for i = 0 to ibec_High(MissingFiles) do begin id = MissingFiles[i]; update databases set parent_id = :ParentID where id = :id; commit; end end; finally ibec_CloseConnection(UserDB); end; end
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 as begin pwd=''; if (ibec_InputQuery('Start','Please enter password',pwd)) then if (pwd='123') then ibec_enablefeature(0); else ibec_disablefeature(0); end
Please also refer to the IBEBlock example, Disable and enable IBExpert features.