2007-12-05   Open bugs - Paradox 11 - Build 410 - Internal 10.0

This document contains descriptions of some problems/bugs in Paradox 11.

Base version for this document is Service pack 4 of Paradox 7 for Win95/Win NT with Bde 3.50 installed.

The list has been compiled by:
Bertil Isberg
Statistics Sweden
office e-mail: bertil.isbergATscbDOTse
home e-mail: bertil.isbergATbredbandDOTnet

Thanks to all of you who have contributed to this document by reporting bugs on Corel's newsgroups.

My current configuration:
Paradox: Help | About dialog: 11.00.410
BDE Administrator: Object | Version Information - Idapi32.dll: 5.2.0.2.
My Computer - Properties: Win XP Media Center Edition Version 2002 SP 2



Table of contents

PX0026QBE run - changeto queries
PX0028Chart - 2D Line
PX0036Event model - action(dataUnlockRecord) - on form close
PX0037QBE run - Incorrect result
PX0046QBE run - changeto queries
PX0060ObjectPAL - sql.executeSql() and errorNativeCode()
PX0070QBE Editor
PX0097Debugger - GPV
PX0107Report run - Error - The ObjectPal version used in this form is incompatible with this version of Paradox.
PX0114QBE run - Outer join and default value
PX0148Report print - repeated rows and missing rows
PX0151ObjectPAL - query.isQueryValid()
PX0157ObjectPAL - query.setAnswerFieldOrder()
PX0158Local SQL - Error- Operation not applicable - Auxiliary passwords
PX0160Form run - editing memo field
PX0165Form run - based on SQL file
PX0170Form run - Filter on unindexed table
PX0184Report print - Dotted line
PX0185ObjectPAL syntax error
PX0207Local SQL - like and indexes
PX0217Field Palette - private directory
PX0220Chart Expert
PX0227Report - Field Palette
PX0242Form run - downArrow in a MRO
PX0272Field Expert - expanding edit field
PX0274Form run - refresh of 1-M linked tables
PX0275Chart - ShowAxes
PX0283ObjectPAL - database.transactionActive()
PX0297Report run - Error - Could not initialize report. Expecting column separator in table header.
PX0298ObjectPAL - uiObject.setGenFilter() on Logical field
PX0299QBE run - Incorrect result
PX0305Query - Treat blank fields as zeroes
PX0306Visual Query Builder - Error - Type mismatch in expression - date
PX0316TableStructure dialog - Print
PX0318Paradox desktop - Customizing menus using PXDLITE
PX0324Form run - DataModel - unlinked tables
PX0325Form run - F3 and F4 key
PX0328ObjectPAL - fileBrowserEx() - fbAllTables
PX0329Form run - Error - Insufficient FieldRights
PX0336Report design - MRO - Number down
PX0343ObjectPAL - tcursor.enumFieldStruct() - Logical column
PX0344Paradox desktop - Window menu tooltips
PX0349ObjectPAL - fileBrowserEx() - BrowseOptCreatePrompt
PX0352Tables - Performance issues sorting tables, QBE, and LocalSQL
PX0359TableStructure dialog - dBASE tables
PX0360ObjectPAL - query.removeTable()
PX0361Event model - action(dataUnlockRecord) and Page object
PX0366Event model - keyPhysical() event - disabling F1
PX0371ObjectPAL - dataTransfer.setSourceStartRow()
PX0374Chart design - Font.Typeface
PX0378TableView - Grid Lines
PX0380ObjectPAL - setDesktopPreference()
PX0384Export - Lotus - wk1 format
PX0385ObjectPAL - tcursor.deleteRecord()
PX0386Local SQL - updating tables with a memo field
PX0389Form run - unsynchronized toolbar buttons
PX0391Non standard database drivers - MSSQL driver - Identity columns
PX0395Form / Report run - Timestamp columns
PX0396Event model - init() event and dmAddTable()
PX0399Form run - unsynchronized toolbar buttons
PX0457Import - Excel - Excel3 format
PX0458ObjectPAL - tcursor.locate() after tcursor.setRange()
PX0461ObjectPAL - sleep()
PX0462Form run - Auxiliary passwords in a 1-M form
PX0467Import - Delimited text - first column
PX0469Tables - Table Corruption
PX0470ObjectPAL - table.reIndex() and Write Lock
PX0471Documentation Expert
PX0473TableStructure dialog - Referential Integrity
PX0477Event model - menuAction(menuCanClose) and hidden Desktopform
PX0482Form run - Font.typeface in a formatted memo field
PX0483Tables - Creating secondary indexes
PX0484Export - Fixed text - custom specification
PX0485Form run - refresh of 1-M linked tables
PX0487Query Expert - Directory specification
PX0488TableStructure dialog - accessing a table in a non standard database
PX0490ObjectPAL - toolbar.addButton() - Toolbarbuttontype
PX0491Form run - Notebook object and Tooltip
PX0492Form open - replacing a table in datamodel
PX0495Visual Query Builder - Passwords
PX0496Event model - mouseExit() and tableframe
PX0500Form run - DataModel - 1-1 linked tables
PX0505Form run - IPF instead of Stack Overflow error
PX0506ObjectPAL - Resource leakage - fileSystem type methods - isFile()
PX0510ObjectPAL - popupMenu.addText()
PX0511ObjectPAL - enumFolder()
PX0512Local SQL - updating a table that has a AutoInc column
PX0516Event model - status() event - setStatusValue()
PX0523Event model - arrive() event - dmResync()
PX0524Table Repair - Verify - when .xls files exist
PX0526Report Expert - Error - The table(s) this query is based upon could not be found by the query.
PX0529Form run - unsynchronized toolbar buttons
PX0530Toolbars - Text Below Image
PX0531Form run - SpellChecker in 1-1 linked detail table.
PX0533Import - Excel - numeric data
PX0534Table Repair - entering a tablename
PX0536Local SQL - Bcd columns
PX0537Script - ProjectViewerClose()
PX0538ObjectPAL - enumDesktopWindowNames() and EnumWindowNames()
PX0539ObjectPAL - selectCurrentTool(NotebookTool)
PX0541Form / Report run - summary calculated field - rounding
PX0543ObjectPAL - ReadProfileString()
PX0546ObjectExplorer - showing methods and events from a different form
PX0549TableStructure dialog - Tab key
PX0550Form design - ActiveX and MRO objects
PX0553Form design - copying objects
PX0555ObjectPAL - GPV - query.executeQbe() - long tablenames
PX0556Local SQL - GPV - join between tables when two aliases are specified
PX0559QBE Editor - Highlighting text
PX0560Table Repair - table with formatted memo
PX0565Report - PublishAs - Doc and Wpd
PX0567Report print - scripted TrueType fonts
PX0569Event model - action(dataEndEdit)
PX0571IPF on exit from Paradox
PX0572Preferences - PrinterStyleSheet Browse button
PX0573Report design - Page Setup
PX0575Project Viewer - Statusbar information
PX0576Import - ReadOnly files.
PX0578ObjectPAL - twain.acquire()
PX0579TableStructure dialog - Auxialiary passwords
PX0580Button Expert - Advanced Data Entry - Locate Field value
PX0581ObjectPAL - tcursor.enumLocks()
PX0584Report run - Publish As - Html
PX0587Form open - Error - Disk error occured while reading file
PX0588Event model - action(dataEndEdit) and action(dataUnlockRecord)
PX0589Report print - Print dialog - Settings control
PX0591ObjectPAL syntax
PX0594Tables - Error - The graphic file contains an invalid header - Graphic columns
PX0595Project Viewer - Resource leakage
PX0598Report print - Warning - Report layout settings ... have been changed within the print dialog.
PX0599Form design - DataModel - changing link between tables
PX0600Import - Excel
PX0601Form run - memo field - cursor position
PX0603ObjectPAL - number.smallint()
PX0605Form run - assigning values to numeric fields
PX0607ObjectPAL - restructure() - Graphic columns
PX0608QBE run - Incorrect result
PX0609Form / Report run - unsynchronzied toolbar buttons
PX0611Report run - Publish As - Text
PX0612ObjectPAL - passing number to a DLL
PX0613ObjectPAL - dataTransfer.transferData() - default directory
PX0614Form run - formatted memo field
PX0615ObjectPAL - GPV - assigning value to textobjects in a report
PX0616ObjectPAL - sysInfo() and enumLocks() - Net login name
PX0617Form run - Ellipse objects
PX0618Form run - Ellipse objects
PX0619Event model - menuAction(menuFileExit)
PX0622ObjectPAL - tcursor.isValid()
PX0623ObjectPAL syntax error - Internal error: Between Parses
PX0624ObjectPAL - GPV - filesystem.findFirst()
PX0626ObjectPAL - sql.executeSql() - default name of answer table
PX0627Form / Report design - TrueType substituted fonts
PX0629Paradox Runtime - Notebook objects
PX0630ObjectPAL - getLanguagedriver()
PX0631ObjectPAL - fileBrowserEx() - unregistered extensions
PX0632ObjectPAL - report.publishTo(filename, publishToHtml)
PX0633ObjectPAL - report.print(reportPrintInfo) - SQLString
PX0634TableStructure dialog - Secondary index on Logical column
PX0635Form run - Hotkey and centerlabel
PX0636Form run - Zoom - FitWidth / FitHeight / BestFit
PX0638ObjectPAL - dataTransfer.transferData() - errorTrapOnwarnings()
PX0640Paradox Runtime - Files missing for importing spreadsheet files
PX0641Form run - Resource leakage - Field'Alignment=Center
PX0642ObjectPAL - tracer methods
PX0643ObjectPAL - index keyword
PX0644GPV on exit from Paradox
PX0645Print dialog - effects on Page Setup
PX0646Event model - menuAction(menuControlKeyMenu)
PX0647Form / Report run - effects of unchecking Standard menu
PX0648ObjectPAL - tcursor.enumFieldStruct()
PX0650Report design - Page Setup dialog
PX0652Event model - mouseDouble()
PX0653ObjectPAL - form.open(WinStyleHidden)
PX0655Toolbars - ActiveX Toolbar
PX0656ObjectPAL - sysInfo()
PX0657ObjectPAL - query.executeQbe() - columnnames in answer table
PX0658ObjectPAL - library.open()
PX0659ObjectPAL - version()
PX0660Report print - GPV - Error - #record 13 too big to fit in a report
PX0661Paradox Runtime - SpellChecker
PX0662Form run - dataRefresh and formatted memo
PX0663Local SQL - Delete statement corrupts the table
PX0667Form print - multipage form
PX0669ObjectPAL - Resource leakage - report.print()
PX0671ObjectPAL - sql.executeSql() - prompted for connection
PX0672ObjectPAL - scope of library variables
PX0673Form / Report design - FontStyle Bold Italic in a tableFrame
PX0675ObjectPAL - form.open(WinStyleHidden)
PX0676ObjectPAL - string.advmatch() - ignoreCaseInStringCompares(True)
PX0678Form run - setting a range on a locked record
PX0679ObjectPAL - floating point calculations
PX0680ObjectPAL - number.pow10()
PX0682ObjectPAL - memo(m1, m2) when m2 is blank
PX0686ObjectPAL - enumPrinters(tcursor)
PX0688Paradox Runtime - Printer names
PX0689Tables - Table Corruption
PX0690Printer names
PX0693ObjectPAL - Resource leakage - execute()
PX0694Form run - Cut, and copy
PX0695Form design - Notebook object - property Scrolling Tabs
PX0696Form run - Notebook object - Ctrl+R
PX0698Report print - tables in use afterwards
PX0703ObjectPAL - ProjectViewerClose() and exit()
PX0704Form / Report design - dependent properties
PX0705QBE run - tables in Non standard driver databases
PX0707Chart - LabelFormat y in percent
PX0708Paradox Runtime - Alt key
PX0709About Paradox - System Info dialog
PX0710New From Project - example databases
PX0711ObjectPAL - GPV - dataTransfer.enumSourcePageList()
PX0712Form run - GPV - assigning blank memofield to textobject
PX0717Report run - Summary field in Page Header
PX0722Toolbars - Reset Status Bar
PX0724Paradox Runtime - Preferences - Script Font
PX0725ObjectExplorer - Pin Explorer
PX0726Table Repair - Rebuild
PX0727ObjectPAL - Resource leakage - memo.readfromFile()
PX0728Form run - unsynchronized toolbar buttons
PX0729ObjectPAL - query.isExecuteQBELocal()
PX0730Non standard database drivers - MSSQL driver - NUMERIC datatype
PX0731ObjectPAL - Error - OLE object is not a collection object - oleAuto.first() and oleAuto.next()
PX0732Form / Report design - Format percent
PX0733ObjectPAL - GPV - popupMenu.show()
PX0734Form run - refresh of 1-1 linked tables
PX0735ObjectPAL - GPV - table.empty()
PX0737ObjectPAL Editor - pdxwin32.exe has generated an error - Developer Preferences - Cursor beyond EOL
PX0738Form design - GPV - saving a form
PX0739Form / Report design - GPV - Calculated fields
PX0741ObjectPAL - oleAuto.executeString()
PX0742ObjectPAL - GPV - oleAuto()
PX0743Import - QPW9 files
PX0744ObjectPAL - menuConstant MenuFormViewData
PX0745ObjectPAL - query type methods
PX0748ObjectPAL - memo.writetoRtfFile()
PX0749ObjectPAL - syntax error corrupts form
PX0750ObjectPAL - dmResync() and dropdown fields
PX0751Report run - printing single page
PX0753Basic syntax. Method keyword
PX0754Tables - Unique secondary index
PX0755ObjectPAL - dmGet() and MROs with nested layout
PX0756ObjectPAL - wantInMemoryTcursor()
PX0757Local SQL - GPV when joining
PX0758ObjectPAL syntax
PX0759Query - Aggregate when no rows are selected
PX0760Form run - Locate and Replace
PX0761Utilities expert
PX0762Report - Canceling the opening of a report
PX0763ObjectPAL - Try statement
PX0766ObjectPAL - locateNext()



