Read Me First FAQ

[raw]

dBASE™ PLUS 11 – Read Me First FAQ

Version Updates:

[accordion] [toggle title=”dBASE™ PLUS 11 – Version 11.3 FIXES”] IDE

Issue #2438
Fixed – Office3 themes do not correctly paint titlebar when system menu is turned off for form

Issue #2432
Fixed – With office3 theme … automatically setting form.visible to false does not work

Issue #2434
Fixed – limited characters in ‘other’ tab in Navigator

ADO

Issue #1988
Fixed – ADOQuery – invalid argument for value with parameter having a negative value

Forms, Reports and objects

Issue #2455
Fixed – Cannot properly select a row in a grid after resizing row then query.requery()

Issue #1798
Fixed – Impossible to resize Col grid when using drag effect. this goes back to at least 2.8

Issue #2437
Fixed – Add a plain text Editor to dBASE Plus. added a property called textType to the existing Editor class to select the mode or language to use via a dropdown list:

0 – HTML
1 – Plain Text

Issue #2460 and 2461
Fixed – Cannot drop items from UI controls onto an editor using drag and drop (no allowDrop property …)
Editor – Add method to get current cursor position as an offset into the editor’s value

// TestEditorDrop.wfm showing how to use new feature..
** END HEADER -- do not remove this line
//
// Generated on 06/12/2017
//
parameter bModal
local f
f = new EditorDragDropForm()
if (bModal)
f.mdi = false // ensure not MDI
f.readModal()
else
f.open()
endif

class EditorDragDropForm of FORM
with (this)
height = 14.8636
left = 3.1429
top = 5.1364
width = 45.5714
text = "Drag and Drop to Editor"
endwith

this.LISTBOX1 = new LISTBOX(this)
with (this.LISTBOX1)
onDrop = class::LISTBOX1_ONDROP
onLeftMouseDown = class::LISTBOX1_ONLEFTMOUSEDOWN
height = 5.1364
left = 1.0
top = 0.5
width = 21.1429
id = 103
colorHighLight = "HighLightText/HighLight"
dataSource = 'ARRAY {"Apples","Oranges","Kiwi","Papaya","Pineapple","Cherries","Peaches","Nectarines","Apricots"}'
dragEffect = 1 // Copy
allowDrop = true
endwith

this.EDITOR1 = new EDITOR(this)
with (this.EDITOR1)
onDragBegin = class::EDITOR1_ONDRAGBEGIN
onDragEnter = class::EDITOR1_ONDRAGENTER
onDragOver = class::EDITOR1_ONDRAGOVER
onDragLeave = class::EDITOR1_ONDRAGLEAVE
onDrop = class::EDITOR1_ONDROP
height = 8.2727
left = 1.0
top = 6.0
width = 43.0
value = ""
endwith

this.ENTRYFIELD1 = new ENTRYFIELD(this)
with (this.ENTRYFIELD1)
onLeftMouseDown = class::ENTRYFIELD1_ONLEFTMOUSEDOWN
onRightMouseDown = class::ENTRYFIELD1_ONRIGHTMOUSEDOWN
height = 1.0
left = 24.0
top = 0.5
width = 20.0
value = "dBASE Rules!"
dragEffect = 1 // Copy
endwith

this.PUSHBUTTON1 = new PUSHBUTTON(this)
with (this.PUSHBUTTON1)
onClick = class::PUSHBUTTON1_ONCLICK
height = 1.4545
left = 24.0
top = 2.5
width = 20.0
text = "Toggle AllowDrop"
endwith

function EDITOR1_onDragBegin()
? " - EDITOR1_onDragBegin()"
return

function EDITOR1_onDragEnter(nLeft, nTop, cType, cName)
? " - EDITOR1_onDragEnter() cType=",cType,"cName=",cName
//if cType = "T" or cType = "F"
//if cType = "T"
this.drageffect = 1
//else
// this.drageffect = 0
//endif
return this.drageffect

function EDITOR1_onDragLeave()
? " - EDITOR1_onDragLeave()"
return

function EDITOR1_onDragOver(nLeft, nTop, cType, cName)
? " - EDITOR1_OnDragOver()"
return

function EDITOR1_onDrop(nLeft, nTop, cType, cName)
? "In EDITOR1_ONDROP()"
? " cType=",cType, "cName=",cName
if cType = "T"
offset = this.getOffset()
if offset >= 0
cStr = substr(this.value, 1, offset)
cStr += cName
cStr += substr(this.value, offset+1)

this.value = cStr
endif

return false // prevent default drop from executing
endif

// return True to allow default processing of cType = 'F' (file dragged)
return TRUE

function ENTRYFIELD1_onLeftMouseDown(flags, col, row)
? "In ENTRYFIELD1_ONLEFTMOUSEDOWN()"
this.drag( "T", this.value, "")
return

function ENTRYFIELD1_onRightMouseDown(flags, col, row)
? "In ENTRYFIELD1_ONRIGHTMOUSEDOWN()"
this.drag( "T", this.value, "")

return

function LISTBOX1_onDrop(nLeft, nTop, cType, cName)
if cType == "T"
this.dataSource = 'ARRAY {"Apples","Oranges","Kiwi","Papaya","Pineapple","Cherries","Peaches","Nectarines","Apricots"'+',"'+cName+'"}'
return true
endif

return false

function LISTBOX1_onLeftMouseDown(flags, col, row)
// Start the drag process:
? "In LISTBOX1_ONLEFTMOUSEDOWN()"
this.drag( "T", this.value, "" )
return

function PUSHBUTTON1_onClick()
this.parent.EDITOR1.allowDrop = not this.parent.EDITOR1.allowDrop
return

endclass

[/toggle] [toggle title=”dBASE™ PLUS 11 – Version 11.2.1 FIXES”] Issue #2429
Fixed – Crash connecting to ADO Firebird database

[/toggle] [toggle title=”dBASE™ PLUS 11 – Version 11.2 FIXES”] IDE

Issue #2224
New Feature – Added “Web” tab to Navigator

Issue #2367
Fixed – Repaint of non-client area buttons in Report Designer window during resize

Issue #2391
Fixed – dmOutput is appearing on File menu when running dBASE application

Issue #2344
Fixed – Autocomplete in command window is executing commands early. Will no longer execute current command line when pressing Enter to select autocomplete option

Issue #2409
Fixed – AutoComplete – wrong options are displayed in Source Editor after typing class::

Issue #1999
Fixed – dComplete – Avoid adding parentheses when assigning function/method to event property