Description of the bugs


PX0026 QBE run - changeto queries
Type of error:First verified:Last tested:Verified by me:
Functionality7.0 W9511 Build 302True

You can’t run a changeto query on a table where a memo field has a required val check specified. All changes are placed in :PRIV:ERRCHG table.

To index

PX0028 Chart - 2D Line
Type of error:First verified:Last tested:Verified by me:
Minor7.0 W9511 Build 302True

SUMMARY:
In a 2D Line Chart, the lines can expand outside the right border of the chart background area. This will only happen when the number of x-values is larger than 45.

SETUP:
To see the problem create tabular charts based on Orders table, and use Ship date as X-Axis.

COMMENTS:
When number of x-values is in the range 45-60, the problem occurs when there is no Legend, and when the Legend is shown below the chart, but not when the Legend is placed on the right side. My experience is that the problem occurs when the chart is too close to the left side of the page. Too close is less than 1,5 centimeters.

When number of x-values increases, the problem seems to occur all the time.

The same problem occurs in a 2D bar chart. In a 2D Area chart, the right border of the background area is respected, but the ticks will expand beyond that.

To index

PX0036 Event model - action(dataUnlockRecord) - on form close
Type of error:First verified:Last tested:Verified by me:
Functionality7.0 W9511 Build 302True

DataUnlockRecord is not sent to the record object or the tableFrame object, if a form is closed when a record is locked. It's only sent to the form.

SETUP:
A tableFrame with code in the recordobject’s action(), where eventInfo.id() = dataUnlockRecord is to be caught. Edit a record and close the form, with the record still locked, the action won’t reach the recordobject. If the code is in the form’s action, you’ll get it.

COMMENTS:
This bug was somewhat different prior to patch 2 of Paradox 7. You couldn't catch UnlockRecord at all.

To index

PX0037 QBE run - Incorrect result
Type of error:First verified:Last tested:Verified by me:
Functionality7.0 W9511 Build 302True

SUMMARY:
In a QBE with calc count all, condition A or B is not always the same as B or A.
 
SETUP 1:
A table with a three field primary key, IndexFld1, IndexFld2 and IndexFld3. All three declared as A1. One more field, DataFld, ShortInt. Two records in the table:

IndexFld1 IndxFld2 IndxFld3 DataFld
A A A 1
A B A 1

Run the query:
IndxFld1 IndxFld2
A Check B or A, calc count all

Answer table:
IndxFld2 Count of IndxFld2
A 1
B 2

Change the query:

IndxFld1 IndxFld2
A Check A or B, calc count all

and you’ll get the correct answer:
IndxFld2 Count of IndxFld2
A 1
B 1

SETUP 2:
The table is as follows:

Project A 8 *
Story A 8 *
Description A 30

The selection criteria (ie N and N..) applied to the Story field.
There is a secondary index on Project.

The queries I got the anomolies on were:

Project=NOV Story=N OR N..
and Project=NOV Story=N.. OR N

WORKAROUND:
Use Calc count or a SQL query

To index

PX0046 QBE run - changeto queries
Type of error:First verified:Last tested:Verified by me:
Functionality7.0 W9511 Build 302True

SUMMARY:
Under certain circumstances, you can’t use a changeto query on a table that is a referential integrity child. The changes are written to :Priv: ErrChg. This will happen when you try to change one of the key fields in the child table and the table has a compound primary key.
 
SETUP:
Master table - MA

M1 - S *
Mvar - S

Child table - MB

M1 - S *
M2 - S *
Mvar2 - S

Lookup table - MC

M2 - S *
Mvar23 - S

In MB, RI is defined to MA, on column M1.
In MB, a Lookup table is defined for column M2. MC is the lookup table.

Enter some values and try :
Query
ANSWER: :PRIV:ANSWER.DB

MB.DB | M2 |
              | 1, changeto 4 |

EndQuery

Changes are written to ERRCHG. You can do the change manually.

WORKAROUND:
Use SQL

To index

PX0060 ObjectPAL - sql.executeSql() and errorNativeCode()
Type of error:First verified:Last tested:Verified by me:
Functionality7.0 W9511 Build 302True

SUMMARY:
In Paradox 5, the errorNativeCode() returns the error number from the MS SQL Server/Sybase database. In Paradox 7, the same function is available, but the error number never shows up. Instead, the error General SQL Error always appears.

In Paradox 8, the errorNativeCode() bug was partly fixed. It still exists when syntax executeSql(db, tcursor) is used.

FROM: Dana Kaufman
Date: 1996

In Paradox 5, the errorNativeCode() returns the error number from the MS SQL Server database. In Paradox 7, the same function is available, but the error never shows up. Instead, the error General SQL Error ALWAYS appears.

Because of this, there appears no easy way to get the specific error condition.

Also, in Paradox 5, the following statement will work:
if not sqlVar.executeSQL(db) then
     *** Do something on error
endif

The *** Do something on error will run during an error in the sql statement. In Paradox 7, the General SQL Error will come up in the Error Dialog during the if statement. That is, the "Do something on error" section can never occur. This is fixed by putting the statement in a try...onFail block such as:
try
   sqlVar.executeSQL(db)
onFail
    **** Do something on error
endTry

MY COMMENTS 1996:
I can verify his results with a Sybase System 10 backend running on NT. My test was done with paradox 7 patch 4, BDE 3.50 and SQL Link 3.50.

2003:
Also tested with Paradox 11 and MS SQL Server 2000.

To index

PX0070 QBE Editor
Type of error:First verified:Last tested:Verified by me:
Minor7.0 W9511 Build 302True

SUMMARY:
When you open a query image and move the horizontal scroll bar, you are unable to type into a highlighted field until you go into field view or click with the mouse.
 
SETUP:
1. Create a query based on table with enough fields for the query to get a horizontal scroll bar.
2. Scroll the scroolbar.
3. Select a column using the mouse.
4. Start typing characters.

WORKAROUND:
Either click in the field with the mouse, or Press F2 (field view)

If you minimize and restore the window, you get the same effect as one more click.

To index

PX0097 Debugger - GPV
Type of error:First verified:Last tested:Verified by me:
GPV7.0 W9511 Build 302True

SUMMARY:
There are some reports on Unexpected: General Protection Violation error in the debugger while debugging a form. One situation where this happens is related to the use of calculated fields.

You get a GPV in the debugger when a form contains a calculated field based on a table in the form and the code you debug contains code that scans that table.

SETUP:
Create a form based on Customer, Orders, and Lineitem linkd 1-m-m. Orders and Lineitem shown as tableframes.

Create a calculated field: Sum([:Sample:orders.Amount Paid])+Sum([:Sample:orders.Balance Due])

Create a pushbutton with the following code in the pushButton event.

while true
   if Orders.atlast() then
      quitloop
   endif
   Orders.nextrecord()
endwhile

Set a breakpoint on the if Orders.atLast() line.

Run the form and step through the code with the debugger. Orders.nextRecord() will cause a GPV.

To index

PX0107 Report run - Error - The ObjectPal version used in this form is incompatible with this version of Paradox.
Type of error:First verified:Last tested:Verified by me:
Error5.011 Build 233False

PROBLEM:
Some reports can, when run as delivered reports, cause an errormessage "The ObjectPal version used in this form is incompatible with this version of Paradox. You must recompile from source."

In later versions of Paradox, 9 and 10, the most common cause to the message is having two objects in a single column in a tableframe in the report.

SETUP:
Exact setup is not known. There's more to it than having two fields in same column.

COMMENTS - Paradox 8-9:
From: Liz
28 November 2001
Paradox 8
Check out the following FAQ, it may help:
Subject: FAQ:PdoxWin:Incompatible ObjectPAL Version:1999.12.13

The only thing missing from it, that I've seen to this, is when you have more than one object in a single column of a tableframe. The solution to the latter is to group all those objects (seems tframe columns want to only have one object in them).

Solution verified by: Steven W. Erbach

COMMENTS - Paradox 5:
From: Brian Bushay
Either the tables used in the design of the report are not the same structure now or the master table of the report is a Query and fields from the query are used in a calculated field. If the later is your problem you may be able to get around it by using object names instead of field names in the calculated field.

From: Jon Kranes
I found this one myself also. Here's what I know about it (from experimentation only):

(1) It seems to plague reports in which you have a QBE master table linked to other tables.

(2) It seems to happen most frequently when you sort or group the report, especially if you sort or group on fields from the linked tables.

(3) It also seems to happen sometimes if you change the report's data model by adding or removing linked tables.

(4) The symptom is that ANY calculated field will cause an error when you try to deliver the report.

(5) Once it happens to you, you are SOL -- the report is corrupt and have to build a new report. You can generally copy objects from the corrupt report to a new report, as long as you do not copy any DEFINED fields. Copying defined fields will copy the corruption to the new report.

Because of this bug, I try to include all fields I need in the QBE so I don't have to link other tables to it in the data model.

MY COMMENTS - Paradox 8:
In Paradox 8, the errormessage is not that easy to recreate, but instead you can get an incorrect result in the report, if the order of the columns in the query the report is based upon, is changed.

To index

PX0114 QBE run - Outer join and default value
Type of error:First verified:Last tested:Verified by me:
Functionality5.011 Build 410True

SUMMARY:
An outer join query where a field in the inner table has a default value results in the default value being placed in records from the linked table that have no matches.


SETUP:
Create two tables, PX0114A and PX0114B, where PX0114A has the following structure:

Id - S - *
Fname - A30

and PX0114B

Id - S - *
Fdate - D - Default=Today

Insert data into the tables.
PX0114A
Id Fname
1 Bertil
2 Sven

Px0114B
Id
1

Run this query

Query
ANSWER: :PRIV:ANSWER.DB

Px0114a.db | Id | Fname |
           | Check _join1! | Check |

Px0114b.db | Id | Fdate |
           | _join1 | Check |

EndQuery

The anser table contains two records with Id=1 and 2. The record from Id=2 contains data in Fdate even though there is no such record.

Reopened by: Dan Ellingson
Date: 14 June 2006

MY COMMENTS:
I have notes saying this was once fixed in BDE 3.11

To index

PX0148 Report print - repeated rows and missing rows
Type of error:First verified:Last tested:Verified by me:
Functionality7.0 W9511 Build 302True

There are reports on problems with
a) records being dropped when a report is printed
and
b) records being repeated on the following page

PROBLEM 1
Printing a tableframe with a horizontal scroll bar in the record band in a report with grouping, results in the last group of records being repeated on the next page.

SETUP 1
1. Create a new report.
2. Place a tableframe with a horizontal scroll bar in record band .
3. Add a group band.
4. If data falls just right, it will be repeated on the next page.

WORKAROUND 1:
Remove the scrollbar from the tableframe.

PROBLEM 2
Records are missing when printed, but shown on screen.

Comments:
Problem seems to be related to a couple of different isues.

1) Group bands are used.
2) Reports have been recompiled in a later version of Paradox

Possible workarounds:
1) In the MRO's Runtime Properties, set the "Show All Objects" technique to "By Duplicating Object" rather than "In One Object" and your report will show and print correctly.
2) Change group headers which have runtime properties set to print at page only to Print at page and Group
3) Rebuild the report (or the group bands) in your current version of Paradox
4) Try setting your report property to true or false depending upon how you have it now. This setting is located in the ObjectExplorer for the report.


PROBLEM 3)
Records are being repeated on next page

Comments:
Problem seems to be related to

1) Report being designed for screen rather than printer
2) other unknown issues

Possible workarounds:
1) In Report Design mode, Select the tableframe record, Properties, Run Time, un-check Fit height.
2) Turn off the TableFrame RunTime | Show All columns| property
3) If possible, find a solution which don't require group bands.


PROBLEM 4)
A report with a single record layout where the record band contains two text objects, one above and one below a memo field. The first text object contains text and a couple of field objects. When first text object is not completely contained within a page, one line of the text object will be repeated when report is published to RTF format.

Workaround: Make the textobject NOT breakable.

Problems 1-3 reported by:
Susan E. Butler
Imm8766
Joe Humphreys
Stefan Schmiedl
Problem 4 reported by: Bertil Isberg Date: July 24 2004

Workarounds 1-3 suggested by:
Tammy Fitzpatrick
Brian Bushay
Paul Funk
Joe Humphreys
Dan Alder (Corel Corporation)
Mike Irwin [CTech]
Workaround 4 by: Bertil Isberg

To index

PX0151 ObjectPAL - query.isQueryValid()
Type of error:First verified:Last tested:Verified by me:
Functionality7.0 W9511 Build 302True

SUMMARY:
Query.isQueryValid() leaves a lock on the tables used in the query.

SETUP:
Code:
method run(var eventInfo Event)
; executing this script twice in the same session will fail on the 2nd time
; you will not be able to purge any table, nor be able
; to change the private dir. An inexplicable error message
; like 'table(s) open : unable to proceed' will pop-up
; Only way out is to leave Paradox...!

; 'Px0151a' is a regular, ordinary, 3-alpha-field small table
; contents are irrelevant
; Caution : one necessary condition for the bug to appear is that
; the 2nd query uses as input answer table 'Px0151b' from the 1st query

var
   qs query
endvar
qs=Query

:Buggar:Px0151a.DB | Archive | Boite | Title |
| CheckPlus | CheckPlus | CheckPlus |

EndQuery
if not lgExequery(qs,1,"Px0151b") then return endif
qs=Query

Px0151b.db | Archive |
           | Check |

EndQuery
if not lgExequery(qs,2,"Px0151c") then return endif
message("ok")
endMethod

method lgExeQuery(var qs query, nb smallint, tb string) logical
; Tests and executes a query

; Setting 'bug' to true will activate the 'isqueryvalid'
; method which, in turn, will prevent a second
; successful execution of the calling script in the same session
; Setting 'bug' to false will cause the script to
; repeatedly execute properly

const
   bug=true
endconst
if bug then
    if not qs.isqueryvalid() then
        msgstop("Error","Invalid query ... !")
        return(false)
    endif
endif
message("executing query ",nb," into » ","table "+tb)
if qs.executeqbe(tb) then
   return(true)
else
   errorshow()
   msgstop("Error","Query n° "+string(nb)+" failed ... !")
   qs.writeqbe("Px0151x")
   return(false)
endif
endMethod

To index

PX0157 ObjectPAL - query.setAnswerFieldOrder()
Type of error:First verified:Last tested:Verified by me:
Functionality7.0 W9511 Build 302True