Issue #2410
Fixed – AutoComplete – “CLASS” keyword not available when assigning event handler to event property
Issue #2408
New Feature – Added ability to popup list of autocomplete options when user types SET( or SET(“

Issue #1967
Fixed – Changed default for ADODatabase.SchemaName to be an empty string instead of “dbo” for a Microsoft SQL Server ADO connection. This enables displaying tables from all schemas within a database in the Navigator and in other table lists throughout the dBase user interface.
Table names will now be prefixed with their schema as in:
[schema].[tablename] Issue #2103
Fixed – Inspector, Component and Field palettes left open when in ‘autohide’ mode after closing report designer or other designers

Issue #1706
New Feature – Upgraded Navigator Look-In to allow source alias to be entered or selected to choose a folder. Source aliases will be included in drop-down list for tabs other than “Tables” tab

Issue #2304
Fixed – Regression in Command WIndow – editing and re-executing a previous command does not display command at bottom of command list. Additionally, editing previously entered command and than executing it will preserve previous version of command in its original location, and copy the revised command to the bottom of the list of commands and execute it

Issue #1290
Fixed – “Execute Selection” in Command window context menu only executes the last line selected. Will now execute all selected lines in sequence

Issue #2304
Fixed – Added code to handle case where command lines pasted in with multiple end of line characters work correctly

Issue #2374
Fixed – Project Explorer “empty folders” on the Defaults tab. Folders now show when opening Project

Issue #2373
Fixed – Project Explorer – INNO – ‘Add a File Entry’ …. changed *. to *.*

Issue #2375
Fixed – Project Explorer – INNO – Defaults Tab – ‘Installer Name’ should be ‘App Name’. This setting is used to set the {App} folder during install. The Installer name is derived from this name and is called _Installer

Issue #1320
Fixed – Starting with dBASE Plus 8 – command window takes focus every time. Changed internal setting for MDI TabBar to return to the last active window

FORMS, REPORTS and VISUAL COMPONENTS

Issue #2285
Fixed – GPF that occurred when pressing Shift+F10 or Popup Menu key (on keyboard) on form control

Issue #2372
Fixed – Ability to tab from control to control when multiple comboboxes are on form

Issue #2402
Fixed – Ability to tab from control to control on form with smallTitle = true and mdi = true

Issue #2404
Fixed – b2538 – tabbing (using tab or cuaenter off with ‘enter’ ) – with showTaskBarButton = false and mdi = false … does not work

Issue #2405
Fixed – b2538 – Tab is suppressed when tabbing from a ComboBox with style set to 2 (DropDownList)

Issue #2394
Fixed – dBASE crash when setting up lookupRowset. Will now trigger new error: 445 – Recursive lookup in LookupRowset

Issue #2415
Fixed – Tab does not work in Grid on forms with mdi = false and either smalltitle=true or showTaskBarButton=true
Issue #891
New Feature – Added new property: column to each GridColumn control and heading control in a Grid. Column contains an object reference to control’s GridColumn object

Issue #2418
Fixed – Restored behavior of pushbutton’s on Enter triggering pushbutton’s OnClick() when CUAENTER is OFF

Issue #2252
Fixed – Simple form with editor object is left painted after its closed and the current application theme is one of the Office3 themes

Issue #2420
Fixed – dBASE Crash when closing 2 different forms containing numerous transparent controls. Crash was due to a regression in the fix for issue #1916 which resulted in an internal pointer for an array getting double released when an ADODataShape object is released

Issue #2422
Fixed – with cuaenter off and showTaskBar false … hitting enter key inside an editor as you type … moves to next object rather than next line in the editor

Issue #2423
Fixed – Tab key with Editor.cuaTab = False still moves focus to next control after inserting tab into editor

ADO

Issue #2352
Fixed – ADOQuery select statement with a space before the Select and using named parameter produces errors. Added code to left trim SQL statement before its parsed

dmAssist (Datamodule Designer)

Issue #2401
Fixed – dmAssist issue – unable to create component. Fixed error that occurred when closing dmAssist after tabbing through data grid far enough to scroll grid horizontally and than clicking on close button for dmAssist window

Issue #2414
Fixed – dmAssist – Tab key in data grid is ignored

Issue #2289
New Feature – Added: Width and Height properties to data classes to preserve width and height of query, adoquery, and other objects in datamodule designer in dmAssist. This allows the layout of the data objects to be more fully saved so they can be fully restored when later opening a datamodule into dmAssist

OTHER (Commands etc.)

Issue #2416
Fixed – Fix MKDIR and RMDIR so they can use path in a variable (without using macro operator). Fixed parser so MKDIR and RMDIR will work correctly with a variable that is enclosed in parenthesis:

For example:
MKDIR (newDirVar)
RMDIR (oldDirVar)

Issue #1943 Fixed – Special circumstance where testing 0.00000 is less than or equal to a negative number is returning true. The zero value was actually a very small value, 3.5527136788005009e-015, which is smaller than the default precision of 10 significant digits. [/toggle] [toggle title=”dBASE™ PLUS 11 – Version 11.1 FIXES”] IDE

Issue #2157
dmAssist – Datamodule designer – Additional fixes to ensure images loaded for treeitems, load correctly

Issue #2021
Fixed – temp error while creating event handlers in a report while designing

DEBUGGER

Issue #2360
Fixed – watch dialog no longer working in dBASE 11
FORMS/REPORTS

Issue #2238
Fixed – Non-mdi form with custom menu does not show assigned bitmaps for menu options

Issue #2350
Fixed – Menu image/icon is not showing for regular mdi form

Issue #2351
Fixed – Using the tab key does not return to the pushbutton as you tab through the Z order

Issue #2362
Fixed – bitmap issues on pushbuttons – if systemTheme is false – dbase crashes

Issue #2294
Fixed – Title bar in form not updating when it’s changed while running

Issue #2349
Fixed – with SET CUAENTER OFF and form.MDI = false, ENTER key does not move from field to field in a form

[/toggle] [toggle title=”dBASE™ PLUS 11 – Version 11 FIXES”] NEW PROPERTIES, EVENTS or METHODS

IDE…

Issue #2095
Enable Redo in the Source Editor

FORMS, REPORTS and COMPONENTS…

Issue #58
Added OnDisplayChange() event to class FrameWindow, Form, and SubForm.
OnDisplayChange() will fire when a change is made to Windows Display Settings – such as changing resolution or color depth or when the screen is rotated

Issue #2032
Added new property, themeBackground to PushButton class.
When True (the default) pushButton’s background uses the current theme’s background.
When themeBackground is False, the background color from the colorNormal property is used.

Issue #None
new session property .. _app.session.isAlias(). A test to see if an alias exists.

FIXES

IDE…

Issue #1986
Added: .sql, .txt, ,prj, and All (.) to list for save file dialog.

Issue #2007
Fixed ability to display and hide Inspector for class Designer so it works with the current version of the Inspector

Issue #1933
Fixed ability for dBASE to detect a tap gesture as well as other default gestures on Windows 10

Issue #773
Surfaced the following gesture events in class Form, Subform, and all form components that have their own hWnd:
OnGestureZoom()
OnGesturePan()
OnGestureRotate()
OnGestureTwoFingerTap()
OnGesturePressAndTap()

Issue #2040
Fixed popping up inappropriate autocomplete options after typing a close parenthesis at end of line of code that started with a ?
Additional fix when typing on right side of assignment operator
Issue #1931
Fixed typo: “roperty” to “Property” in context menu for Inspector for Field within Table Designer when designing a level 7 dbf file.

Issue #1940
Fixed – Preprocessor setting in Project Explorer doesn’t get compiled.

Issue #1939
Fixed – report streaming code is removing an added object to a report based on a crp – Fixed Report Designer reloading report’s superclass instead of its class after editing event handler in source editor

Issue #1877
Fixed MAV (on Win 10) when reloading Report Designer after editing event handler for Report Component

Issue #1942
Fixed problem causing linkage for new event handler to be lost when closing source editor and switching back to report designer_mediator

Issue #None
Corrected Translation of text string in Spanish version of Source Editor Settings dialog

Issue #1945
Fixed – Add IDE element to Project Explorer to allow user to add preprocessor directives.

Issue #1901
Fixed – Pasting component on scrolled form no longer sets top to a negative value.

Issue #1954
Fixed – components in form in designer change position when moving components below the bottom of the form upwards

Issue #1960
Fixed streaming of report’s superclass into CLASS statement when report is based on a custom report class and user runs report and then switches to design mode

Issue #2008
Fixed – Implemented option to not search subfolders within dBASE Find In Files… dialog

Issue #2154
Fixed – In Navigator drop down list of paths/databases .. hovering over a path/database shows as blank

Issue #2078
Fixed – Command window not deleting history

Issue #2100
Fixed – modi comm in command window adds a space in the file it opens in SE

FORMS, REPORTS and VISUAL COMPONENTS…

Issue #398
Upgraded pushbutton class so the background color from the colorNormal property works to set background color of button when systemtheme is True.

Issue #2006
Fixed “Invalid Bookmark” error that occurred when changing a grid’s datalink from a query.rowset to an adoquery.adorowset
Issue #None
class subform, added properties:
scaleFontName
scaleFontSize
scaleFontBold

Issue #1923
Fixed – listview in .exe with built in runtime (RTEXE) does not show groups as long as the app.exe.manifest file is included with the app.exe and is making sure to include version 6 common controls. the ListView object on a form will show the groups.

Issue #1935
Fixed Entryfield Function and Picture properties so that when they are modified they invalidate control’s window instead of recreating the window (which was incorrectly changing position of control window when form has been scrolled vertically)

Issue #1930
Fixed setting superclass for report in report designer when reloading designer after editing event handler in source editor

Issue #1921
Fixed disappearing numerals when using a picture setting of ’99’ on an entryfield

Issue #1734
Fixed inserting of template characters when formatting entryfield value when function code “I” – Center is used

Issue #1459
Fixed checking/unchecking menu item when menu is attached to _app.framewin

Issue #2237
Fixed – Edit menu options do not work correctly for a form with a custom menu (mdi or non-mdi)

Issue #2264
Fixed – Fixed crash on themed notebook in dBASE application and follow on crash as well

Issue #None
On SDI form (non-mdi), made menu able to dock to bottom,right, or left side of form – not just top

ADO…

Issue #1916
Fixed – ADO params using the same parameter reference twice does not work.

Issue #1932
Fixed ? command so it correctly retrieves and formats data from a MySQL LongText field

Issue #1957
using numbered parameters causes invalid subscript reference.
Issue #1993
Fixed – get MAV setting adostoredProc variable to null, or releasing adostoredProc variable. Also after database is closed and app is finished

Issue #2033
Fixed – adoStoredProc causing crash when trying to reference the adoStoredProc Rowset

DEBUGGER…

Issue #1990
Fixed – After deleting a watch variable it remains in the watch dialog

Issue #1922
Debugger – Fixed ability to edit and use breakpoint expressions

Issue #1922
Fixed Save and Load of Breakpoint settings to and from plusdebug.ini to correctly handle file paths with embedded commas, conditions with embedded commas, and global breakpoints.
Fixed code that updates BreakPoint Dialog’s ListView control after adding, deleting or modifying breakpoints via dialog.
Fixed code that tests (evaluates) breakpoint conditions as they were not getting evaluated

DBASE DBF TABLES…

Issue #1956
Fixed streaming of datetime query parameter value to stream with curly braces instead of double quotes

MISCELLANEOUS…

Issue #1983
Fixed – Runtime buffer overflow error starting in 10.0.0.0. doubled size of icode buffer used when compiling macro expression.

Issue #1875
Added code to ensure all timers are stopped and released early in dBASE shutdown sequence fixing windows error on program exit.

Issue #1981
New fix for _app.session.deleteAlias() that fixes both the lockup and prevents deletion of persistent BDE aliases.
NOTE: this does not affect using API calls that create permanent BDE aliases. That still requires an elevated access level either by running dBASE with Admin rights or setting registry key for Borland\Database Engine to allow Users to have full control

Issue #2025
Fixed – format toolbar large buttons are misaligned up in .exe
create and .exe and in it’s ini set …
[Tools]LargeButtons=1
The format tool buttons are missing some options (like Bold, Underline, Italics and paragraph options) other buttons that come after take on the roll of those buttons…

Issue #2027
Fixed – get MAV closing a form via f.close() function if it has a stored procedure

[/toggle] [toggle title=”dBASE™ PLUS 11 – ALL FIXES”] Issue #0058
Added OnDisplayChange() event to class FrameWindow, Form, and SubForm.
OnDisplayChange() will fire when a change is made to Windows Display Settings – such as changing resolution or color depth or when the screen is rotated

Issue #0398
Upgraded pushbutton class so the background color from the colorNormal property works to set background color of button when systemtheme is True.

Issue #0773
Surfaced the following gesture events in class Form, Subform, and all form components that have their own hWnd:
OnGestureZoom()
OnGesturePan()
OnGestureRotate()
OnGestureTwoFingerTap()
OnGesturePressAndTap()

Issue #0891
New Feature – Added new property: column to each GridColumn control and heading control in a Grid. Column contains an object reference to control’s GridColumn object

Issue #1290
Fixed – “Execute Selection” in Command window context menu only executes the last line selected. Will now execute all selected lines in sequence

Issue #1320
Fixed – Starting with dBASE Plus 8 – command window takes focus every time. Changed internal setting for MDI TabBar to return to the last active window

Issue #1459
Fixed checking/unchecking menu item when menu is attached to _app.framewin

Issue #1706
New Feature – Upgraded Navigator Look-In to allow source alias to be entered or selected to choose a folder. Source aliases will be included in drop-down list for tabs other than “Tables” tab

Issue #1734
Fixed inserting of template characters when formatting entryfield value when function code “I” – Center is used

Issue #1798
Fixed – Impossible to resize Col grid when using drag effect. this goes back to at least 2.8

Issue #1875
Added code to ensure all timers are stopped and released early in dBASE shutdown sequence fixing windows error on program exit.

Issue #1877
Fixed MAV (on Win 10) when reloading Report Designer after editing event handler for Report Component

Issue #1901
Fixed – Pasting component on scrolled form no longer sets top to a negative value.

Issue #1916
Fixed – ADO params using the same parameter reference twice does not work.

Issue #1921
Fixed disappearing numerals when using a picture setting of ’99’ on an entryfield

Issue #1922
Debugger – Fixed ability to edit and use breakpoint expressions

Issue #1922
Fixed Save and Load of Breakpoint settings to and from plusdebug.ini to correctly handle file paths with embedded commas, conditions with embedded commas, and global breakpoints.
Fixed code that updates BreakPoint Dialog’s ListView control after adding, deleting or modifying breakpoints via dialog.
Fixed code that tests (evaluates) breakpoint conditions as they were not getting evaluated

Issue #1923
Fixed – listview in .exe with built in runtime (RTEXE) does not show groups as long as the app.exe.manifest file is included with the app.exe and is making sure to include version 6 common controls. the ListView object on a form will show the groups.

Issue #1930
Fixed setting superclass for report in report designer when reloading designer after editing event handler in source editor

Issue #1931
Fixed typo: “roperty” to “Property” in context menu for Inspector for Field within Table Designer when designing a level 7 dbf file.

Issue #1932
Fixed ? command so it correctly retrieves and formats data from a MySQL LongText field

Issue #1933
Fixed ability for dBASE to detect a tap gesture as well as other default gestures on Windows 10

Issue #1935
Fixed Entryfield Function and Picture properties so that when they are modified they invalidate control’s window instead of recreating the window (which was incorrectly changing position of control window when form has been scrolled vertically)

Issue #1939
Fixed – report streaming code is removing an added object to a report based on a crp – Fixed Report Designer reloading report’s superclass instead of its class after editing event handler in source editor

Issue #1940
Fixed – Preprocessor setting in Project Explorer doesn’t get compiled.

Issue #1942
Fixed problem causing linkage for new event handler to be lost when closing source editor and switching back to report designer_mediator

Issue #1943Fixed – Special circumstance where testing 0.00000 is less than or equal to a negative number is returning true. The zero value was actually a very small value, 3.5527136788005009e-015, which is smaller than the default precision of 10 significant digits.

Issue #1945
Fixed – Add IDE element to Project Explorer to allow user to add preprocessor directives.

Issue #1954
Fixed – components in form in designer change position when moving components below the bottom of the form upwards

Issue #1956
Fixed streaming of datetime query parameter value to stream with curly braces instead of double quotes

Issue #1957
using numbered parameters causes invalid subscript reference.
Issue #1960
Fixed streaming of report’s superclass into CLASS statement when report is based on a custom report class and user runs report and then switches to design mode

Issue #1967
Fixed – Changed default for ADODatabase.SchemaName to be an empty string instead of “dbo” for a Microsoft SQL Server ADO connection. This enables displaying tables from all schemas within a database in the Navigator and in other table lists throughout the dBase user interface.
Table names will now be prefixed with their schema as in:
[schema].[tablename] Issue #1981
New fix for _app.session.deleteAlias() that fixes both the lockup and prevents deletion of persistent BDE aliases.
NOTE: this does not affect using API calls that create permanent BDE aliases. That still requires an elevated access level either by running dBASE with Admin rights or setting registry key for Borland\Database Engine to allow Users to have full control

Issue #1983
Fixed – Runtime buffer overflow error starting in 10.0.0.0. doubled size of icode buffer used when compiling macro expression.

Issue #1986
Added: .sql, .txt, ,prj, and All (.) to list for save file dialog.

Issue #1988
Fixed – ADOQuery – invalid argument for value with parameter having a negative value

Issue #1990
Fixed – After deleting a watch variable it remains in the watch dialog

Issue #1993
Fixed – get MAV setting adostoredProc variable to null, or releasing adostoredProc variable. Also after database is closed and app is finished

Issue #1999
Fixed – dComplete – Avoid adding parentheses when assigning function/method to event property

Issue #2006
Fixed “Invalid Bookmark” error that occurred when changing a grid’s datalink from a query.rowset to an adoquery.adorowset
Issue #2007
Fixed ability to display and hide Inspector for class Designer so it works with the current version of the Inspector

Issue #2008
Fixed – Implemented option to not search subfolders within dBASE Find In Files… dialog

Issue #2021
Fixed – temp error while creating event handlers in a report while designing

Issue #2025
Fixed – format toolbar large buttons are misaligned up in .exe
create and .exe and in it’s ini set …
[Tools]LargeButtons=1
The format tool buttons are missing some options (like Bold, Underline, Italics and paragraph options) other buttons that come after take on the roll of those buttons…

Issue #2027
Fixed – get MAV closing a form via f.close() function if it has a stored procedure

Issue #2032
Added new property, themeBackground to PushButton class.
When True (the default) pushButton’s background uses the current theme’s background.
When themeBackground is False, the background color from the colorNormal property is used.

Issue #2033
Fixed – adoStoredProc causing crash when trying to reference the adoStoredProc Rowset

Issue #2040
Fixed popping up inappropriate autocomplete options after typing a close parenthesis at end of line of code that started with a ?
Additional fix when typing on right side of assignment operator
Issue #2078
Fixed – Command window not deleting history

Issue #2095
Enable Redo in the Source Editor

Issue #2100
Fixed – modi comm in command window adds a space in the file it opens in SE

Issue #2103
Fixed – Inspector, Component and Field palettes left open when in ‘autohide’ mode after closing report designer or other designers

Issue #2154
Fixed – In Navigator drop down list of paths/databases .. hovering over a path/database shows as blank

Issue #2157
dmAssist – Datamodule designer – Additional fixes to ensure images loaded for treeitems, load correctly

Issue #2224
New Feature – Added “Web” tab to Navigator

Issue #2237
Fixed – Edit menu options do not work correctly for a form with a custom menu (mdi or non-mdi)

Issue #2238
Fixed – Non-mdi form with custom menu does not show assigned bitmaps for menu options

Issue #2252
Fixed – Simple form with editor object is left painted after its closed and the current application theme is one of the Office3 themes

Issue #2264
Fixed – Fixed crash on themed notebook in dBASE application and follow on crash as well

Issue #2285
Fixed – GPF that occurred when pressing Shift+F10 or Popup Menu key (on keyboard) on form control

Issue #2289
New Feature – Added: Width and Height properties to data classes to preserve width and height of query, adoquery, and other objects in datamodule designer in dmAssist. This allows the layout of the data objects to be more fully saved so they can be fully restored when later opening a datamodule into dmAssist

Issue #2294
Fixed – Title bar in form not updating when it’s changed while running

Issue #2304
Fixed – Added code to handle case where command lines pasted in with multiple end of line characters work correctly

Issue #2304
Fixed – Regression in Command WIndow – editing and re-executing a previous command does not display command at bottom of command list. Additionally, editing previously entered command and than executing it will preserve previous version of command in its original location, and copy the revised command to the bottom of the list of commands and execute it

Issue #2344
Fixed – Autocomplete in command window is executing commands early. Will no longer execute current command line when pressing Enter to select autocomplete option

Issue #2349
Fixed – with SET CUAENTER OFF and form.MDI = false, ENTER key does not move from field to field in a form

Issue #2350
Fixed – Menu image/icon is not showing for regular mdi form

Issue #2351
Fixed – Using the tab key does not return to the pushbutton as you tab through the Z order

Issue #2352
Fixed – ADOQuery select statement with a space before the Select and using named parameter produces errors. Added code to left trim SQL statement before its parsed

Issue #2360
Fixed – watch dialog no longer working in dBASE 11
Issue #2362
Fixed – bitmap issues on pushbuttons – if systemTheme is false – dbase crashes

Issue #2367
Fixed – Repaint of non-client area buttons in Report Designer window during resize

Issue #2372
Fixed – Ability to tab from control to control when multiple comboboxes are on form

Issue #2373
Fixed – Project Explorer – INNO – ‘Add a File Entry’ …. changed *. to *.*

Issue #2374
Fixed – Project Explorer “empty folders” on the Defaults tab. Folders now show when opening Project

Issue #2375
Fixed – Project Explorer – INNO – Defaults Tab – ‘Installer Name’ should be ‘App Name’. This setting is used to set the {App} folder during install. The Installer name is derived from this name and is called _Installer

Issue #2391
Fixed – dmOutput is appearing on File menu when running dBASE application

Issue #2394
Fixed – dBASE crash when setting up lookupRowset. Will now trigger new error: 445 – Recursive lookup in LookupRowset

Issue #2401
Fixed – dmAssist issue – unable to create component. Fixed error that occurred when closing dmAssist after tabbing through data grid far enough to scroll grid horizontally and than clicking on close button for dmAssist window

Issue #2402
Fixed – Ability to tab from control to control on form with smallTitle = true and mdi = true

Issue #2404
Fixed – b2538 – tabbing (using tab or cuaenter off with ‘enter’ ) – with showTaskBarButton = false and mdi = false … does not work

Issue #2405
Fixed – b2538 – Tab is suppressed when tabbing from a ComboBox with style set to 2 (DropDownList)

Issue #2408
New Feature – Added ability to popup list of autocomplete options when user types SET( or SET(“

Issue #2409
Fixed – AutoComplete – wrong options are displayed in Source Editor after typing class::

Issue #2410
Fixed – AutoComplete – “CLASS” keyword not available when assigning event handler to event property
Issue #2414
Fixed – dmAssist – Tab key in data grid is ignored

Issue #2415
Fixed – Tab does not work in Grid on forms with mdi = false and either smalltitle=true or showTaskBarButton=true
Issue #2416
Fixed – Fix MKDIR and RMDIR so they can use path in a variable (without using macro operator). Fixed parser so MKDIR and RMDIR will work correctly with a variable that is enclosed in parenthesis:

For example:
MKDIR (newDirVar)
RMDIR (oldDirVar)

Issue #2418
Fixed – Restored behavior of pushbutton’s on Enter triggering pushbutton’s OnClick() when CUAENTER is OFF

Issue #2420
Fixed – dBASE Crash when closing 2 different forms containing numerous transparent controls. Crash was due to a regression in the fix for issue #1916 which resulted in an internal pointer for an array getting double released when an ADODataShape object is released

Issue #2422
Fixed – with cuaenter off and showTaskBar false … hitting enter key inside an editor as you type … moves to next object rather than next line in the editor

Issue #2423
Fixed – Tab key with Editor.cuaTab = False still moves focus to next control after inserting tab into editor

Issue #2429
Fixed – Crash connecting to ADO Firebird database

Issue #2432
Fixed – With office3 theme … automatically setting form.visible to false does not work

Issue #2434
Fixed – limited characters in ‘other’ tab in Navigator

Issue #2437
Fixed – Add a plain text Editor to dBASE Plus. added a property called textType to the existing Editor class to select the mode or language to use via a dropdown list:

0 – HTML
1 – Plain Text

Issue #2438
Fixed – Office3 themes do not correctly paint titlebar when system menu is turned off for form

Issue #2455
Fixed – Cannot properly select a row in a grid after resizing row then query.requery()

Issue #2460 and 2461
Fixed – Cannot drop items from UI controls onto an editor using drag and drop (no allowDrop property …)
Editor – Add method to get current cursor position as an offset into the editor’s value

Issue #None
Corrected Translation of text string in Spanish version of Source Editor Settings dialog

Issue #None
On SDI form (non-mdi), made menu able to dock to bottom,right, or left side of form – not just top

Issue #None
class subform, added properties:
scaleFontName
scaleFontSize
scaleFontBold

Issue #None
new session property .. _app.session.isAlias(). A test to see if an alias exists.

[/toggle] [/accordion]

Some Initial notes on dBASE™ PLUS 11:

[accordion] [toggle title=”Windows Smartscreen display during dBASE™ PLUS 11 install”] Applications that are signed with a standard code signing certificates need to have a positive reputation in order to pass the Smart Screen filter. Microsoft establishes the reputation of a new executable based upon the number of installations world wide of the same application. So, an initial release of the installer .exe may produce this message. If you get this message.. Click where it says ‘More Info’ … this is a link to open the option to run the installer. Click ‘Run anyway’ to continue. [/toggle] [toggle title=”Is Windows XP supported in dBASE™ PLUS 11?”] NO, dBASE™ PLUS 11 is not designed to work on XP. Since Microsoft dropped support for the OS back in April 2016 we have followed suit. While there are still many users of XP, we are seeing a dramatic drop in the number of people using it. It is never easy to drop support for a OS, especially one as popular as XP. However the resources needed to retrofit, recompile, retrofit, etc. makes it unfeasible to continue support more so when you know that if you hit a snag with the older compiler for instance, you can’t go to Microsoft for a fix. So that puts us in an untenable position for a platform that is being rapidly phased out by organizations and individuals every day. That is why we made the difficult decision to drop support for Windows XP and Windows Server 2003 (server version of XP). [/toggle] [toggle title=”Are dBASE™ PLUS 10.X projects forwardly compatible with dBASE™ PLUS 11?”] YES, projects developed in dBASE™ PLUS FULL 10.X should compile with little to no changes. [/toggle] [toggle title=”Upgrading from dBASE™ PLUS 2.6x and lower to dBASE™ PLUS 11″] dBASE™ PLUS 11 does not support full backward compatibility. This is due to many underlying technical issues, including but not limited to: – High Precision Math implementation – A new look & feel manager – Full upgrade to the new MFC (Microsoft Foundation Class) for look and feel and underlying component structures – Updated and latest compiler support All code from previous versions should be re-compiled. If the idapi.cfg was in c:\program files\ ….common files\borland\bde Which would be the case with 2.6x… You should still have the idapi.cfg in c:\program files\ ….common files\borland\bde after installing dBASE™ PLUS 11. The installer will create a new idapi.cfg in c:\programdata\common files\borland\bde but you should still have the one in c:\Program files\common files\borland\bde And should be able to copy that over to c:\programdata\common files\borland\bde and use it. Also, the data objects on a form have been modified to require that the parent be explicitly set in a form or a report or other CLASS. This means that if you attempt to put a form (for example) in design mode that has data objects that are defined like this… this.DBASESAMPLES1 = new DATABASE() with (this.DBASESAMPLES1) left = 19.0 top = 14.0 databaseName = “DBASESAMPLES” active = true endwith this.FISH1 = new QUERY() with (this.FISH1) left = 20.0 top = 14.0 database = form.dbasesamples1 sql = “select * from FISH.DBF” active = true endwith When you attempt to put the form in design mode you will receive info about the modification needed to make it run in dBASE™ PLUS 11…   [/toggle] [toggle title=”Upgrading from dBASE™ PLUS 2.7x and dBASE™ PLUS 2.8x to dBASE™ PLUS 11″] dBASE™ PLUS 11 does not support full backward compatibility. This is due to many underlying technical issues, including but not limited to: – High Precision Math implementation – A new look & feel manager – Full upgrade to the new MFC (Microsoft Foundation Class) for look and feel and underlying component structures – Updated and latest compiler support All code from previous versions should be re-compiled. Also, the data objects on a form have been modified to require that the parent be explicitly set in a form or a report or other CLASS. This means that if you attempt to put a form (for example) in design mode that has data objects that are defined like this… this.DBASESAMPLES1 = new DATABASE() with (this.DBASESAMPLES1) left = 19.0 top = 14.0 databaseName = “DBASESAMPLES” active = true endwith this.FISH1 = new QUERY() with (this.FISH1) left = 20.0 top = 14.0 database = form.dbasesamples1 sql = “select * from FISH.DBF” active = true endwith When you attempt to put the form in design mode you will receive info about the modification needed to make it run in dBASE™ PLUS 11…   [/toggle] [/accordion]

FAQ:

[accordion] [toggle title=”What are the BDE specifications for dBASE™ Data (specs) (Table limits)”]

General limits and specification

General BDE™ Limits

48   Clients in system
32   Sessions per client (3.5 and earlier 16 Bit, 32 Bit)
256   Session per client (4.0 32 Bit)
32   Open databases per session (3.5 and earlier 16 Bit, 32 Bit)
2048   Open databases per session (4.0 32 Bit)
32   Loaded drivers
64   Sessions in system (3.5 and earlier 16 Bit, 32 Bit)
12288   Sessions in system (4.0 32 Bit)
4000   Cursors per session
16   Entries in error stack
8   Table types per driver
16   Field types per driver
8   Index types per driver
48K   Size of configuration (IDAPI.CFG) file
64K   Size of SQL statement (RequestLive=False)
4K   Size of SQL statement (RequestLive=True)
6K   Size of SQL statement (RequestLive=True) (4.01, 32 Bit)
16K   Record buffer size (SQL or ODBC)
31   Table and field name size in characters
64   Stored procedure name size in characters
16   Fields in a key
3   File extension size in characters
260   Table name length in characters
260   Path and file name length in characters
15   Significant Digits

Paradox® Limits

127   Tables open per system (4.0 and earlier 16 Bit32 Bit)
254   Tables open per system (4.01 32 Bit)
64   Record locks on one table (16Bit) per session
255   Record locks on one table (32Bit) per session
255   Records in transactions on a table (32 Bit)
512   Open physical files (4.0 and earlier 16 Bit32 Bit) (DB, PX,MB, X??, Y??, VAL,TV)
1024   Open physical files (4.01 32 Bit) (DB, PX,MB, X??, Y??, VAL,TV)
300   Users in one PDOXUSRS.NET file
255   Number of fields per table
255   Size of character fields
2   Billion records in a table
2   Billion bytes in .DB (Table) file
10800   Bytes per record for indexed tables
32750   Bytes per record for non-indexed tables
127   Number of secondary indexes per table
16   Number of fields in an index
255   Concurrent users per table
256   Megabytes of data per BLOB field
100   Passwords per session
15   Password length
63   Passwords per table
159   Fields with validity checks (32 Bit)
63   Fields with validity checks (16 Bit)
53   Fields with Validity checks added at onetime
63   Number of Sessions with Tables open on1 System

dBASE® Limits

256   Open dBASE® tables per system (16 Bit)
350   Open dBASE® tables per system (BDE™ 3.0 – 4.0,32 Bit)
512   Open dBASE® tables per system (BDE™ 4.01, 32 Bit)
100   Record locks on one dBASE® table (16 and 32 Bit)
100   Records in transactions on a dBASE® table (32 Bit)
1   Billion records in a table
2   Billion bytes in .DBF (Table) file
4000   Size in bytes per record (dBASE® 4)
32767   Size in bytes per record (dBASE® for Windows®)
255   Number of fields per table (dBASE® 4)
1024   Number of fields per table (dBASE® for Windows®)
47   Number of index tags per .MDX file
254   Size of character fields
10   Open master indexes (.MDX) per table
220   Key expression length in characters
[/toggle] [toggle title=”What is a User BDE Alias?”] You can create individual User Database Aliases in dBASE™ PLUS 11 when using the user’s UAC Paths in Vista or Windows 7. In the User’s PLUS.ini (or the applications .ini) file. (For example c:\users\[username]\dBASEPLUS\Bin\PLUS.ini) Here is information from the dBASE™ PLUS 11 help file. Topic: ‘INI’ USERBDEALIASES Is a setting which allows a standard user to create a User Alias that gets saved to the user’s ini file. A standard user will NOT be able to add a regular BDE Alias that gets stored in the BDE config file (idapi.cfg), unless the user is given administrator privileges OR is put in a custom user group that has full access to the BDE’s registry keys and the folder containing IDAPI.cfg. The alternative is to deploy your app with one of the following: – an .ini file containing User BDE Alias settings that the runtime will auto load when starting your application. – a custom routine that your program runs to create on-the-fly any User BDE Aliases needed while your program is running. To use the .ini file option, add lines similar to the following: [UserBDEAliases] 0=SomeAlias 1=SomeODBCAlias [SomeAlias] Driver=DBASE Options=PATH:C:SomeAliasFolder [SomeODBCAlias] Driver= Options= [/toggle] [toggle title=”Does dBASE™ PLUS 11 support Unicode?”] The dBASE™ IDE is able to use Unicode characters (like Chinese, Arabic etc…) However, the .dbf and .db tables currently do not support these sets of characters. We are working on changing this for a future release. Please keep an eye on our website as we will be making many changes in the near future. With ADO connections however, you can connect to external databases that use Unicode and other data types. Since ADO connections are outside of the BDE, it is not restricted by the limitations of the BDE. You can find more detailed information from the help for ‘ADO’ under the ADO book in our online Help system. https://www.dbase.com/online-help/ [/toggle] [toggle title=”INNO Setup error : Sorry can’t install this setup cancelled by user – When using Runtime/BDE “] Check for required dBASE™ Runtime files…” i get “Sorry can’t install this setup cancelled by user Because of security issues people have found that you must use the [Run] section of inni to run the bde/runtime installer. Try the following … First leave the setting… UninsHS= from the [dBASERuntime] section. delete everything else under [dBASERuntime]. Instead you should use the [Run] section of inno (see the inno help under the RUN section). This is where extra .exe’s are run at the end of the app install. After removing the [dBASERuntime] section there will be additional code that is no longer necessary so remove .. under
 the section starting with 'procedure CurPageChanged(CurPageID: Integer);' and ending with 'end;'


Then add the following …
(For an example... this is using PLUS 8.1.3.0 Runtime installers)

under ...

[Files]

; -----------------------------------------------------
; dBASE™ Runtime Installer – put it in {tmp} dir
Source: "PLUS813Runtime-b2345_EN.exe"; DestDir: "{tmp}"; Flags: ignoreversion deleteafterinstall

; -----------------------------------------------------
; Manifest file for runtime:
Source: "PLUSrun.exe.manifest"; DestDir: "{pf}dBASEPLUSRuntime"
; Manifest file for BDE:
Source: "bdeadmin.exe.manifest"; DestDir: "{cf}BorlandBDE"

Under…

[Run]
; This is a Silent install of runtime suppresses the runtime install display, ...
; PLUSNNNNRuntime-bNNNN_en.exe -s -a Runtime= BDE= Silent -sr
; In order to get this to work properly, the double-quotes are doubled up in a few places
; if you look at the statement ... that embeds a single double-quote (as it were) in the
; parameters needed for the runtime and bde installs.

Filename: {tmp}PLUS813Runtime-b2345_EN.exe; Parameters: "-s -a Runtime=""{pf}dBASEPLUSRuntime"" BDE=""{cf}BorlandBDE"" Silent -sr"; StatusMsg: "Installing dBASE™ Runtime and BDE..."; Flags: runascurrentuser; WorkingDir: {tmp};


= = = = = = = = = = = = FULL EXAMPLE OF .ISS THAT INSTALLS A SIMPLE HI.EXE AND THE RUNTIME = = = = = = = = = = = = =

[_TopOfScript]
; This is a Innoscript generated by dBASE™ PLUS Project Explorer

[_Project]
ProjectNr=1.0.0.0
ProjectName=RuntimeBDETest
ProjectExeFileName=C:\Users\Kathy Kolosky\AppData\Local\dBASEPLUS8\Samples\Runtime\BDETest.exe
ProjectMainFileName=C:\Users\Kathy Kolosky\AppData\Local\dBASEPLUS8\Samples\Runtime\Test.iss
ProjectAuthor=Copyright © 2014 Unknown Author
ProjectCreateDate=05/21/2014 07:38:29
ProjectAccessDate=05/21/2014 07:38:56
ProjectdBaseVersion=dBASE™ PLUS 8.130 b2345
ProjectLastdBaseRuntimeVersion=8130
ProjectLastdBaseRuntimeLanguage=EN
ProjectdBasePRJFilename=C:\Users\Kathy Kolosky\AppData\Local\dBASEPLUS8\Samples\Runtime\Test

[ISPP]
#pragma option -v+
#pragma verboselevel 9 ;Macro and functions successfull call acknowledgements
#define Debug
#define AppName "RuntimeBDETest"
#define AppVersion "1.0.0.0"
#define AppId "RuntimeBDETest_ID"
#define AppCopyright "Copyright © 2014 Unknown Author"
#define AppUninstallDir "{app}Uninstall Information"

[LangOptions]
LanguageCodePage=0

[Setup]
SourceDir=C:\Users\Kathy Kolosky\AppData\Local\dBASEPLUS8\Samples
SetupIconFile=
AppId={#AppId}
AppName={#AppName}
AppVersion={#AppVersion}
AppVerName={#AppName} Version {#AppVersion}
AppCopyright={#AppCopyright}
DefaultDirName={pf}{#AppName}
DefaultGroupName={#AppName}
PrivilegesRequired=admin
ShowLanguageDialog=false
VersionInfoVersion={#AppVersion}
VersionInfoDescription={#AppName} Setup
VersionInfoCompany={#AppCopyright}
VersionInfoTextVersion=Version {#AppVersion}
UninstallFilesDir={#AppUninstallDir}

[Languages]
Name: en; MessagesFile: compiler:Default.isl

[Messages]
BeveledLabel=Copyright © 2014 Unknown Author


[Files]
; -----------------------------------------------------
; dBASE™ Runtime Installer – put it in {tmp} dir
Source: "C:\Runtime\Installer\PLUS813\Runtime-b2345_ALL.exe"; DestDir: "{tmp}"; Flags: ignoreversion deleteafterinstall
Source: RuntimeBDETest.exe; DestDir: {app}; Flags: IgnoreVersion

[INI]
Filename: {app}RuntimeBDETest.ini; Section: Toolbars; Flags: UninsDeleteSection
Filename: {app}RuntimeBDETest.ini; Section: Toolbars; Key: Standard; String: 0
Filename: {app}RuntimeBDETest.ini; Section: Toolbars; Key: StandardFloat; String: 0
Filename: {app}RuntimeBDETest.ini; Section: Toolbars; Key: StandardStyle; String: 0
Filename: {app}RuntimeBDETest.ini; Section: Desktop; Flags: UninsDeleteSection
Filename: {app}RuntimeBDETest.ini; Section: Desktop; Key: Maximized; String: 0
Filename: {app}RuntimeBDETest.ini; Section: Desktop; Key: StatusBar; String: 0
Filename: {app}RuntimeBDETest.ini; Section: CommandWindow; Flags: UninsDeleteSection
Filename: {app}RuntimeBDETest.ini; Section: CommandWindow; Key: Open; String: 0

[Run]
; Silent install of runtime suppresses the runtime install display, and the installshield stuff ...
; PLUSRuntime-bNNNN_en.exe -s -a Runtime=d:dBASEPLUSRuntime BDE=d:dBASEPLUSbde Silent -sr
; In order to get this to work properly, the double-quotes are doubled up in a few places
; if you look at the statement ... that embeds a single double-quote (as it were) in the
; parameters needed for the runtime and bde installs.
Filename: {tmp}PLUS813Runtime-b2345_ALL.exe; Parameters: "-s -a Runtime=""{pf}dBASEPLUSRuntime"" BDE=""{cf}BorlandBDE"" Silent -sr"; StatusMsg: "Installing dBASE™ Runtime and BDE..."; Flags: runascurrentuser; WorkingDir: {tmp};


[UninstallDelete]
Type: files; Name: Filename: {app}RuntimeBDETest.ini

[_EndOfScript]
; © dBASE™ Portions by Jonny Kwekkeboom © 2002-2014
; Visual dBase, dB2K, dBASE™ SE and dBASE™ PLUS © dataBased Intelligence.Inc Homepage: http://www.databi.com/
; dQuery for Delphi,C++,dBASE™ PLUS © dataBased Intelligence.Inc see also Homepage: http://www.dQuery.com/

[Code]
var FinishedInstall: Boolean;

procedure InitializeWizard();
begin
FinishedInstall:= false
end;

procedure DeInitializeSetup( );
var ErrorCode: Integer;
begin
if FinishedInstall then
#if VER >= 0x05000100
ShellExec('open',ExpandConstant('{group}'),'',ExpandConstant('{group}'), SW_SHOWNORMAL, ewNoWait, ERRORCODE);
#else
InstShellExec(ExpandConstant('{group}'), '', '', SW_SHOWNORMAL, ERRORCODE);
#endIf
end;

function InitializeSetup(): Boolean;
var S: String;
begin
(** Create a Mutex so we can not double call this Setup.exe file **)
S:='{#AppName}';
Result:= true;
if CheckForMutexes(S+'_SetupMutex')=false
then Createmutex(S+'_SetupMutex')
else Result:=False;
end;
[/toggle]
[/accordion]

ADO Sample Code:

[accordion] [toggle title="How do you use ADOQuery with Parameters"] There are a couple of ways to use Parameters with ADOQuery in 8.0.0.3. Most DBMS connections will be able to use positional parameter markers indicated by a question mark (?). Here are some examples of some connections to SQL Server using positional parmeters... Example 1 - in Form.onOpen event. this.COMPANIES1 = new ADOQUERY(this) with (this.COMPANIES1) left = 14.7778 top = 5.72 databaseName = "SQLTEST" sql = "SELECT * FROM KathyTest.dbo.Companies where NAME = ? " endwith this.GRID1 = new GRID(this) with (this.GRID1) height = 12.32 left = 3.8889 top = 2.2 width = 31.1111 endwith this.rowset = this.companies1.rowset function form_onOpen with (this.COMPANIES1.parameters['NAME']) value = 'dBase, LLC.' endwith this.COMPANIES1.active = true this.grid1.dataLink = this.COMPANIES1.rowset return Example 2 - in constructor code. this.COMPANIES1 = new ADOQUERY(this) with (this.COMPANIES1) left = 14.7778 top = 5.72 databaseName = "SQLTEST" sql = "SELECT * FROM Test.dbo.Companies where NAME = ? " with (params["NAME"]) value = "dBase, LLC." endwith active = true endwith Example 3 - using ADOQuery.beforeConnect event. this.COMPANIES1 = new ADOQUERY(this) with (this.COMPANIES1) beforeConnect = {;this.parameters['NAME'].value = 'dBase, LLC.'} left = 17.1111 top = 10.56 databaseName = "SQLTEST" sql = "SELECT * FROM Test.dbo.Companies where NAME = ? " cursorLocation = 1 // Server active = true endwith You can use the named parameters in most circumstances as well. This Example also sets up a Parent/Child relationship on SQL Server data using ADOQueries and named parameters and the masterSource property. this.ORDERS1 = new ADOQUERY(this) with (this.ORDERS1) left = 89 top = 178 databaseName = "MYSQLTEST_CA" sql = "SELECT * FROM orders" active = true endwith this.ORDERDETAILS1 = new ADOQUERY(this) with (this.ORDERDETAILS1) left = 367 top = 195 databaseName = "MYSQLTEST_CA" sql = "SELECT * FROM orderdetails where orderNumber=:orderNumber" masterSource = form.orders1.rowset active = true endwith [/toggle] [toggle title="Making data in an ADOQuery object editable"] If your DBMS ADO/ODBC driver has the ability to set the cursorLocation to 'Server' you may be able to make your ADOQuery.rowset editable and not just readable. For example the following connects to SQL Server and will make the Companies table editable in an ADOQuery object. this.COMPANIES1 = new ADOQUERY(this) with (this.COMPANIES1) left = 17.1111 top = 10.56 databaseName = "SQLTEST" sql = "SELECT * FROM Test.dbo.Companies" cursorLocation = 1 // Server active = true endwith If you are unable to use cursorLocation = 1 //Server -- then you can use ADOTable objects (which connect directly to table - NOT using sql) to edit your data on a form. You will know if the cursorLocation is settable or not by simply trying it. If it does not hold after setting the object active=true, then it is not available. [/toggle] [toggle title="Creating a Parent/Child relationship on data using masterSource"] This Example sets up a Parent/Child relationship on SQL Server data using ADOQueries and named parameters and the masterSource property. this.ORDERS1 = new ADOQUERY(this) with (this.ORDERS1) left = 89 top = 178 databaseName = "MYSQLTEST_CA" sql = "SELECT * FROM orders" active = true endwith this.ORDERDETAILS1 = new ADOQUERY(this) with (this.ORDERDETAILS1) left = 367 top = 195 databaseName = "MYSQLTEST_CA" sql = "SELECT * FROM orderdetails where orderNumber=:orderNumber" masterSource = form.orders1.rowset active = true endwith [/toggle] [toggle title="How to Execute SQL commands"] How do I execute sql commands in ADODatabase object. You would use the syntax for the particular DBMS and Driver you are connecting to. You can usually find the proper syntax by doing a Google search or looking up the driver info. Here is an example of using the executeSQL command on an ADODatabase object with a MySQL connection using the 5.x MySQL driver. this.ADODATABASE1 = new ADODATABASE(this) with (this.ADODATABASE1) onOpen = class::ADODATABASE1_ONOPEN onExecute = class::ADODATABASE1_ONEXECUTE left = 6.1111 top = 4.08 databaseName = "MYSQLTEST_CA" active = true endwith function ADODATABASE1_onExecute(cmd) ?"Completed "+cmd return true function ADODATABASE1_onOpen ?"about to : CREATE TABLE aLongVarChar (ALongText LongText);" this.executeSQL("CREATE TABLE aLongVarChar (ALongText LongText);") return [/toggle] [/accordion]

Known Issues with workarounds:

[accordion] [toggle title="ADO Apps using Apache Web Server"] ADO use with Apache: Issue #1017 - get MAV instantiating an ado object in a web app. Workaround: This issue will occur on any 64 bit version of windows beginning with Vista. The problem is due to the fact that Windows uses the environment variable 'CommonProgramFiles(x86)' to find the ADO DLL's at runtime but Apache does not allow parenthesis in the names of any environment variables that it passes or creates for web apps that it executes. It converts the parenthesis into underscores, for example: CommonProgramFiles_x86_. The simplest solution for this is to have each web app that requires ADO access to create its own environment variable before it attempts to create any ADO objects. Adding the following code near the beginning of these web apps will create the needed environment variable. (be sure to adjust the specified path to the one matching the machine on which Apache is executing): extern CLOGICAL SetEnvironmentVariable(CSTRING, CSTRING) kernel32 from "SetEnvironmentVariableA" bResult = SetEnvironmentVariable("CommonProgramFiles(x86)", "C:\Program Files (x86)\Common Files") Here is a function: initEnv(), that will only call SetEnvironmentVariable() when necessary - from within a web app. This can be added to the web class (as a method) if desired and called before any ADO objects are created: function initEnv() local cEnvStr, cEnvVar, cEnvVarNoParens if OSVersion() >= 6 // Windows Vista is version 6.0 if IsWow64() // test if running on 64 bit version of Windows if type("SetEnvironmentVariable") # "FP" extern CLOGICAL SetEnvironmentVariable(CSTRING, CSTRING) kernel32 from "SetEnvironmentVariableA" endif cEnvVar = "CommonProgramFiles(x86)" cEnvVarNoParens = "CommonProgramFiles_x86_" // check if correct env.var already exists and has a value cEnvStr = getenv(cEnvVar) if empty(cEnvStr) // EnvVar with parens not found - so must create it // check if modified env.var (without parens) already exists and has a value cEnvStr = getenv(cEnvVarNoParens) if empty(cEnvStr) // cEnvVarNoParens not found - use default value for it cEnvStr = "C:\Program Files (x86)\Common Files" else // otherwise cEnvVarNoParens exists and has a value endif // Create and set value of env.var (with parens) bResult = SetEnvironmentVariable(cEnvVar, cEnvStr) endif endif endif return function OSVersion local cVersion cVersion = OS() return val(ltrim(substr(cversion,rat(" ",cVersion)))) function IsWow64 local lIsWow64 lIsWow64 = false if type("GetCurrentProcess") # "FP" extern CHANDLE GetCurrentProcess( CVOID ) kernel32 endif if type("IsWow64Process") # "FP" extern CLOGICAL IsWow64Process(CHANDLE, CPTR CLOGICAL) kernel32 endif if type("IsWow64Process") = "FP" // Make sure extern worked for retrieving this function pointer // Because older versions of windows do not contain this function // From MSDN, minimum supported operating systems are: // Client OS's: Win XP SP2, Vista // Server OS's: Windows Server 2003 with SP1, Windows Server 2008 IsWow64Process(GetCurrentProcess(), lIsWow64) endif return lIsWow64 In order for the above initEnv() to function correctly the following setting should be in the httpd.conf file (in any place - I put mine in the beginning) for Apache: PassEnv CommonProgramFiles(x86) This instructs Apache to pass the existing environment variable (CommonProgramFiles(x86) to any web apps as part of their default environment. Apache will pass this env.variable, but renamed to: CommonProgramfiles_x86_ but it will have the needed path assigned to it which initEnv() will use. Also when connecting to an ADO database it is best to use the .connectionString property when connecting to an external database in a web app. for example ... this.adoQuery1 = new ADOQUERY(this) with (this.adoQuery1) connectionString = "" sql = "SELECT * FROM " active = true requestLive = false endwith [/toggle] [toggle title="Language Support"] Language Support: Japanese Language Runtime Files are not available. Workaround: None, we will be releasing it soon. [/toggle] [toggle title="Data Module Designer - dmAssist"] Issue #2328 renaming the databaseName after a Data Mdule is open will not update the Databases and Tables view. Workaround: You must close and restart the Data Module designer to see changes   Issue #2255 inspector pops itself back up after selecting a window outside of dBASE then back. Workaround: you can edit plus.ini and remove the section labeled: [ToolBoxInspector]. Remove the 'DockSite' setting and set Float=1 Next time a designer (such as the Form Designer) is run, the Inspector will open in a floating position. When you close the Form Designer the Inspector will close, as well. [/toggle] [toggle title="dmCRUD - Windows app wizard"] Issue #2241 'Reports' Menu options are disabled. Upon first open .. without changing tab (on 'Data' tab) 'Reports' menu option shows as disabled (which is proper) now go to Reports tab ... go to Reports menu option and they are still disabled. Workaround: toggling the menu option.. for example.. click on another tab or menu option. Then go back to the menu on the Reports tab and Reports menu and the output options will be enabled. Form or Report Designer issues Issue #1446 report with rectangle causes issues with adding new fields. Workaround: is to remove the rectangle while designing until you are ready to put it back. Issue #1860 custom text is not showing the borderStyle setting in the a form using the custom text Workaround: Pick either: Comment out: transparent = true in the .cc file OR Add: doubleBuffered = true to the .wfm resolves this issue. ADO Issue #2178 you get an error when trying to run a form with adoStoredProcudure if you are using a connectionString instead of databaseName property Error is: "Invalid subscript reference" connectionString = "" procedureName = "" with (parameters[""]) // Errors here type = "Char" //for example value = "" endwith Workaround: After setting connectionString property add: connected = true This opens the connection to the database server specified in connectionString. Once the connection is open, setting the procedureName will be able to retrieve the parameter definitions from the server. Issue #1988 ADOQuery - invalid argument for value with parameter having a negative value Workaround: use quotes around the negative value. for example in the sample below change parameters["VL"].value = -1 ///where you get the invalid argument for value error to parameters["VL"].value = "-1" Then it will work. OTHER Issue #1966 Manifest is not being used when building EXE with runtime. ... speed tip does not work in app.exe when building with RTEXE (even when using manifest) Workaround: In dBASE compile the form code add the manifest to the BUILD command (example): build issue1966.wfo,issue1966.exe.manifest to issue1966.exe rtexe This links the manifest file into the .exe Then make sure that the manifest file is also deployed with the .exe [/toggle] [/accordion]

Known Issues without workarounds:

[accordion] [toggle title="Data Module Designer - dmAssist"] Issue #2330 Select table dialog crashes if many tables exist in an external database. When connecting through the BDE (ODBC) a 'Select Table' dialog will come up. In some cases adding a table through the 'Select Table' dialog will cause dBASE to stop working. Issue #2329 After adding an ADOQuery object to the design surface, and set it so that the SQL property doesn't exist, and the active property is false, the dmDesigner object ignores it, and when saving and exiting, it removes the ADOQuery object completely Issue #2324 Get 'Rowset is Read Only' - trying to change 'View by Query' in Multi-Table View. This happens specifically when using lookupRowset on a field in a table that is used also in the 'Multi-Table' View. [/toggle] [/accordion]

Previous Versions:

dBASE™ PLUS 10

dBASE™ PLUS 9

dBASE™ PLUS 8

[/raw]