SUMMARY:
When q.setAnswerFieldOrder() is applied to a query variable, the alias used in the query will stay open afterwards. Alias manager will report [Database is open] and [Cannot be modified].

SETUP
var
   arst array[] string
   q query
   st string
endvar

q=Query

:Buggar:Px0157 | Nlig | Artic |
               | CheckPlus | CheckPlus |

EndQuery
st="Artic,Nlig"
st.breakapart(arst,",")
q.setanswerfieldorder(arst)
if not q.executeQbe(":PRIV:Answer") then
errorShow()
endif

WORKAROUND:
The workaround is to open a database variable and execute the query in the database, and eventually close the database variable.

To index

PX0158 Local SQL - Error- Operation not applicable - Auxiliary passwords
Type of error:First verified:Last tested:Verified by me:
Error7.0 W9511 Build 302True

You have a table with an auxiliary password set. This password restricts the FieldRights for some columns to None. Running a SQL statement with the auxiliary password, will give you an error dialog saying: [Operation not applicable]. You can run the statement with the master password. You can run a QBE with the auxiliary password.

To index

PX0160 Form run - editing memo field
Type of error:First verified:Last tested:Verified by me:
Functionality7.0 W9511 Build 302True

When entering text in a memo field, press F5 or menuchoice Record | Lock, and you will lose the changes.

To index

PX0165 Form run - based on SQL file
Type of error:First verified:Last tested:Verified by me:
Functionality7.0 W9511 Build 302True

SUMMARY
When a form is based on a SQL file instead of tables, you can get a Live Query view to edit in your form. The sql file does not have to be defined to produce a Live query. When running the form, you can switch to tableview with the TableView button on the Toolbar and you'll see the icons symbolizing a Live Query view.

But there are some problems with how a sql file is handled in a form. Some columns are defined with FieldRights=ReadOnly and it is not possible to change this through the Property dialog.
 
SETUP:
I had a Sql file

Select CustomerNo, " " as NewColumn
From :Sample:Customer

This file gives a Live Query view. NewColumn is not editable. Even though it is possible to change the ReadOnly attribute in the Property dialog, the FieldRight property is still ReadOnly. And maybe that is correct, because when switching to TableView it is a live query and NewColumn cannot be edited.

Then I changed the Sql file to include a Group by

Select CustomerNo, " " as NewColumn
From :Sample:Customer
Group by CustomerNo

In the form, the NewColumn is still not editable, but this is not a Live query. When I switch to TableView, the column can be edited.

A third example:
A table, Px0165, with Id - S*, Group1-S, Col1-S.
A SQL file:
select Group1, sum(Col1)
from Px0165
group by Group1

When a form is based on this Sql file, Group1 is editable, but not Sum of Col1. Editing Group1 won't affect the underlying table, though. A Select with a Group By clause can never produce a live query, so I can't understand why some of columns are ReadOnly. Obviously, the FieldRights property is not set up as it should be.

To index

PX0170 Form run - Filter on unindexed table
Type of error:First verified:Last tested:Verified by me:
Functionality7.0 W9511 Build 302True

SUMMARY:
In a filtered form based on an unindexed table, if you enter a value that will make the current record be excluded , the next record will be displayed twice.

SETUP:
A table with no primary key. Create a form showing the table in a tableFrame. Set a filter on column Country to show only U.S.A. Edit Country for one the records. Leave the record. The tableframe is not refreshed properly. The following record is shown twice.

WORKAROUND:
Put this code in form’s action() event, the else clause

if eventInfo.id()=dataUnlockRecord then
   doDefault
   active.action(dataRefresh)
endif

To index

PX0184 Report print - Dotted line
Type of error:First verified:Last tested:Verified by me:
Functionality7.0 W957.0 W95 P4True

PROBLEM:
I have a problem printing a dotted line. It is "hairline" thickness and appears as dotted on the screen (design & run). At the printer, however, it prints as a solid line.

Reported by: Herb Ray

This was reported as fixed in Paradox 8, but it is still there in Paradox 10 and later versions.

To index

PX0185 ObjectPAL syntax error
Type of error:First verified:Last tested:Verified by me:
Error7.0 W9511 Build 302True

PROBLEM:
Code gives a syntax error where there shouldn't be one.

SETUP:
Here's a boiled-down version of the script I've been trying to debug all week.

Create a script.
The var window:
 type
   StringArray = Array[1] String
 endType

The Proc window:
 proc FirstArrayElement(const ConstAr StringArray) String
 return ConstAr[1]
 endProc

 proc ProcessTable()
 var
   tableName String
   tc TCursor
 endVar
 tableName = "Mytable.db"
 tc.open(tableName)
 endProc

The Run method:
 method run(var eventInfo Event)
 var
   sa StringArray
   s String
 endVar
 sa[1] = "FirstString"
 s = FirstArrayElement(sa)
 ProcessTable()
 endmethod

The compiler highlights the word "open" in the ProcessTable() proc, and reports, "Error: Constant object or parameter cannot be modified."

How can I change the code to avoid the error?
The error goes away if I make any of the following changes:

1. Change
     proc FirstArrayElement(const ConstAr StringArray) String
to
     proc FirstArrayElement(var ConstAr StringArray) String
or
     proc FirstArrayElement(ConstAr StringArray) String

2. In the FirstArrayElement() proc, delete the line
     return ConstAr[1]
and do not otherwise refer to an element in the array, or at least don't assign it to a variable or return it.

3. In the ProcessTable() proc, change
     tableName = "Mytable.db"
to
     tableName = String("Mytable.db")

The error message generated by Paradox 7 (both 16- and 32-bit versions) seems to be a red herring. There is nothing wrong with my tc.open() statement. Apparently, though, Paradox's parse got corrupted by the reference to the const array parameter in the previous proc. The explicit typecast (solution 3) somehow gets past the problem.

There's a Paradox bug here someplace. Even if I'm violating some rule by referring to an element of a proc's const array parameter (which I'm not), Paradox should give an error message at that point, not in the next proc it parses.

Reported by: Richard Biffl

MY COMMENTS:
Two other workarounds.
1)
Change the order of the two procs in the proc window, that is make the ProcessTable() the first proc.
2)
   return strval(ConstAr[1])

To index

PX0207 Local SQL - like and indexes
Type of error:First verified:Last tested:Verified by me:
Functionality7.0 W9511 Build 302True

SUMMARY:
Problem with SQL LIKE when the column used in Where clause has a case sensitive secondary index.

SETUP:
I have the following problem issuing direct BDE SQL queries to a PARADOX7 table:

the SQL query:
 Select * from TABLE where FIELD like 'A%'

Initial TABLE content
FIELD
a
aa
AAA

is case sensitive for non indexed fields
result: 'AAA'
is case insensitive for fields with case insensitive index
result : 'a', 'aa', 'AAA'
is wrong for fields with case sensitive index
result : 'aa', 'AAA'

This is somewhat changed in Bde 4.51, as shown below.

I have the following problem issuing direct BDE SQL queries to a PARADOX7 table:
the SQL query:
Select * from TABLE where FIELD like 'A%'

Initial TABLE content
FIELD
a
aa
AAA

is case sensitive for non indexed fields
result: 'AAA'
is case sensitive for fields with case insensitive index
result : 'AAA'
or
         'a' and 'aa' when like 'a%' is used
is wrong for fields with case sensitive index when like 'A%' is used
result : 'aa', 'AAA'
and case-insensitive when like 'a%' is used
result 'a', 'aa', 'AAA'

Reported by: Nicolas Maskens
31 July 1997

To index

PX0217 Field Palette - private directory
Type of error:First verified:Last tested:Verified by me:
Functionality8.011 Build 302True

The FieldPalette includes tables in the private directory, but if you select one of those, no columns show up in the listbox.

If you press the Info... button, you'll get an error saying:
Invalid file name.
C:\data\Pdoxwin\:Priv:Answer.db.

To index

PX0220 Chart Expert
Type of error:First verified:Last tested:Verified by me:
Functionality7.0 W9511 Build 302True

When creating a bar chart using the Chart expert, you eventually come to the screen where the Y-axis is to be selected. If you select a numeric column, e g Customer No, you won't get the choice of a summary operator Count. You'll only get that choice for a Alpha column.

To index

PX0227 Report - Field Palette
Type of error:First verified:Last tested:Verified by me:
Minor8.011 Build 302True

In a report, you select a field from a table not included in the datamodel. As the table is not part of the datamodel, you'll get a question whether you want to include it or not. If the datamodel is empty, the field will be defined. Next time, if you select from another table,the field will become undefined.This does not happen in a form.

To index

PX0242 Form run - downArrow in a MRO
Type of error:First verified:Last tested:Verified by me:
Functionality5.0411 Build 302True

SUMMARY:
DownArrow used in the last field in a MRO object is causing the use of NextRecord to append records in the MRO, being blocked.

SETUP:
Create a form based on Customer shown as a MultiRecord object. Select just a few columns so you can get a record layout containing a couple of records. Make sure you have autoAppened set to true for the table.

Move to the last record, and to the last field. Enter edit mode.

Use PgDn. You won't get any records appended.
Use NextRecord. An empty record is opened
Move away from it. and move back to the last record, last field.
Use DownArrow. Can't be used.
Use NextRecord. Now NextRecord is blocked.

WORKAROUND:
1) A workaround can be based on code like the following being bound to the error event for the last field:

method error(var eventInfo ErrorEvent)
if eventInfo.errorcode()=peEof then
   if isEdit() then
      if active'AutoAppend=True then
    active.postAction(dataInsertRecord)
      endif
   endif
endif
endMethod

Even though this code does not make your form execute exactly as Paradox should, it prevents the side effect of NextRecord being blocked.

2) In the action event for last field
if eventInfo.id()=MoveDown then
     if active.atlast() then
          if isEdit() then
if active'AutoAppend=True then
        disableDefault
    active.postAction(dataNextRecord)
            endif
          endif
   endif
endif

To index

PX0272 Field Expert - expanding edit field
Type of error:First verified:Last tested:Verified by me:
Error7.0 W9511 Build 302True

PROBLEM:
Use the field expert to create an expanding edit field. Everything works as intended until the right mouse button is clicked. This brings up the system dialog box to do a search (or to change properties of the field if you started with a memo field, but that required removing some code per Corel).

When the mouse clicks on the dialog, an error is generated because the code tried to delete the (temporary) expanded edit region while it was still in use. The code to delete the temporary edit region is in the timer method.

When object is placed on a notepage, you will also get an error: An error occurred when trying to get the property named "Design.ContainObjects" of the object named "#NotePage9" of type "NotePage". The property is not valid for given object.

Reported by: JRRadtke

MY COMMENTS:
Object has to placed on a page to work as designed. On a Notebook page, the code has to be changed. All references to class()="Page" should be changed to "NotePage"

To get rid of the Delete error, change code in timer method to:

if explodingUI.focus = false and active'name <>explodingUI'name then

To index

PX0274 Form run - refresh of 1-M linked tables
Type of error:First verified:Last tested:Verified by me:
Functionality7.0 W9511 Build 302True

This is a description of a refresh problem and a "Warning: Record already locked in this session" problem that occurs in a multiuser situation. The same tables and forms are used by two different users. I have tested it on a single machine running Paradox 7 - patch 4 -and Paradox 10 - original release - with Bde 4.51 and with Local Share set To True and False.

Two tables:
Master table, named Px0274m, has one field Master- A8. Primary key.

Detail table, named Px0274d, has two fields, Master A8, Detail A5. They both together make up the primary key.

Master table contains two records, a and b.

Detail table contains four records
a 1
a 2
a 3
a 4

Now the rest of the description on how to reproduce it comes from Bob Grove. It was reported on one of the Corel Paradox newsgroups.

< Quote >
I'm going to launch two Paradox sessions on this one machine. I'll start a Paradox 7.0 session, and a Paradox 8.00.302 session. Both Paradoxes are using a single BDE dated 11/14/97.

1. Open Paradox 7. Open TEST.FSL. Move to master field on master record 2.
2. Open Paradox 8. Open TEST.FSL. Move to 2nd record of Child tableframe on master record 1.
3. Alt-Esc to Paradox 7. Press F9, "B", F9 -- this should lock/unlock the 2nd master record, triggering a refresh.
4. Alt-Esc to Paradox 8. Press F9, "2", F9 -- this should update the 2nd record of the Child tableframe.
5. Repeat from step 3 above until error occurs. Error will happen when you press "2" in step 4.

The error was originally detected on WinNT 4 (service pack 3) workstations running on a Novell 4.11 network.
< /Quote >

What happens is that when you try to edit the record in the detail table, the record disappears. If you enter a value and try to end edit, you'll get a message: Warning: Record already locked in this session. You can scroll backwards to the beginning of the detail table to find the records.

If the cursor is in the third of fourth record in the tableframe, there is no problem.

It does not matter what you enter in the master table's Master field. I have tried with changing between b and c, as well as between b and B.

WORKAROUND:
Use RI or make sure the details are updated through ObjectPAL code.

To index

PX0275 Chart - ShowAxes
Type of error:First verified:Last tested:Verified by me:
Minor7.0 W9511 Build 302True

SUMMARY
Unchecking Option | Show Axes on a graph does not work. Instead of turning off the axes, it inverts the graph.

SETUP:
Inspect any graph, and uncheck Options | Show Axes.

COMMENTS:
Problem in Paradox 7 for Win95 and later 32 bits versions, not in Paradox 5 and 7 for win 3.11

To index

PX0283 ObjectPAL - database.transactionActive()
Type of error:First verified:Last tested:Verified by me:
Functionality7.0 W9511 Build 302True

SUMMARY:
transactionActive() always returns false for local tables.

SETUP:
1. Begin a transaction on a Paradox or dBASE table.
2. transactionActive() will return false.

To index

PX0297 Report run - Error - Could not initialize report. Expecting column separator in table header.
Type of error:First verified:Last tested:Verified by me:
Error7.0 W95Bde 5.2True

SUMMARY:
Sorting a report, you can get an error [ Could not initialize report. Expecting column separator in table header. ]

In P10, this is mentioned in the Release Notes.

COMMENTS:
From Paradox 9 Bde limits - BDE Limitation - Reports:
The length of the string identifying the full path to the report's source table, plus the table's file name, plus the length of the name of the first sort field cannot be more that 66 characters.

This includes the drive letter and colon and the ".db" database extension.

My comments:
The exact limit can be somewhat lower, like 64.

Another possible, not verified, cause reported by:
GeneM
C McBride
Date: 7 September 2003

Pdx10 doesn't seem to like having tables with names like :PRIV:_names in the data model...

To index

PX0298 ObjectPAL - uiObject.setGenFilter() on Logical field
Type of error:First verified:Last tested:Verified by me:
Error7.0 W9511 Build 302True

SUMMARY:
A logical field with a format Yes/No specified, can be filtered interactively with Yes/No. Those values are not accepted when using object.setGenFilter().

SETUP:
Create a table with a logical and then a form based on the table. Show the table as a tableFrame. Add a Yes/No format to the logical field. In a pushButton, add code like

var
darat dynarray[] anytype
endvar

darat["LogicField"]=Yes ; Or "Yes" or "\""+"Yes"+"\""

if not Px0298.setGenfilter(darat) then
errorshow()
endif

Error stack contains:
The filter expression in field is not valid.
The filter expression is not valid.
Can't convert True to a fldBool.
Invalid character.: "T"rue

COMMENTS:
In Paradox 5, and BDE 2.51, the problem does not occur.

WORKAROUND:
I made a test table(5.0) with a logical field "test". Then I created a form with the "Test" table attached to a tableframe. I created a button with setGenFilter code. It worked. Then I placed the Yes/No format on the field in the tableframe I got the error. Then I added a field(outside the tableframe) to the form defined as the test field in the test table. No format on the new field. No change to the code on the button(no need to direct the filter to the new field). The button works as expected. Set the new(work around) field's visible property to false and you have an easy work around that should have no unwanted side afects.

This workaround requires the objects to be placed in a specific order.

To index

PX0299 QBE run - Incorrect result
Type of error:First verified:Last tested:Verified by me:
Functionality7.0 W9511 Build 302True

This problem can only be verified with specific tables using international language drivers.

SUMMARY:
A checkplus query where a wildcard selection is applied to the primary key, will create duplicate records in the answer table. The primary key has to be an Alpha column. The key has to begin with alpha characters. The selection can look like CH..

SETUP:
Table structure

Nr A6 *
Version A20
Description M20
ProblemType A16

Running a query where the primary key is checked with a Checkplus, I get duplicates.

The SQL generated from the QBE file will run OK, though.

SELECT Nr
FROM "Px0299.DB"
WHERE
(Nr LIKE 'CH%')

COMMENTS:
From: Scott Johnston - Corel
Date: 29 August 2000
This is what I've found so far:

First of all, the memo field is not a factor.

The language driver is the main issue. I cannot dupe this issue using ascii ansi or Paradox ascii as the table language driver.

Using an international driver, the problem can only be duped if all of the following criteria are met:

1) the primary key is an alpha field;
2) the filter is being done on the primary key;
3) the wildcard begins with a letter

Here's something interesting: I started deleting fields one by one (starting at the last field) and when the table only had 10 fields remaining, the query produced the correct results. Then I took the original table, changed all of the A4 fields to A1 fields, dropped the memo field and a couple of the number fields, and was able to run the query correctly with 22 fields in the table (down from the original 28 fields). If I leave the memo field in, change the A4 fields to A1 fields, I can run the query successfully with 14 fields.

It seems like the size of the table is creating the problem, which is strange on such a small table. I will continue to investigate and see if I can pinpoint exactly what's going on.

To index

PX0305 Query - Treat blank fields as zeroes
Type of error:First verified:Last tested:Verified by me:
Functionality9.011 Build 410True

SUMMARY:
A report based on a query neglects the [Treat blank fields as zeroes] setting.

A QBE run directly, right-click - select Run, does also neglect the setting.

COMMENTS:
A query and report based on that query does not give the same result. If I uncheck Treat blank as zeroes, the query and the report give the same result. My conclusion is: a report based on a query does neglect the Treat blank as zeroes setting.

The query looks like

Query
ANSWER: :PRIV:Answer.db

OPTIONS: SERVER
Books_aa.DB | Product | ProdType | VendCode | Recvd | Sold |
            | Check | _join1 | _join2 | Check _ex1 | Check _ex2 |

Books_aa.DB | RetToUs | RmvdFromStock | Active |
            | Check _ex3 | Check _ex4 | blank |

Books_aa.DB | ReorderPoint |
            | Check >= _ex1 - _ex2 + _ex3 - _ex4 |

Books_ProdType.db | ProdType | ProdTypeDescription |
                  | _join1 | Check |

Ypvendor.DB | VendCode | Vendor | Phone |
            | _join2 | Check | Check |

EndQuery

The calculation, >= _ex1 - _ex2 + _ex3 - _ex4, in the ReorderPoint column is causing the problem. Some of the columns in table used contain blank values.

Reported by: Fred van Heusen

More comments by: Wayne Sheppard
Date: 14 November 2006

If I right-click/run a query, it always runs with TreatBlankAsZero as False.
If I open in design mode, then run a query, it respects the TreatBlankAsZero setting.

To index

PX0306 Visual Query Builder - Error - Type mismatch in expression - date
Type of error:First verified:Last tested:Verified by me:
Error9.011 Build 302True

SUMMARY:
A saved SQL file with date according to US standard, does not open in the VQB. You have to change it to the BDE date format, and then VQB changes it back to US standard.

Problem only occurs if your Bde date format is different than the date format used in Local SQL,

SETUP:
When using SQL date string I get "Type mismatch in expression" from the Visual Query Builder
Example that fails:
WHERE MyDate < '12/02/1998'
Example that works:
WHERE MyDate < '1998-12-02'
Then the Visual Query Builder accepts that, but changes it back to '12/02/1998' that it does not accept.
The BDE version that I use is 5.0.1.22
My Short date format in Windows is YYYY-MM-DD

A saved SQL file with date according to US standard, does not open in the VQB. You have to change it to the BDE date format, and then VQB changes it back to US standard.

Reported by: Stefan Bodingh

MY COMMENTS - 27 September 1999
I'm using Datemode 2 with - as separator.

To enter a date in VQB, I use single quotes , eg '1991-12-31', which VQB changes to '12/31/1991'. I can run the query, and I can save it as a file,

SELECT Orders_db."Order No", Orders_db."Customer No", Orders_db."Sale Date"
FROM "orders.db" Orders_db
WHERE Orders_db."Sale Date" > '12/31/1991'

When I, later on, open the SQL file in Design and tries to enter VQB, I get the Type Mismatch error.

To index

PX0316 TableStructure dialog - Print
Type of error:First verified:Last tested:Verified by me:
Functionality9.011 Build 302True

SUMMARY:
Printing the structure of a table containing one column does not work from View | Table Structure.

Reported by:
Chris LaFrancis
Brian Bushay Ctech
20 July 2000

WORKAROUND:
Print from Restructure dialog instead.

FIXED IN P 9 - SP1
From: Mike Irwin [Paradox]
Date: 18 June 1999
Open a table. Let's say for this argument that it has 8 fields. Use View | Table Structure to view the table structure Use the Print button to print the table structure Look at the print. You will notice that it only shows 7 fields :(

Use Format | Restructure Table to view the table structure Use the Print button to print the table structure Look at the print. You will notice that it now shows 8 fields :)

This occurs with any table in versions 9.00.367 and 9.00.368

To index

PX0318 Paradox desktop - Customizing menus using PXDLITE
Type of error:First verified:Last tested:Verified by me:
Functionality9.011 Build 302True

SUMMARY:
theTooltip text will get of of sync if you add elements to the menus using the Pxdlite feature in Registry.

At least it is not obvious how NOT to get them out of sync. The Application Event which is there by default through the Pxdlite feature is in sync, but a custom menu element will make the rest be unsynchronized.


WORKAROUND
Instead of adding custom menus to Tools menu where the custom elements are placed at the top of the Web Repository and Application Menu section, you can put them in Help menu where the elements will be added at the bottom of the ObjectPAL reference section.

To index

PX0324 Form run - DataModel - unlinked tables
Type of error:First verified:Last tested:Verified by me:
Functionality7.0 W9511 Build 302True

SUMMARY:
In a form with unlinked tables, where only one of them is displayed in the form, a tcursor empty and a tcursor insertAfterRecord applied to the undisplayed table will cause a priorRecord to be sent to the displayed table.

DESCRIPTION:
While trying to port a Paradox 4.5 (for Windows) application to Paradox 7 and 8, I came across the following table interaction, which appears to be a bug in Paradox 7, 8 and Runtime 8.

At its simplest, consider two tables TableA and Table B.
Construct a simple form to display TableA on a record by record basis. I.E.
TableA will be in the data model.
Now add TableB to the data model - but dont link it, and dont use it on the form.
Place a couple of buttons on the form to allow you to move back and forward through the records of TableA.
Now add a button to run ObjectPal code which uses a tcursor to empty TableB.
Now add a button to run ObjectPal code which uses a tcursor to add data to TableB.

Now run the form, with data initially in both TableA and TableB.
You will find that each time you use the buttons to empty TableB or to add data to TableB, then the form will apparently execute a prior record operation on TableA.
If you start the form with TableB empty, this behaviour will not occur immediately, but after several deletes, adds and moves through the records, this bug will appear.

The bug seems to disappear if you remove TableB from the data model.

This behaviour appears with Paradox 7 ( BDE 5.01?) and Windows NT. It also appears with Paradox 8 (BDE 4.01?) with Windows 95 and Runtime 8 (BDE 4.51?) with Windows 95.

It does not appear with good old Paradox 4.5.

Reported by: Henry Davie
Date: 24 July 1999

To index

PX0325 Form run - F3 and F4 key
Type of error:First verified:Last tested:Verified by me:
Minor9.011 Build 302True

Introduced in P9 SP4
In a form with a notebook object and two tables on one of the pages, F3 and F4 does not move between the table frames any longer but between the notepages.

Introduced in P9 SP 3
In a form with two table frames, the F4 key will move between the two tables. In earlier versions of Paradox moving from master and back to master would also return to the active record in the master table. In Paradox 9, you will return to the first record displayed in the frame.

To index

PX0328 ObjectPAL - fileBrowserEx() - fbAllTables
Type of error:First verified:Last tested:Verified by me:
Error7.0 W9511 Build 302True

SUMMARY:
Using fbAllTables as the AllowableTypes member of the FileBrowserInfo structure displays the family objects, as opposed to simply the .DB's and DBF's in a directory. When I choose one these objects, I get an error saying [Invalid file extension for this file type]

Reported by: Lance Leonard
Date: 25 June 1999

To index

PX0329 Form run - Error - Insufficient FieldRights
Type of error:First verified:Last tested:Verified by me:
Error7.0 W9511 Build 302True

SUMMARY:
Error message [Insufficient FieldRights] occurs when a user with All Rights on a password protected table edits a record and a user with ReadOnly rights opens the same form and arrives to the record being edited.

SETUP:
The table used has two auxiliary passwords. One with All Rights and one with ReadOnly rights.
User A opens the form with AllRights, and begins to edit a record without posting it.
User B opens the form with ReadOnly rights, and moves to the same record.
User A continues to edit the record and now he gets an "Insufficient field rights" message on the statusbar when he tries to move off a field.
User A issues a Tools | Security | Display Locks for the table in use, and now he can edit the record.

DESCRIPTION:
From: Erik Wogstad
Date: 10 July 1999
I'm having problems maintaining consistent control over user access rights on a multiple user network.

My Paradox7 Runtime app is installed on a client's network (NT server, 95/98 workstations). App is on the server, Paradox/BDE installed locally on each workstation (Paradox7Runtime, all patches).

In my app, passwords and access rights are conferred through ObjectPal via a dialog-style form that gets user's password input. If user's password matches one in USERPASS.DB, ObjectPAL code then assigns the "real" secret password to the session, using ses.addPassword(). Real passwords correspond to Auxilliary passwords which are identical for all tables used by the app.

But to my problem:

1. If UserA logs on with all rights, all is fine.

2. If UserB logs on (with read-only rights) while UserA is still on, and if UserB opens the same edit form UserA is currently using, then UserA loses editing rights. (UserA's edit form appears unchanged (Edit buttons remain active, user can start to edit a field value) but when he tries to move off the record he's editing, the message window displays the following message: "Insufficient field rights for operation: Field:< NameofField >". Paradox doesn't let the user depart the field unless he hits the ESC key to cancel changes.

3. If UserA closes and re-opens the form, even while UserB is still on, UserA regains full rights.

4. UserB's rights never seem to change. They remain read-only, even if UserA (with more rights) opens up the same form that UserB is reading.

Weird behavior. Gotta have something to do with the way forms open and how they affect password protected tables. But what?

I've observed another twist. In the above scenario, if UserA gets the "insufficient field rights" message when UserB opens the same form. But if UserA goes to Tools > Display Locks... and identifies the master table, then UserA's rights are restored (doesn't have to close/re-open the form). My guess is that Paradox isn't updating its locking scheme unless prompted by a form.open() or display locks.

Date: 17 July 1999
Interesting test:

1. UserA opens table with a "AllPass" password granting all rights.
2. UserB open table with "ReadPass" password that grants read-only rights.

If UserA opens table first, all edit rights are granted. If UserB opens same table, UserA rights are unchanged, except for one condition: if User A is in the middle of editing a record and UserB opens the table and reads (arrives on) the same record before UserA posts the changes, UserA is prevented from posting the record. Message: "Insufficient field rights for operation: Field: " UserA can't leave the field unless he hits the escape key. If UserA leaves and returns to this field, edit rights are restored. UserB's rights never change (always read-only).

There has to be something about the general way forms open that is key here. I've noticed slight differences among my edit forms, which seems to relate to how tables are linked in the form's DataModel. If a table is linked 1>M in the DataModel UserA is prevented from editing any of the records in the scenario I described in my prior posts. In another form, where 2 tables are unlinked (and 1>M relationship is maintained by ObjectPAL using setrange() etc., UserA is free to edit records on the child table.

In all of this, it seems to me that ObjectPAL is being overly aggressive in its table-locking behavior when a user opens a form. When UserB opens the form after UserA is already using it to edit records, UserB is granted a table lock that knocks out UserA's editing rights. And this behavior seems entirely unrelated to any of my ObjectPAL code (since I stripped it all out) and unrelated to my password-granting schemes.

To index

PX0336 Report design - MRO - Number down
Type of error:First verified:Last tested:Verified by me:
Minor9.011 Build 302True

SUMMARY:
You cannot set a number larger than 30 for Down in the MRO record layout.

DESCRIPTION:
The Record Layout for Multi Record reports seems to have a limit of 30 in the downward direction, even though there's lots of space for more. Is this intentional?

Next, while the specified number of Records Across affects the design view, it apparently does not affect what tries to get printed. The multirecord columns advance to the left, ignoring page boundaries, till the source table is exhausted. The page has previously been set up by File|Page Setup and to the same size and orientation in Printer Properties.

If you try "Top-down, then left-right" you'll find that the limit of 30 in a column is imposed and the columns march bravely off the page to the right unless you also check "Variable height (columnar) Expands and/or contracts individual records in the multi-record object". All my records are on a single line so don't understand why this has to be checked.

Reported by: Ken Dawson
Date: Mon, 02 Aug 1999

From: Brian Bushay Ctech
I have verified the 30 record max for vertical layout in design

MY COMMENTS:
Both verified

To index

PX0343 ObjectPAL - tcursor.enumFieldStruct() - Logical column
Type of error:First verified:Last tested:Verified by me:
Functionality9.0 P111 Build 302True

SUMMARY:
The default value for a field of type logical does not always show up as False when it is set to False.

SETUP:
I have verified the problem on Paradox 9 version 9.00.441.

Create a table

Id - S *
Alfa - A30
Log1 - L
Log2 - L Default value=False

enumFieldstruct() reports Log2's default value as True. Making the primary key column required will make the result correct.

I let the ObjectExpert create a button with code for running enumFieldStruct().

If I make a Short or Alpha column required, the default value for the Logical field will show up with the correct value = False, but if the columns made required are Integer or Date, the Logical value will still be incorrect.

Date: 30 August 1999

To index

PX0344 Paradox desktop - Window menu tooltips
Type of error:First verified:Last tested:Verified by me:
Minor9.0 P111 Build 302True

SUMMARY:
The tooltip for the first open form in the Window menu, seems to relate to ProjectViewer even though Project Viewer is closed.

SETUP:
Open a form. Close ProjectViewer,
Select Window menu and hilite the form name. Look at the tooltip text.

To index

PX0349 ObjectPAL - fileBrowserEx() - BrowseOptCreatePrompt
Type of error:First verified:Last tested:Verified by me:
Error9.0 P111 Build 302True

SUMMARY:
Using the fileBrowser variable Option with BrowseOptCreatePrompt will produce an error [Could not find requested file], when a non existing filename is entered in the file open dialog.

DESCRIPTION:
I'm able to successfully use fileBrowserEx to find a file that exists. Now I want to be able to let the user find either an existing file, or let him type in the name of a file that my code (or Paradox) will then create. I'm having a problem, though. When I call fileBrowserEx, if I type in the name of a non-existent file, fileBrowserEx complains, even if I have BrowseOptCreatePrompt set. In both cases I get an errorShow type box that says it can't find the file. I click ok and get returned to the fileBrowser dialog box, so I assume it's the one looking for the file. If I say BrowseOptCreatePrompt, and click 'yes' to that prompt, is Paradox supposed to create that file for me? Or at least return the name?

 Here's a snippet of my code.

   fbiRte.Title = "Save Route Table"
   fbiRte.Options = BrowseOptCreatePrompt
   fbiRte.AllowableTypes = 0 ; so ObjectPAL will use our custom filter
   fbiRte.CustomFilter = "VTS Route tables (*rte*.db)|*rte*.db|" +
     "Paradox tables (*.db)|*.db|"
   fbiRte.Alias = ":TSGCFG:"
   bRet = fileBrowserEx (sFilename, fbiRte)

From: Michael Flanagan
Date: 10 September 1999

From: Brian Bushay Ctech
It should return the file name but unfortunately this is an item that does not work.

To index

PX0352 Tables - Performance issues sorting tables, QBE, and LocalSQL
Type of error:First verified:Last tested:Verified by me:
FunctionalityBde 5.0Bde 5.2True

SUMMARY:
Bde version related bug.
With BDE 5.0, the performance of sorting operations like ordering the result set of a QBE or SQL, degraded substantially for international language drivers .

DESCRIPTION:
From: Bertil Isberg
Date: 7 September 1999

Query and SQL performance with BDE 5.x and international language drivers.

Today I ran a query on a table with some 250 000 records, with a checkmark in one of the columns. The language driver is ANSISWFN. The query selected 11 records. With BDE 5.1, the query took 2 minutes. I ran the same query in Paradox 5 with BDE 2.51. Result 10 seconds. Paradox 7 and 9 with BDE 4.51 showed a result similar to Paradox 5.

Then I changed the language driver to paradox ascii, and run the query once more with BDE 5.x. Now the perfomance is the same as with BDE 2.51 and BDE 4.51.

My conclusion: There is a real performance problem with at least some international language drivers in BDE 5.x. I haven't had the time to test it with other international language drivers.

Here's a script that creates a table and inserts 100 000 records.

method run(var eventInfo Event)
var
 tbl table
   tc tcursor
   st string
   li, limax longInt
endvar

tbl=create "PX0345"
             WITH "Id" : "I",
                  "Acolumn" : "A8"
             Languagedriver "ANSISWFN"
             KEY "Id"
           endCreate
tc.open(tbl)
tbl.unattach()
tc.edit()
liMax=100000
for li from 1 to liMax
    tc.insertRecord()
    tc.Id=li
    st=li.string()
    tc.Acolumn="Acm"+st.substr(1,min(4,st.size()))+"a"
    tc.unlockRecord()
    message(li.string()+ " av "+liMax.string()+".")
endfor

tc.close()
endMethod

And a query to use to test the performance in different versions of the BDE.

Check the Acolumn.

My results:
BDE 5.x ANSISWFN : 1-2 minutes
         4,51 ANSISWFN: 10 seconds
           5.x paradox ascii: 5 seconds.

From: Dan Alder (Corel)
Response from QA:
I am able to duplicate this bug. It appears to be a bug with the BDE 5.x (verify in v 5.0.1.22 and v 5.1.0.4 builds). I will log a bug to Borland/Inprise.

COMMENTS
From: Vladimir Menkin
Date: 30 May 2001
Moreover, it seems the problem is related not to queries themselves, but to sorting. If there is a checkplus in a query (the answer table is not sorted in this case), no performance degradation occures. The performance of sort operations themselves (tools->utilities->sort) also is affected by language driver.

To index

PX0359 TableStructure dialog - dBASE tables
Type of error:First verified:Last tested:Verified by me:
Error9.0 P111 Build 302True

In dBase tables you can not create an N field with 0 decimals. The error you'll get is: The number of digits after the decimal is out of range (from 0 to Field Size - 2).

Reported by: Brian Bushay Ctech
Date: 26 September 1999

To index

PX0360 ObjectPAL - query.removeTable()
Type of error:First verified:Last tested:Verified by me:
Functionality9.011 Build 302True

SUMMARY:
If you append a table to an existing query in ObjectPAL, then executes the query, removes the table once, appends it again, executes the Query a second time, you will not be able to remove it, unless, before performing the executeQBE(), you do a createQBEString(). You will get an error message complaining that Table number does not exist in QBE work space.

In Paradox 10, query.removeTable() causes a IPF in Kernel32. This is fixed in P10 SP2.

DESCRIPTION:
Reported by: Nils Gustaf Lindgren
Date: 18 September 1999
If I append a table to my query (defined as a query variable), then execute the query (using executeQBE), and then try to remove the table from the Query, it works fine. If, however, I then re-append the same table, and run another executeQBE, and THEN try to remove the table, I get the error messgae that a Table number does not exist in the QBE work space, and the method fails.

If, on the other hand, after appending the table, but before executing the Query, I do a createQBEString, the method will succeed, no matter how many times I remove and append the same table.

If I do a createQBEString after the removeTable() method has failed, this will not help. I can, however, do a createQBEString, then overwrite the old query variable using readFromString() - and then the removeTable() will work, provided I use the table name, rather than a table ID, which will no longer be consistent.

I have tried using a lot of different tables, and the result is the same. So, I think it is a bug.

Rule of bug:
If you append a table to an existing query in ObjectPAL, then executes the query, removes the table once, appends it again, executes the Query a second time, you will not be able to remove it, unless, before performing the executeQBE(), you do a createQBEString(). You will get an error message complaining that Table number so and so does not exist in QBE work space.

The kludge is, alway make a createQBEString() before executing.

I have found two instances of the 'Table number (...) does not exist in QBE Work Space", the first being when the table is removed using reference to its table ID (short integer), the second, when using reference to its name (string). This case occurs when trying to remove a table after another has been appended after it. It is more understandable, still, I think it is a bug - or buggish.


Verified by: Bertil Isberg
When I ran your script and watched the si,ri smallint variables, on first pass they were 32760 and 32759. On second pass and all through tenth pass they were 32758 and 32757.

To index

PX0361 Event model - action(dataUnlockRecord) and Page object
Type of error:First verified:Last tested:Verified by me:
Functionality8.011 Build 302True

SUMMARY:
On a single record form, unlockRecord will not bubble to the page object.

DESCRIPTION:
The action(dataUnlockRecord) event is not being triggered all the time. In P4.5 and P5, after any change to a record, hitting any 'record movement' key (page up, page down, F11, F12, etc.) _would_ send a message that the record was being unlocked (saved). P8 and P9 don't on those movement keys. Some events _do_ trigger the event, such as F9 (end edit mode), form close, Insert (insert a new record), F5 (manual unlock/save).

Eg a sample form has 4 lines of code on the page:
 if eventinfo.id()=datapostrecord or
  eventinfo.id()=dataunlockrecord then
   beep()
 endif

In P4.5 and P5, after editing the record, and function which would cause the record to be saved (close form, end edit mode, page up, page down, etc.) correctly will cause a beep. In P8 and P9 only some events do (close form, end edit mode, insert, F5), but others don't (page up/down, etc.).

In P8 and P9, looking at the tracer, there is no event triggered that I can put code on to execute whenever a record is changed.

Reported by: Rob IA
Date: 23 September 1999

To index

PX0366 Event model - keyPhysical() event - disabling F1
Type of error:First verified:Last tested:Verified by me:
Functionality9.0 P111 Build 302True

SUMMARY:
Disabling keypress F1 and replacing it with action(dataLookup) will bring up the dataLookup screen and its help screen
 
DESCRIPTION:
I attached the following code to the keyPhysical event of a UIObject (field):

method keyPhysical(var eventInfo KeyEvent)
if eventInfo.vCharCode() = VK_F1 and WarrNum.isEdit() then
   disableDefault
   sendkeys("^{space}")
endif
endMethod

It is supposed to bring up the lookup table for that field, which it does. However, it also brings up Paradox help right on top of the lookup dialog box.

Another point - it seems to be executing the F1 key for the look-up dialog after it appears, which brings up the Paradox help screen.

Reported by: Mac
Date: 5 October 1999

To index

PX0371 ObjectPAL - dataTransfer.setSourceStartRow()
Type of error:First verified:Last tested:Verified by me:
Functionality7.0 W9511 Build 302True

SUMMARY:
DataTransfer.setSourceStartRow() does not work correctly. It's off with one line.

DESCRIPTION:
The text import expert has a facility where you can specify the line in the text file where you want your import to start. When you use this feature from the expert the result is OK, but when you run the script generated by the expert it's not. If you specify line 3, you get data from line 4 and forwards. Furthermore, the method used in the script, setSourceStartRow() is not documented in the help files. It is mentioned in the ObjectPAL Quick Lookup dialog under types and methods, though.

In Paradox 7 and 8, you got data from line 2 and forward instead, so the script generated has never worked.

To index

PX0374 Chart design - Font.Typeface
Type of error:First verified:Last tested:Verified by me:
Minor7.0 W95 P411 Build 302True

When trying to change the font typeface for any object in a chart using the right mouse click selecting Font | TypeFace| More typefaces, nothing happens.

To index

PX0378 TableView - Grid Lines
Type of error:First verified:Last tested:Verified by me:
Minor9.0 P111 Build 302True

SUMMARY:
Problems with the Gridline property dialog when trying to change Column and Heading gridlines. Two of the checkboxes seems to be checked by default, and whatever changes you do, those two are reset after the Apply button is pressed.

DESCRIPTION:
I opened a table today and attempted to change the grid lines. I was able to successfully change them to 3D. However, I could not "hide" the grid lines. Under the grid lines in grid properties the boxes checked under position are column lines and row lines. I want to check heading lines and column lines. When I uncheck the row lines and check the heading and column lines they do not change. In fact, they revert back under positions to the column lines and row lines. How do I change the grid line properties so that the row lines do not show and the heading and column lines do?

In Paradox 7 I could go to the grid properties and change the lines. I am using the 3D spacing. Under the position settings some of them have heading and column checked and some of them have row and column. I have decided I want to change them to all the same. 3D spacing, heading lines and column lines. I can change the spacing, but not the position settings. The position settings are check boxes. I can uncheck the ones that are checked and then check the ones I want checked. When I select OK or Apply nothing changes. In fact, the settings in the position settings revert to their previous settings.

Reported by: Randy Davis
Date: 4 October 1999

Verified by: Greg Milakovich
FWIW, it does not work for me either.

COMMENTS:
From: Michael Juul Hansen
While in table view open the Grid Properties Dialog (Ctrl + G)

1) On the Grid Lines tab make sure that only Column lines is checked
2) On the Record Marker tab check/uncheck Show Record Marker as desired

It works here (Paradox 9 + SP1)

From: Mike Irwin [CTech]
After reading all this thread, I'm not 101% sure that it's a bug.

You seem to want to have a totally blank workspace in a tableView, with column titles.

If that's right, then just set the gridline spacing to "none" (bottom of the list). It doesn't matter what colour, etc., they are - they just vanish.

You can't get rid of the lines around the column heading names, because these are an artifact of the object being used as a header - there has to be a visible difference between the header of a column with a cell with focus and all the others (for accessibility).

MY COMMENTS:
Column and Row was checked. After I copied an old :PRIV:Default.db file , Heading and Column became the default. And when deleting the :PRIV: Default table, Heading and Column was still the default.

The visiblity of the row lines seems to be related to other settings in the dialog e g. Color selected on the General tab, and Color on the Gridline tab. Spacing =Single or None and so on.

I can verify the gridline dialog does not work as it did in P8.

To index

PX0380 ObjectPAL - setDesktopPreference()
Type of error:First verified:Last tested:Verified by me:
Minor9.0 P111 Build 302True

SUMMARY:
SetDesktopPreference() will revoke changes made by setTitle()

SETUP:
In the following source SetTitle is ignored / not shown:

   var
   app application
   endvar

   app.setTitle("my title")
   setDesktopPreference( PrefProjectSection, prefRefreshRate, "1" )

Reported by: Andy
Date: 13 October 1999

WORKAROUND:
Place setTitle after SetDesktopPreference.

To index

PX0384 Export - Lotus - wk1 format
Type of error:First verified:Last tested:Verified by me:
Minor9.0 P111 Build 302True

PROBLEM:
When exporting a table to Lotus wk1 format, specifying "Use FieldNames as first row of data" does not work. Exporting interactively I get unprintable characters. Exporting from ObjectPAL with Transferdata() or exportSpreadsheet() gives a blank row instead.

Problem is related to Bde 5.x.

To index

PX0385 ObjectPAL - tcursor.deleteRecord()
Type of error:First verified:Last tested:Verified by me:
Minor8.011 Build 302True

SUMMARY:
tc.deleterecord() will now return True when the table is empty. An uiobject.deleteRecord() does not.

DESCRIPTION:
I was using Paradox 7 to develop a reasonably large application, and on some of the work forms, I have a method which deletes the line items from the form, prior to attempting to delete the master record. This was done by setting the range of the tcursor, and in a loop:

while tc.deleteRecord()
    msgInfo(string(tc.nRecords()), "In while loop")
endWhile

It would successfully remove the correct records, and then the master could be deleted.

I recently upgraded to Paradox 9, and now the same code loop seems to go forever, without deleting any record. Its like the deleteRecord() is returning true every time, but no records are being deleted.

From the above msginfo procedure in the while loop, I can see the number of records in the detail table. My detail table has over 700 records in it, but the msgBox shows 5, which means the setRange is working, as the particular record I tried had 5 detail table records. Each click of the msgInfo ok btn reduces the title bar number by one, ie, the record was deleted successfully, as it should, until it reaches zero, where it remains, but the while loop is never broken. I can only close paradox (three finger salute) and reopen it, to find that the detail records are still there.

Reported by: Ryan Nilsson-Harding
Date: 21 October 1999

From: Brian Bushay Ctech
Sounds like there has been a change in behavior. When you are in edit, Paradox is opening an empty record. I suggest you just write some better code try this

while not (tc.eot() and tc.Bot())
    tc.deleteRecord()
    msgInfo(string(tc.nRecords()), "In while loop")
endWhile

To index

PX0386 Local SQL - updating tables with a memo field
Type of error:First verified:Last tested:Verified by me:
FunctionalityBde 5.10Bde 5.2True

SUMMARY:
Updating the primary key on a table with a memo field, you will lose the content of the memofield.

SETUP:
You insert more than 16 records into a table with a memofield, that has a primary index on the first field (Id) and some contents in the memofield.

Tablename BDE_BUG.DB

Fieldnames Id(I) Memofield(M)

               1 abc
               2 r5
               3 abc
                     ....
                     ....

Then you run this query:

UPDATE "Bde_bug.DB"
SET Id = Id

And you find that the content of the memofield has been wiped out after row 16.

Reported By: Stefan Bodingh
Date: 26 October 1999

COMMENTS:
See also DocIssues WadId: 133

To index

PX0389 Form run - unsynchronized toolbar buttons
Type of error:First verified:Last tested:Verified by me:
Functionality9.0 P111 Build 302True

SUMMARY:
maximize() in a form being opened with wait() will interfere with the state of the Property toolbar. If the Vcr buttons are disabled in the calling form, they will be disabled in the called form too.

This will happen if the maximize() is placed in the page-open event of the called form. When triggered by a postAction() in page-open they will behave in a correct manner.

SETUP:
Calling form:

Blank data model.
A button:

var
  f form
endvar

f.Open("formb")
f.wait()
try
   f.close()
onFail
   errorclear()
endTry

Called form:
A table in the data model.

Page - open event:

doDefault
maximize()
menuAction(MenuPropertiesZoomFitWidth)

WORKAROU