Table of contents
| PX0026 | QBE run - changeto queries |
| PX0028 | Chart - 2D Line |
| PX0036 | Event model - action(dataUnlockRecord) - on form close |
| PX0037 | QBE run - Incorrect result |
| PX0046 | QBE run - changeto queries |
| PX0060 | ObjectPAL - sql.executeSql() and errorNativeCode() |
| PX0070 | QBE Editor |
| PX0097 | Debugger - GPV |
| PX0107 | Report run - Error - The ObjectPal version used in this form is incompatible with this version of Paradox. |
| PX0114 | QBE run - Outer join and default value |
| PX0148 | Report print - repeated rows and missing rows |
| PX0151 | ObjectPAL - query.isQueryValid() |
| PX0157 | ObjectPAL - query.setAnswerFieldOrder() |
| PX0158 | Local SQL - Error- Operation not applicable - Auxiliary passwords |
| PX0160 | Form run - editing memo field |
| PX0165 | Form run - based on SQL file |
| PX0170 | Form run - Filter on unindexed table |
| PX0184 | Report print - Dotted line |
| PX0185 | ObjectPAL syntax error |
| PX0207 | Local SQL - like and indexes |
| PX0217 | Field Palette - private directory |
| PX0220 | Chart Expert |
| PX0227 | Report - Field Palette |
| PX0242 | Form run - downArrow in a MRO |
| PX0272 | Field Expert - expanding edit field |
| PX0274 | Form run - refresh of 1-M linked tables |
| PX0275 | Chart - ShowAxes |
| PX0283 | ObjectPAL - database.transactionActive() |
| PX0297 | Report run - Error - Could not initialize report. Expecting column separator in table header. |
| PX0298 | ObjectPAL - uiObject.setGenFilter() on Logical field |
| PX0299 | QBE run - Incorrect result |
| PX0305 | Query - Treat blank fields as zeroes |
| PX0306 | Visual Query Builder - Error - Type mismatch in expression - date |
| PX0316 | TableStructure dialog - Print |
| PX0318 | Paradox desktop - Customizing menus using PXDLITE |
| PX0324 | Form run - DataModel - unlinked tables |
| PX0325 | Form run - F3 and F4 key |
| PX0328 | ObjectPAL - fileBrowserEx() - fbAllTables |
| PX0329 | Form run - Error - Insufficient FieldRights |
| PX0336 | Report design - MRO - Number down |
| PX0343 | ObjectPAL - tcursor.enumFieldStruct() - Logical column |
| PX0344 | Paradox desktop - Window menu tooltips |
| PX0349 | ObjectPAL - fileBrowserEx() - BrowseOptCreatePrompt |
| PX0352 | Tables - Performance issues sorting tables, QBE, and LocalSQL |
| PX0359 | TableStructure dialog - dBASE tables |
| PX0360 | ObjectPAL - query.removeTable() |
| PX0361 | Event model - action(dataUnlockRecord) and Page object |
| PX0366 | Event model - keyPhysical() event - disabling F1 |
| PX0371 | ObjectPAL - dataTransfer.setSourceStartRow() |
| PX0374 | Chart design - Font.Typeface |
| PX0378 | TableView - Grid Lines |
| PX0380 | ObjectPAL - setDesktopPreference() |
| PX0384 | Export - Lotus - wk1 format |
| PX0385 | ObjectPAL - tcursor.deleteRecord() |
| PX0386 | Local SQL - updating tables with a memo field |
| PX0389 | Form run - unsynchronized toolbar buttons |
| PX0391 | Non standard database drivers - MSSQL driver - Identity columns |
| PX0395 | Form / Report run - Timestamp columns |
| PX0396 | Event model - init() event and dmAddTable() |
| PX0399 | Form run - unsynchronized toolbar buttons |
| PX0457 | Import - Excel - Excel3 format |
| PX0458 | ObjectPAL - tcursor.locate() after tcursor.setRange() |
| PX0461 | ObjectPAL - sleep() |
| PX0462 | Form run - Auxiliary passwords in a 1-M form |
| PX0467 | Import - Delimited text - first column |
| PX0469 | Tables - Table Corruption |
| PX0470 | ObjectPAL - table.reIndex() and Write Lock |
| PX0471 | Documentation Expert |
| PX0473 | TableStructure dialog - Referential Integrity |
| PX0477 | Event model - menuAction(menuCanClose) and hidden Desktopform |
| PX0482 | Form run - Font.typeface in a formatted memo field |
| PX0483 | Tables - Creating secondary indexes |
| PX0484 | Export - Fixed text - custom specification |
| PX0485 | Form run - refresh of 1-M linked tables |
| PX0487 | Query Expert - Directory specification |
| PX0488 | TableStructure dialog - accessing a table in a non standard database |
| PX0490 | ObjectPAL - toolbar.addButton() - Toolbarbuttontype |
| PX0491 | Form run - Notebook object and Tooltip |
| PX0492 | Form open - replacing a table in datamodel |
| PX0495 | Visual Query Builder - Passwords |
| PX0496 | Event model - mouseExit() and tableframe |
| PX0500 | Form run - DataModel - 1-1 linked tables |
| PX0505 | Form run - IPF instead of Stack Overflow error |
| PX0506 | ObjectPAL - Resource leakage - fileSystem type methods - isFile() |
| PX0510 | ObjectPAL - popupMenu.addText() |
| PX0511 | ObjectPAL - enumFolder() |
| PX0512 | Local SQL - updating a table that has a AutoInc column |
| PX0516 | Event model - status() event - setStatusValue() |
| PX0523 | Event model - arrive() event - dmResync() |
| PX0524 | Table Repair - Verify - when .xls files exist |
| PX0526 | Report Expert - Error - The table(s) this query is based upon could not be found by the query. |
| PX0529 | Form run - unsynchronized toolbar buttons |
| PX0530 | Toolbars - Text Below Image |
| PX0531 | Form run - SpellChecker in 1-1 linked detail table. |
| PX0533 | Import - Excel - numeric data |
| PX0534 | Table Repair - entering a tablename |
| PX0536 | Local SQL - Bcd columns |
| PX0537 | Script - ProjectViewerClose() |
| PX0538 | ObjectPAL - enumDesktopWindowNames() and EnumWindowNames() |
| PX0539 | ObjectPAL - selectCurrentTool(NotebookTool) |
| PX0541 | Form / Report run - summary calculated field - rounding |
| PX0543 | ObjectPAL - ReadProfileString() |
| PX0546 | ObjectExplorer - showing methods and events from a different form |
| PX0549 | TableStructure dialog - Tab key |
| PX0550 | Form design - ActiveX and MRO objects |
| PX0553 | Form design - copying objects |
| PX0555 | ObjectPAL - GPV - query.executeQbe() - long tablenames |
| PX0556 | Local SQL - GPV - join between tables when two aliases are specified |
| PX0559 | QBE Editor - Highlighting text |
| PX0560 | Table Repair - table with formatted memo |
| PX0565 | Report - PublishAs - Doc and Wpd |
| PX0567 | Report print - scripted TrueType fonts |
| PX0569 | Event model - action(dataEndEdit) |
| PX0571 | IPF on exit from Paradox |
| PX0572 | Preferences - PrinterStyleSheet Browse button |
| PX0573 | Report design - Page Setup |
| PX0575 | Project Viewer - Statusbar information |
| PX0576 | Import - ReadOnly files. |
| PX0578 | ObjectPAL - twain.acquire() |
| PX0579 | TableStructure dialog - Auxialiary passwords |
| PX0580 | Button Expert - Advanced Data Entry - Locate Field value |
| PX0581 | ObjectPAL - tcursor.enumLocks() |
| PX0584 | Report run - Publish As - Html |
| PX0587 | Form open - Error - Disk error occured while reading file |
| PX0588 | Event model - action(dataEndEdit) and action(dataUnlockRecord) |
| PX0589 | Report print - Print dialog - Settings control |
| PX0591 | ObjectPAL syntax |
| PX0594 | Tables - Error - The graphic file contains an invalid header - Graphic columns |
| PX0595 | Project Viewer - Resource leakage |
| PX0598 | Report print - Warning - Report layout settings ... have been changed within the print dialog. |
| PX0599 | Form design - DataModel - changing link between tables |
| PX0600 | Import - Excel |
| PX0601 | Form run - memo field - cursor position |
| PX0603 | ObjectPAL - number.smallint() |
| PX0605 | Form run - assigning values to numeric fields |
| PX0607 | ObjectPAL - restructure() - Graphic columns |
| PX0608 | QBE run - Incorrect result |
| PX0609 | Form / Report run - unsynchronzied toolbar buttons |
| PX0611 | Report run - Publish As - Text |
| PX0612 | ObjectPAL - passing number to a DLL |
| PX0613 | ObjectPAL - dataTransfer.transferData() - default directory |
| PX0614 | Form run - formatted memo field |
| PX0615 | ObjectPAL - GPV - assigning value to textobjects in a report |
| PX0616 | ObjectPAL - sysInfo() and enumLocks() - Net login name |
| PX0617 | Form run - Ellipse objects |
| PX0618 | Form run - Ellipse objects |
| PX0619 | Event model - menuAction(menuFileExit) |
| PX0622 | ObjectPAL - tcursor.isValid() |
| PX0623 | ObjectPAL syntax error - Internal error: Between Parses |
| PX0624 | ObjectPAL - GPV - filesystem.findFirst() |
| PX0626 | ObjectPAL - sql.executeSql() - default name of answer table |
| PX0627 | Form / Report design - TrueType substituted fonts |
| PX0629 | Paradox Runtime - Notebook objects |
| PX0630 | ObjectPAL - getLanguagedriver() |
| PX0631 | ObjectPAL - fileBrowserEx() - unregistered extensions |
| PX0632 | ObjectPAL - report.publishTo(filename, publishToHtml) |
| PX0633 | ObjectPAL - report.print(reportPrintInfo) - SQLString |
| PX0634 | TableStructure dialog - Secondary index on Logical column |
| PX0635 | Form run - Hotkey and centerlabel |
| PX0636 | Form run - Zoom - FitWidth / FitHeight / BestFit |
| PX0638 | ObjectPAL - dataTransfer.transferData() - errorTrapOnwarnings() |
| PX0640 | Paradox Runtime - Files missing for importing spreadsheet files |
| PX0641 | Form run - Resource leakage - Field'Alignment=Center |
| PX0642 | ObjectPAL - tracer methods |
| PX0643 | ObjectPAL - index keyword |
| PX0644 | GPV on exit from Paradox |
| PX0645 | Print dialog - effects on Page Setup |
| PX0646 | Event model - menuAction(menuControlKeyMenu) |
| PX0647 | Form / Report run - effects of unchecking Standard menu |
| PX0648 | ObjectPAL - tcursor.enumFieldStruct() |
| PX0650 | Report design - Page Setup dialog |
| PX0652 | Event model - mouseDouble() |
| PX0653 | ObjectPAL - form.open(WinStyleHidden) |
| PX0655 | Toolbars - ActiveX Toolbar |
| PX0656 | ObjectPAL - sysInfo() |
| PX0657 | ObjectPAL - query.executeQbe() - columnnames in answer table |
| PX0658 | ObjectPAL - library.open() |
| PX0659 | ObjectPAL - version() |
| PX0660 | Report print - GPV - Error - #record 13 too big to fit in a report |
| PX0661 | Paradox Runtime - SpellChecker |
| PX0662 | Form run - dataRefresh and formatted memo |
| PX0663 | Local SQL - Delete statement corrupts the table |
| PX0667 | Form print - multipage form |
| PX0669 | ObjectPAL - Resource leakage - report.print() |
| PX0671 | ObjectPAL - sql.executeSql() - prompted for connection |
| PX0672 | ObjectPAL - scope of library variables |
| PX0673 | Form / Report design - FontStyle Bold Italic in a tableFrame |
| PX0675 | ObjectPAL - form.open(WinStyleHidden) |
| PX0676 | ObjectPAL - string.advmatch() - ignoreCaseInStringCompares(True) |
| PX0678 | Form run - setting a range on a locked record |
| PX0679 | ObjectPAL - floating point calculations |
| PX0680 | ObjectPAL - number.pow10() |
| PX0682 | ObjectPAL - memo(m1, m2) when m2 is blank |
| PX0686 | ObjectPAL - enumPrinters(tcursor) |
| PX0688 | Paradox Runtime - Printer names |
| PX0689 | Tables - Table Corruption |
| PX0690 | Printer names |
| PX0693 | ObjectPAL - Resource leakage - execute() |
| PX0694 | Form run - Cut, and copy |
| PX0695 | Form design - Notebook object - property Scrolling Tabs |
| PX0696 | Form run - Notebook object - Ctrl+R |
| PX0698 | Report print - tables in use afterwards |
| PX0703 | ObjectPAL - ProjectViewerClose() and exit() |
| PX0704 | Form / Report design - dependent properties |
| PX0705 | QBE run - tables in Non standard driver databases |
| PX0707 | Chart - LabelFormat y in percent |
| PX0708 | Paradox Runtime - Alt key |
| PX0709 | About Paradox - System Info dialog |
| PX0710 | New From Project - example databases |
| PX0711 | ObjectPAL - GPV - dataTransfer.enumSourcePageList() |
| PX0712 | Form run - GPV - assigning blank memofield to textobject |
| PX0717 | Report run - Summary field in Page Header |
| PX0722 | Toolbars - Reset Status Bar |
| PX0724 | Paradox Runtime - Preferences - Script Font |
| PX0725 | ObjectExplorer - Pin Explorer |
| PX0726 | Table Repair - Rebuild |
| PX0727 | ObjectPAL - Resource leakage - memo.readfromFile() |
| PX0728 | Form run - unsynchronized toolbar buttons |
| PX0729 | ObjectPAL - query.isExecuteQBELocal() |
| PX0730 | Non standard database drivers - MSSQL driver - NUMERIC datatype |
| PX0731 | ObjectPAL - Error - OLE object is not a collection object - oleAuto.first() and oleAuto.next() |
| PX0732 | Form / Report design - Format percent |
| PX0733 | ObjectPAL - GPV - popupMenu.show() |
| PX0734 | Form run - refresh of 1-1 linked tables |
| PX0735 | ObjectPAL - GPV - table.empty() |
| PX0737 | ObjectPAL Editor - pdxwin32.exe has generated an error - Developer Preferences - Cursor beyond EOL |
| PX0738 | Form design - GPV - saving a form |
| PX0739 | Form / Report design - GPV - Calculated fields |
| PX0741 | ObjectPAL - oleAuto.executeString() |
| PX0742 | ObjectPAL - GPV - oleAuto() |
| PX0743 | Import - QPW9 files |
| PX0744 | ObjectPAL - menuConstant MenuFormViewData |
| PX0745 | ObjectPAL - query type methods |
| PX0748 | ObjectPAL - memo.writetoRtfFile() |
| PX0749 | ObjectPAL - syntax error corrupts form |
| PX0750 | ObjectPAL - dmResync() and dropdown fields |
| PX0751 | Report run - printing single page |
| PX0753 | Basic syntax. Method keyword |
| PX0754 | Tables - Unique secondary index |
| PX0755 | ObjectPAL - dmGet() and MROs with nested layout |
| PX0756 | ObjectPAL - wantInMemoryTcursor() |
| PX0757 | Local SQL - GPV when joining |
| PX0758 | ObjectPAL syntax |
| PX0759 | Query - Aggregate when no rows are selected |
| PX0760 | Form run - Locate and Replace |
| PX0761 | Utilities expert |
| PX0762 | Report - Canceling the opening of a report |
| PX0763 | ObjectPAL - Try statement |
| PX0766 | ObjectPAL - locateNext() |
Description of the bugs
PX0026 QBE run - changeto queries
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 7.0 W95 | 11 Build 302 | True |
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: |
| Minor | 7.0 W95 | 11 Build 302 | True |
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: |
| Functionality | 7.0 W95 | 11 Build 302 | True |
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: |
| Functionality | 7.0 W95 | 11 Build 302 | True |
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: |
| Functionality | 7.0 W95 | 11 Build 302 | True |
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: |
| Functionality | 7.0 W95 | 11 Build 302 | True |
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: |
| Minor | 7.0 W95 | 11 Build 302 | True |
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: |
| GPV | 7.0 W95 | 11 Build 302 | True |
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: |
| Error | 5.0 | 11 Build 233 | False |
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: |
| Functionality | 5.0 | 11 Build 410 | True |
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: |
| Functionality | 7.0 W95 | 11 Build 302 | True |
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: |
| Functionality | 7.0 W95 | 11 Build 302 | True |
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: |
| Functionality | 7.0 W95 | 11 Build 302 | True |
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: |
| Error | 7.0 W95 | 11 Build 302 | True |
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: |
| Functionality | 7.0 W95 | 11 Build 302 | True |
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: |
| Functionality | 7.0 W95 | 11 Build 302 | True |
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: |
| Functionality | 7.0 W95 | 11 Build 302 | True |
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: |
| Functionality | 7.0 W95 | 7.0 W95 P4 | True |
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: |
| Error | 7.0 W95 | 11 Build 302 | True |
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: |
| Functionality | 7.0 W95 | 11 Build 302 | True |
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: |
| Functionality | 8.0 | 11 Build 302 | True |
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: |
| Functionality | 7.0 W95 | 11 Build 302 | True |
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: |
| Minor | 8.0 | 11 Build 302 | True |
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: |
| Functionality | 5.04 | 11 Build 302 | True |
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: |
| Error | 7.0 W95 | 11 Build 302 | True |
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: |
| Functionality | 7.0 W95 | 11 Build 302 | True |
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: |
| Minor | 7.0 W95 | 11 Build 302 | True |
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: |
| Functionality | 7.0 W95 | 11 Build 302 | True |
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: |
| Error | 7.0 W95 | Bde 5.2 | True |
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: |
| Error | 7.0 W95 | 11 Build 302 | True |
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: |
| Functionality | 7.0 W95 | 11 Build 302 | True |
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: |
| Functionality | 9.0 | 11 Build 410 | True |
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: |
| Error | 9.0 | 11 Build 302 | True |
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: |
| Functionality | 9.0 | 11 Build 302 | True |
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: |
| Functionality | 9.0 | 11 Build 302 | True |
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: |
| Functionality | 7.0 W95 | 11 Build 302 | True |
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: |
| Minor | 9.0 | 11 Build 302 | True |
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: |
| Error | 7.0 W95 | 11 Build 302 | True |
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: |
| Error | 7.0 W95 | 11 Build 302 | True |
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: |
| Minor | 9.0 | 11 Build 302 | True |
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: |
| Functionality | 9.0 P1 | 11 Build 302 | True |
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: |
| Minor | 9.0 P1 | 11 Build 302 | True |
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: |
| Error | 9.0 P1 | 11 Build 302 | True |
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: |
| Functionality | Bde 5.0 | Bde 5.2 | True |
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: |
| Error | 9.0 P1 | 11 Build 302 | True |
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: |
| Functionality | 9.0 | 11 Build 302 | True |
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: |
| Functionality | 8.0 | 11 Build 302 | True |
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: |
| Functionality | 9.0 P1 | 11 Build 302 | True |
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: |
| Functionality | 7.0 W95 | 11 Build 302 | True |
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: |
| Minor | 7.0 W95 P4 | 11 Build 302 | True |
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: |
| Minor | 9.0 P1 | 11 Build 302 | True |
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: |
| Minor | 9.0 P1 | 11 Build 302 | True |
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: |
| Minor | 9.0 P1 | 11 Build 302 | True |
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: |
| Minor | 8.0 | 11 Build 302 | True |
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: |
| Functionality | Bde 5.10 | Bde 5.2 | True |
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: |
| Functionality | 9.0 P1 | 11 Build 302 | True |
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)
WORKAROUND:
Change the code in the page - open to be:
doDefault
self.postAction(userAction)
And add code to page - action:
if eventInfo.id()=UserAction then
disableDefault
maximize()
menuAction(MenuPropertiesZoomFitWidth)
endif
To index
PX0391 Non standard database drivers - MSSQL driver - Identity columns
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 | Bde 5.2 | True |
SUMMARY:
the BDE SQL Link driver returns bogus values when querying an IDENTITY field on a MS SQL Server 6.5. It's supposed to return LONGINT, but it returns AUTOINC
DESCRIPTION:
BDE 5.01's SQL SERVER driver maps Identity fields to Autoinc, which makes it return bogus values... Had to use the ODBC driver instead.
Problem is still there in Bde 5.1
Reported by: Kasey Chang
Date: 25 July 1999
My comments:
Use Decimal instead of Int for those keys on MS SQL Server.
To index
PX0395 Form / Report run - Timestamp columns
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 5.04 | 11 Build 302 | True |
SUMMARY:
There is some inconsistency in handling timestamp columns in forms and reports.
In a form, you can create a calculated field and define it as date([table.Column]) and you get a correct result. In a report, you won't. In a report, you have to base the calculation on the uiObject. date(columnobject).
Examples: with a timestamp date of 1999-11-12 (yyyy-mm-dd), the value is shown as 14470-11-02 in a report when defined as date([table.column])
In a form, you can have a format() method, like st=format("TO(%D), DOS, DY3", dt)
In a report, it won't work. The result is all ****************
DESCRIPTION:
On a form, when I have a field bound to a datetime field in a table, I can use a calculated field to convert it to simply a date such as:
date([dtfield]) or dateval([dtfield])
and this seems to work fine.
However, if I try to do the same thing with a report, I get a garbage date as the result.
This seems to be the case with several versions of Paradox including, at least, 5, 8, and 9.
Reported by: Joe Humphreys
Date: 11 November 1999
WORKAROUND:
a) Use a format property.
b) Reported by: Ivica Kolar
12 November 1999
Use:
Date(DateTime([dtfield]))
To index
PX0396 Event model - init() event and dmAddTable()
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 8.0 P1 | 11 Build 302 | True |
SUMMARY:
When a table is added to a form's dataModel in the init event, and you later on in the code bind the table to a tableFrame in the form, the Ditto key won't work in the tableFrame.
COMMENTS:
I have tested placing the tFrame'tablename=.... as late as possible in the event chain. a postAction() from the form's arrive event, and even in a pushButton method, so it's not a question of timing.
If the table is in the datamodel but not bound to the tableFrame Ditto works.
SETUP:
Reported by: Ivica Kolar
Date: 11 November 1999
Problem:
Ditto malfunction after binding tableframe by ObjectPAL. Tests done on P8/9, only.
The simplest test template:
1. Design:
Build new blank form
put tableFrame but do not define the table i.e. keep it unbound.
2. Coding:
add table to datamodel and
Bind table to uiTableFrame in Init method.
doDefault
dmAddTable(":AliasIfNeeded:mytable.db")
uiTableFrame.TableName = "mytable.db"
3. Run the form:
Enter Edit mode,
Move to some record, other than first, do Ditto test.
My test result:
Ditto is ignored, even one activated by action(dataDitto).
To index
PX0399 Form run - unsynchronized toolbar buttons
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 P1 | 11 Build 302 | True |
SUMMARY:
When a form opens another form and waits on it, the toolbar buttons for View/Edit mode on the form waited on, will go out of synchronization with the actual mode.
SETUP:
Both forms have a table in the datamodel, and a field from the table shown.
Form A is default in View mode. Form B opens in edit mode.
On form B, place a button with code to switch between View and Edit mode depending on the mode.
Form A has a button to open Form B and wait() on it.
Run Form A. Stay in View mode. Press the button to open form B. Statusbar and Toolbar both says Edit. Use the Switch mode button. Statusbar reports View mode, but Toolbar stays in Edit mode. Make sure the Toolbar and Statusbar is in sync. Try to use the Toolbar to switch mode from View to Edit. Both buttons will be pressed.
To index
PX0457 Import - Excel - Excel3 format
| Type of error: | First verified: | Last tested: | Verified by me: |
| Error | 9.0 | 11 Build 302 | True |
SUMMARY:
Trying to import an Excel 3 spreadsheet, I get an [Could not read from file] message
DESCRIPTION:
I had Excel prepare a worksheet in version 3 format.
My Paradox version 9 failed to process it. Paradox 7 had no problem importing the worksheet, and then Paradox 9 could process the resulting table.
Reported by: Sven Pran
Date: 22 November 1999
COMMENTS:
From: Brian Bushay Ctech
This is a bug. Your excel worksheet need to be at version 5 or above.
To index
PX0458 ObjectPAL - tcursor.locate() after tcursor.setRange()
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 5.04 | 11 Build 302 | True |
SUMMARY:
Using tcursor.locate() after a range specified on the tcursor, has been modified with a tcursor.setRange() will place the tcursor on an incorrect record if locate specifies the same column and the same value before and after the range was modified. Read the setup example carefully, as the consequences of this behaviour are very serious for your application.
SETUP:
Code is based on Customer table in Sample directory. The table has a primary key on Customer No.
var
tc tcursor
endvar
tc.open(":SAMPLE:Customer")
tc.setRange(1000, 1500)
if not tc.locate("State/Prov", "St. Croix") then
msgInfo("Not found","")
tc.close()
return
endif
view(tc.Name + ";"+tc."Customer No"+ ";"+tc."State/Prov")
; Shows Tom Sawyer Diving Centre;1 356,00;St. Croix
; Now changing the range
tc.setRange(1510, 9000)
if not tc.locate("State/Prov", "St. Croix") then
; Locating the same value in the same column as above
msgInfo("Not found","")
tc.close()
return
endif
view(tc.Name + ";"+tc."Customer No"+ ";"+tc."State/Prov")
; Shows Ocean Paradise;1 510,00;HI
; which is the first record in the new range.
; It should be St. Croix Underwater Supply;2 975,00;St. Croix
If you add a tcursor.switchindex() before the second tc.setRange(), the problem does not occur
Originally reported by: Rene Hoppe
Date: 24 November 1999
WORKAROUND:
Add a tcursor.switchIndex() before every tcursor.setRange() to clear the effects of a prior tcursor.locate()
To index
PX0461 ObjectPAL - sleep()
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 P1 | 11 Build 302 | True |
SUMMARY:
sleep() inside a timer behaves differently in P9 than in previous versions. In P7, mouseDown() on a button would execute and could be used to cancel a loop started with another button, if the loop contained a sleep(). In P9, mouseDown() won't execute until the timer event is killed.
Reported by:
Bo Belhage
Date: 3 December 1999
Elmar von Muralt
Date: 14 March 2000
SETUP:
A form with two pushbuttons.
lgStopCounter logical is declared at form level, and initialized to FALSE in form level init event
Button 1
method pushButton(var eventInfo Event)
self.settimer(100,FALSE)
endMethod
method timer(var eventInfo TimerEvent)
var
li longint
endvar
for li from 1 to 4000
message("li = "+string(li))
sleep()
if lgStopCounter then
lgStopCounter=False
quitloop
endif
endfor
self.killtimer()
endMethod
Button 2
method pushButton(var eventInfo Event)
lgStopCounter = TRUE
endMethod
Press button 1. Loop starts. Press button 2. Nothing happens.
Even though timer loop contains a sleep(), the form does not handle the pushButton() event from button2 until the loop has finished.
MY COMMENTS:
A timer event, showing the time, does work in P9, when the loop with sleep() is used, but not when running a loop with no sleep().
WORKAROUND:
You can use a menuchoice to cancel the loop.
Form level arrive event:
method arrive(var eventInfo MoveEvent)
var
pop popupmenu
mnu menu
endvar
if eventInfo.isPreFilter() then
;// This code executes for each object on the form
else
;// This code executes only for the form
pop.addtext("&Stop",MenuEnabled,UserMenu+1)
mnu.addpopup("&Special",pop)
mnu.show()
endIf
endMethod
Form level menuAction()
method menuAction(var eventInfo MenuEvent)
if eventInfo.isPreFilter() then
;// This code executes for each object on the form
else
;// This code executes only for the form
if eventinfo.id() = UserMenu+1 then
lgStopCounter = TRUE
endif
endIf
endMethod
To index
PX0462 Form run - Auxiliary passwords in a 1-M form
| Type of error: | First verified: | Last tested: | Verified by me: |
| Error | 5.0 | 11 Build 302 | True |
SUMMARY:
Auxiliary passwords with limited rights to edit columns does not work in a 1-M linked form when the password makes master table readonly.
DESCRIPTION:
I'm using Paradox 5.0....
I cannot get password protection for fields in a multittable form to work properly. I want to allow the user to change only one field in the record. The Password Security dialog box seems to be set up correctly but I am not allowed to edit the field.
My password security scheme prevents me from editing detail records within a form.
EXAMPLE: I have two tables:
Table 1
Field1 A 10 (Key)
Table 2
Field1 A 10 (Key)
Field2 A 5 (Key)
Field3 A 5
Table 1 and Table 2 have referential integrity: The child (Table 2) is linked to the parent (Table 1) via Field 1 (Cascade – Strict Referential Integrity)
Password Security is as follows:
Table 1 'Guest' password has Read-only on all fields
Table 2 'Guest' password has Read-only on Field1 and Field2. Has Update on Field3
The 'Master' password has full access to both tables.
If I open Table 2 by itself, the passwords work perfectly. The 'Guest' password user can only update Field3
When I create a multi-table form displaying master record Table 1 and detail records Table 2, the following occurs:
1. When I use the 'master' password I can edit all fields in the detail record display.
2. When I use the 'guest' password and attempt to edit either Field1 or Field2, Paradox issues a "You cannot modify this field" message. Everything is OK so far.
3. When I use the 'guest' password and attempt to edit Field3, Paradox issues an "Insufficient table rights for operation. Password required" message. I should be able to edit this field.
Reported by: James Runde
Date: 3 December 1999
Verified by: Dennis Santoro
I can confirm the behavior in Paradox 7-32, 8 and 9. I have modeled your info below. Test1.db is the parent, test2.db is the child and test.fsl is the form with the linked tables. test is the master password and guest is the aux password.
It does not matter whether I just pick the update level for the table or explicitly set the fields as ReadOnly, ReadOnly, ALL. I still get the behavior which is not working as it is SUPPOSED to when on a linked form. I thought it might be a strange effect brought on by the RI but removing it does not change the effect.
WORKAROUND:
From: Darrell MacKay - Corel
Date: 24 December 1999
It would appear that the password from the first table is being used on the second table. For example if you change the password for the first table to update, you can modify the field. The quick solution would be to change the password for the first table to update and then set the rights for the individual field to Read Only.
To index
PX0467 Import - Delimited text - first column
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 7.0 W95 | 11 Build 302 | True |
PROBLEM:
Importing a delimited text file where first column contains a numeric integer value, will result in a Alpha column. Text file is using ; as separator and text fields delimited with quotes.
The text import expert will also suggest the column as Alpha even though the value is unquoted.
To index
PX0469 Tables - Table Corruption
| Type of error: | First verified: | Last tested: | Verified by me: |
| Error | Bde 4.51 | Bde 5.2 | True |
SUMMARY:
A)
When adding lots of records to a table with a compound primary key, it will become corrupted if the primary key is of a certain length.
B)
When the number of records increases in a table with 32KB blocksize, a corruption may occur.
SETUP:
A1)
When adding lots of records to a table with a compound primary key, it will become corrupted if the primary key is of a certain length.
Create a table named Px0469
MANDANT S *
ARTNR A20 *
LIEFERANT A4 *
KURZTEXTA A40
You can remove the primary key and add it afterwards instead.
File-type: Paradox 5, blocksize 4kB, landgriver:'ascii'ANSI, no secondary index
Now fill the table using the following code:
method pushButton(var eventInfo Event)
var
tc TCursor
i LongInt
endvar
tc.open("Px0469")
tc.edit()
for i from 10000001 to 10328031;; for generating articel' with 8 digits
message(i)
tc.insertRecord()
tc.mandant = 1
tc.artnr = string(i)
tc.lieferant = "ABCD"
tc.kurztexta = "1234567890123456789012345678901234567890"
tc.unlockRecord()
endfor
tc.endedit()
tc.close()
msgInfo("","328031 sets added to art2!")
endMethod
Afterwards the table is corrupted. When scrolling the table I get a message somewhere around record 265000: "Corrupt file - other than header.". Running TableRepair, the error is: "BTree record number mismatch from block < > record < > to block< >.".
Even when I remove the primary key before adding the records, and add it afterwards, I'll get the error when the table is keyed.
If I shorten the Artnr field to A12 the corruption won't occur.
Using a Paradox 7 table with a 16KB blocksize will also prevent the corruption.
I have used Bde 4.51 and Bde 5.10 (5.11)
Original problem reported by: Uwe Thiel
Date: 23 December 1999
DESCRIPTION:
A2)
I use a Paradox table, which contains 445464 records. A record contains 12 fields. (a paradox 5 table, used with Database Desktop 7)
The primary index is quity large:
Long
Long
Short
Alpha 1
Alpha 2
Date
Date
Non-indexed fields:
Date
Short
Logical
Logical
Short
I got a the error that my primary index was corrupt. So I created a new table, and inserted all data in the second table.
I created a primary index on the table again, and my second table now was also corrupt.
I deleted the primary index, and created it again. Corrupted.
There seems to be no way I can create my primary index.
If I delete 1 field from my table (the last field, a short), I can create a primary index again. No corruption occurs. If I add the short again, the corruption is back. If I change a long to a short, the primary index is OK again. There seems to be some boundary with a 32 bytes recordsize (WITH the short, it's 33 bytes).
Reported by: D. van Rietschoten
Date: 25 October 1999
MY COMMENTS:
Verified when adding 400 000 records to a 2KB table and then creating the primary key.
DESCRIPTION:
B1)
I am creating a Paradox version 7 table, with a block size of 32k (so it can go up to 2 GB). I am then copying record by record from a data table to this result table. This result table when created has a primary index (on a long integer field in which all I am doing is inserting the record number) and a secondary index (on 3 fields). The dataset is about 1 million records and the result table comes to about 110MB. When I try to look at the table, the sort order (which is based on the primary index) is wrong - the numbers are not sorted. Sometimes I cannot even look at the result table if I just grab the scroll bar and go to near the end of the table - all that is displayed is a blank screen where the table was. If I delete the primary index and secondary indexes in the Windows Explorer I can view the table properly, but even when I add the primary index back on manually it has the same issue.
I have used Paradox v8 (with SP1) and Paradox v9 (with SP3) and get the same results. I am using the BDE 5.01 with the 5.1.1 patch. It is running on an NT4 with SP6 PC.
Reported by: Chris Seah
Date: 26 October 2000
B2)
32 KB blocksize tables gets corrupted and the primary key cannot be recreated when number of records increases.
The table structure is as follows
Col1 I *
Col2 A6
Col3 A2
Col4 A15
Col5 D
Col6 S
Col7 N
Col8 N
Col9 N
I have done some tests with the table. I can add 400 000 record. But when I add another 200 000, I get a corrupt table. I can remove the primary key, but I cannot add it back. Table gets corrupted at once. Running Table Repair does not help.
It's one of them 32KB blocksize problems.
Changing the blocksize to 16KB is a workaround. I have added 1 800 000 records to the 16KB table.
Tested in Paradox 9 SP4 with Bde 5.11.
Reported by: Bertil Isberg
Date: 31 October 2000
To index
PX0470 ObjectPAL - table.reIndex() and Write Lock
| Type of error: | First verified: | Last tested: | Verified by me: |
| Error | 9.0 P2 | 11 Build 302 | True |
SUMMARY:
When a table with no primary key, but with a non-maintained case sensitive index, is emptied with a Write lock specified, and later on records are added and the table is reindexed, switchIndex() will fail with an "Index out of date" errormessage.
If the table is emptied with a Full lock, the problem does not occur.
SETUP:
Create a table with two A10 columns named ThingOne and ThingTwo. No primary key. Add a secondary non maintained case sensitive index on column ThingTwo.
If the table is emptied with a Write lock specified and later on records are added and the table reindexed, switchIndex() will fail with an Index out of date errormessage.
var
tc tcursor
siCount,siInner smallint
stLockState string
lgContinue logical
tbl table
endvar
lgContinue=True
stLockState=string(fldLockState'value) ;lock state Full/Write
tbl.attach(":Buggar:Px0470")
if tbl.lock(stLockState) then
tbl.empty()
tbl.unlock(stLockState)
tbl.unattach()
else
msgInfo("Could not lock the table with a "+ stLockState + " lock.", "")
lgContinue=False
endif
if lgContinue then
; reindex before adding new records
sleep()
errorTrapOnWarnings(Yes)
try
tbl.attach(":Buggar:Px0470")
tbl.setexclusive(yes)
tbl.reindex("ThingTwo")
tbl.setexclusive(false)
tbl.unAttach()
onfail
errorShow("Reindex after empty","")
lgContinue=false
endTry
errorTrapOnWarnings(No)
endif
if lgContinue then
; Add new records
tc.open(":Buggar:Px0470")
tc.edit()
for siCount from 97 to 122
for siInner from 97 to 122
tc.insertrecord()
tc.thingone="a"+chr(siCount)+chr(siInner)+"1"
tc.thingtwo="a"+chr(siCount)+chr(siInner)+"2"
tc.unlockrecord()
endfor
endfor
tc.endedit()
endif
if tc.isAssigned() then
tc.close()
endif
if lgContinue then
tbl.attach(":Buggar:Px0470")
tbl.setexclusive(yes)
if tc.open(tbl) then
errorTrapOnwarnings(Yes)
try
tc.reindex("ThingTwo")
tc.switchindex("ThingTwo")
onfail
errorShow("Reindex after records added","")
lgContinue=False
endtry
else
msgInfo("Cannot open Px0470 with Exclusive Lock","")
lgContinue=False
endif
endif
if lgContinue then
if tc.qlocate("abb2") then
msginfo("located value","abb2")
else
msginfo("failed to locate value","abb2")
endif
endif
if tc.isAssigned() then
tc.close()
endif
if tbl.isAssigned() then
tbl.setexclusive(false)
tbl.unattach()
endif
Paradox errormessage is: An error was triggered in the 'SwitchIndex' method of an object of 'tCursor' type.
Reported by: Henry Davie
Date: 23 December 1999
To index
PX0471 Documentation Expert
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 | 11 Build 302 | True |
SUMMARY
If a table you want to document using the Documenation Expert has more than 61-65 fields, the expert will create a blank report.
This is partly fixed in P9 Sp4. There are still some reports, eg Quick Reference which does not work.
Reported by: Walter Burbach
Date: 14 December 1999
To index
PX0473 TableStructure dialog - Referential Integrity
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 | 11 Build 302 | True |
SUMMARY:
When defining referential integrity between two 1-1 linked tables, a secondary index is created on the primary key field in the child table.
SETUP:
You have two tables with structures like
Master
Id - S *
V1- S
and
Child
Id - S *
V2- S
When you define referential integrity from the Child to the Master, a secondary index is created on the Id column. This did not happen in earlier versions of Paradox.
To index
PX0477 Event model - menuAction(menuCanClose) and hidden Desktopform
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 P2 | 11 Build 302 | True |
SUMMARY:
A hidden desktopform with property Desktopform=true, opened by a script, will not receive a menuCanClose, when the upper right X button=Close Application is used. This behavior is changed since Paradox 8. MenuCanClose from File | Exit will be sent to the desktop form, though.
SETUP:
Using Alt+F4 (or Close from Paradox title bar or menu or X button), DesktopForm doesn't receive MenuCanClose menuAction.
Steps:
1. Open a new form.
1.1 Set DesktopForm property to True.
1.2 Replace menuAction() method at form level with:
method menuAction(var eventInfo MenuEvent)
if eventInfo.isPreFilter() then ; This code executes for each object on the form.
else ; This code executes only for the form.
if eventInfo.id() = MenuCanClose then
if msgYesNoCancel("Exit","I got you!\n\nExit?") <> "Yes" then
eventInfo.setErrorCode(CanNotDepart)
endif
endif
endif
endmethod
1.3 Save form as DTF.FSL.
2. Create a new script with contents:
method run(var eventInfo Event)
var
f Form
endvar
f.open( "DTF", WinStyleDefault + WinStyleHidden )
;; f.show() ;see step 4
f.bringToTop()
endMethod
2.1 Save script as DTF.SSL.
3. Run DTF.SSL
3.1 Press Alt+F4 Paradox closes silently i.e. WITHOUT triggering DTF.menuAction() first.
4. Start Paradox, Open DTF.SSL.
4.1 Uncomment line f.show().
4.2 Save changes.
5. Run DTF.SSL
5.1 Press Alt+F4 DTF.menuAction() fires as expected.
So, workaround for above is using f.show() before f.bringToTop().
Note: If not already, apply SP3 at least.
Reported by Ivica Kolar
Date: 22 March 2001
DESCRIPTION 1):
1. When application's DesktopForm is called by script and
2. If User invoke Close from P9 title bar (MenuItem:Close or X button or Alt-F4)
then DesktopForm can not get control over closing process.
Workaround:
Don't use script for starting application, use DesktopForm instead.
Note:
That is not the problem with P7/8.
I am curious why closing of P9 will not result with MenuCanClose in DTF. Is that a WAD or something else?
Assumed sequence is:
StartupScript:
method Run()
....
open(DTF) ;Note: DTF is not hidden in my case.
endMethod ;Notice that after starting DTF script is closed.
From: Ivica Kolar
Date: 6 January 2000
DESCRIPTION 2):
I wish to prevent the user from exiting paradox, when the user pushes "menucontrolclose" at the desktop window. How do I catch the MenuFileExit event and how do I stop it.
...
Playing a little more:
If I open my form the projectviewer: No Problem
If I open my form from another form: No Problem, unless
If I open my form from another form using WinStyleDefault+WinStyleHidden: Big Problem, when I close down, i.e. MenuCanClose is not called at all ?????
This must be a bug !
First: MenuControlClose is not called, when you close Runtime using the application close command, i.e. calling Exit, in contrast to using the current forms close command.
Second: My application uses a couple of DLLs that needs to be quit properly, which I do in the current form, which is why I cannot use a "brute force" closedown.
Third: If there is a dialog open, opened from my current form, which is then in "wait()" state, I get a General Protection Error, if there is used "brute force" closedown.
Fourth: It does seem like a bug that the way the form is opened (with WinStyleDefault+WinStyleHidden, with following show()) dictates the closedown events different from normal procedure/event flow.
Fifth: It didn't use to be like this in neither P7 or P8.
From: Bo Belhage
Date: 13 March 2000
COMMENTS BY: Ivica Kolar
Assuming Paradox 9
I can agree, there is some bug with MenuControlClose event bubbling/dispatching.
I have the following situation:
When app's DesktopForm is called by script and if user invoke Close from P9 title bar (MenuItem:Close or X button or Alt-F4) then DesktopForm can not get control over closing process.
Workaround for above:
Instead of Script calling DesktopForm for starting application used is DesktopForm calling Script.
Note: My DesktopForm is not hidden.
To index
PX0482 Form run - Font.typeface in a formatted memo field
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 P2 | 11 Build 302 | True |
SUMMARY:
Changing the font.typeface property in a formatted memo field, will also change the font.style. If a part of the text in italic style, it will be changed to normal style. If all the text is in italic, font.style will not be affected.
SETUP:
I have a formatted memo field displayed on a form. Within the field are some characters in italics and some in a regular font. I have a pushbutton on the form to change the typeface (for example, from Times New Roman) to Arial. The code for the pushbutton looks like:
TotalRef.moveTo()
TotalRef.edit()
TotalRef.action(EditEnterFieldView)
TotalRef.action(SelectSelectAll)
TotalRef.font.typeface = "Arial"
In Paradox 8 this works fine.
In Paradox 9 (with SP2) it does not work properly. What happens is that the characters in the field are changed so that all are in italics or all are in non-italics characters. I.e., the italic property of some of the characters is changed when I try to change the typeface of the whole field. This appears to be a bug (yet another bug of something that worked in version 8 but doesn’t work in 9).
Reported by: Harry Jay Nelson
Date: 14 January 2000
To index
PX0483 Tables - Creating secondary indexes
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 P2 | 11 Build 302 | True |
SUMMARY:
Interactively, there is a rule for naming an index with same name as the column. It has to be non-composite, non-unique and case sensitive. The rule for creating an index with a different name is the same (or the opposite). It must not be non-composite, non-unique and case sensitive.
ObjectPAL seems to ignore the non-unique, and looks only at case insensitive when creating a index with a different name.
DESCRIPTION:
Paradox9 SP2 (build 512)
Task
The need is to "in code" create a unique secondary maintained index on a single field and use an index name "other than" the field name.
Interactive - works fine, everytime, no problems
ObjectPal
CreateIndex - Using the code in the help (with field/table name different only) on a single field with a different or SAME index name. Does not create an index, throws no error..
CreateIndex Struct - Again using code in the help (same difference) creates index when index and field name is identical, shows error on status bar "Can't create Index" if field and index name is different
SQL Create Index - works all the time, everytime
Reported by: John B. Moore
Date: 10 October 2000
COMMENTS
By: Bertil Isberg
I agree there is an inconsistency between interactive Paradox and ObjectPAL.
Interactively, there is a rule for naming an index with same name as the field. It has to be non-composite, non-unique and case sensitive. The rule for creating an index with a different name is the same (or the opposite). It must not be non-composite, non-unique and case sensitive.
ObjectPAL seems to ignore the non-unique, and looks only at case insensitivity when creating an index with a different name.
The examples you showed works for me according to the rules specified above. I'm running on Win95.
I also get false return from createIndex() when I test your examples.
From: John B. Moore
Interactive - Curiously Interactive indexing seems to have "rules" of its own. The following variations were found..
1) It will not allow a Unique, Maintained, CaseSensitive Index on an index with the same name as the field (contrary to Index Struct)
2) It WILL allow a Unique, Maintained, CaseSensitive index on an index with a different name as a field (contrary again to Index Struct)
3) It WILL allow a Maintained, CaseInSensitive index on an index with the same name as the field (contary again to Index Struct and in violation of rule #2)
Say, I just went and tested it on Win98 and there the exact same code does work, still does not work on NT. Therefore I may be an NT problem..
FIXED IN P9 SP3
Paradox 9 lets you do some of what Paradox8 will not. That is, create a secondary maintained non-unique [case insensitive - my comment] index using the same name as the field.. but still will not allow a unique index under those conditions.
DESCRIPTION - FIXED IN P9 SP3:
Noticing an inconsistency on creating secondary indexes between Paradox8 and Paradox9.. and vs ObjectPal code on both. Try the following.
Create a table named "keytest.db" as follows.
Indxfld...........A3*
Afield............A3
SecIndex..........A3
In Paradox8 create a secondary Maintained "Non-Unique" index on "SecIndex" field and NAME it "SecIndex" It will not let you create a secondary index with the same name as the field. You will get: "Field names are reserved for automatically named single field indexes"
If you try to make it "unique" it will throw the same error.
Now cancel out and try the same in Paradox9. Paradox 9 lets you do some of what Paradox8 will not. That is, create a secondary Maintained non-Unique [case insensitive - my comment] index using the same name as the field.. but still will not allow a Unique index under those conditions.
Now place the following code in a form button..(copied from the example in the help)
method pushButton(var eventInfo Event)
var
tbCust Table
stTbName String
tcCust TCursor
arFieldNames Array[1] String
dyAttrib DynArray[]AnyType
endVar
stTbName = "Keytest.db"
arFieldNames[1] = "SecIndex"
dyAttrib["UNIQUE"] = True
dyAttrib["MAINTAINED"] = True
dyAttrib["IndexName"] = "SecIndex"
if isTable(stTbName) then
tbCust.attach(stTbName)
tbCust.setExclusive()
if tcCust.open(tbCust) = False then
msgStop("Stop!", "Can't lock " + stTbName + " table.")
return
endif
tcCust.createIndex(dyAttrib, arFieldNames)
else
msgStop("Stop!", "Can't find " + stTbName + " table.")
endif
endMethod
Notice that the Index name is "SecIndex" and the field has the same name. BOTH Paradox9 and Paradox8 will now allow you to create a maintained Unique secondary index using the same name as the index were it would not in interactive.
What started this puzzle is that a client wrote some code like the above and it worked for a week or so, then begain failing with "will not allow .." type error.. suddenly it began working again when I came over to test it and find what changed.. Now it's working again..
Reported by: John B. Moore
Date: 24 January 2000
MY COMMENT FIXED IN P9 SP3:
You can create a non-maintained case-sensitive index with name SecIndex. When defining RI, this index will automatically be made maintained.
You can create a maintained case-insensitive index with name SecIndex. When defining RI, this index won't be made case-sensitive.
When changing values in the master table, you will get a warning "key group is locked", or a GPV, or the changed value is not cascaded to the child.
Changing values in the child, can cause a GPV.
To index
PX0484 Export - Fixed text - custom specification
| Type of error: | First verified: | Last tested: | Verified by me: |
| ExitParadox | 7.0 W95 P4 | 11 Build 302 | True |
SUMMARY:
A fixed length ASCII export will cause a Invalid Page Fault in Kernel32.dll (or Idasci32.dll) and shut down Paradox when exporting a number field to a width of three or less characters wide, while one or more of the records being exported has a value of zero in the field that is to be 3 or less characters wide. This does not happen if the field has a blank value, only zero causes Paradox to crash. This can only happen if you are using a customized specification table.
Error may vary depending on OS. On Win 2000 SP4 , I'm thrown out of Paradox with no error at all.
SETUP:
This is easy to reproduce: Open the LineItem table from any of the Sample folders that install with Paradox (such as FWSample). On any record change the value of the Qty field to zero. Open the export dialog and specify exporting the LineItem table as ASCII fixed. Click the "Save Spec..." button and save the specification to whatever table name you wish. Close the export dialog. Edit the specification table by changing the value of the Length field of the Qty record to 3 (or less). Reopen the export dialog and once again specify exporting the LineItem table as ASCII fixed but click on the "Load Spec..." button and load the specification table discussed above. Click on the Export button and exit Paradox.
If this doesn't behave as described, I don't know what is peculiar to my computers that causes it to happen here and not elsewhere. I can get this to occur in 98 and NT.
Reported by: Dan Richardson
Date: 27 January 2000
My comments:
In Paradox 7, the GPV in Kernel32 did not occur during export but later on when eg trying to create a new query.
My comments 2004 - Oct:
With current version of Win 2000, I cannot reproduce the IPF. Paradox is closed down silently in all versions, P7, P9, P10, and P11.
To index
PX0485 Form run - refresh of 1-M linked tables
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 7.0 W95 P4 | 11 Build 302 | True |
SUMMARY:
If I go into edit on a child table on a form with a 1-M relation in the datamodel, while another network user has a record lock on the master table, locking the child record a second-or-two after unlocking the master, causes the child tableframe to scroll up and insert a blank record at the foot of the table instead of changing the record I was on.
DESCRIPTION:
I have a problem that occurs on a form with a master and child table. It involves network refreshes.
If I go into edit on the child table on the form while another network user has a record lock on the master table, locking the child record a second-or-two after unlocking the master, causes the child tableframe to scroll up and insert a blank record at the foot of the table instead of changing the record I was on.
Paradox 9 + WinNT4SP4 but appears to do it with Paradox5 as well.
For more depth I have done the following:
Set up two tables on the network (NW4.2SBE + NT4SP4 + Paradox9/BDE 5.01):
Master.db
MasRef I Key
MasDescr A40
Child1.db
Child1Ref I Key
MasRef I with or without RI to Master.db but with SI
Child1Descr A40
Enter two records of data in Master.db
Enter some child data against each master record
Create a form with Child1 as detail to Master (can be MRO or TableFrame )
On workstation 1 open master.db in tableview press F9, F5 to lock first record.
On workstation 2 open form and click on any child table record then press F9 to edit.
Now press F9 on ws1 and F5 on ws2 with a gap of about 1 second. Ws2 child table scolls up and leaves you on a blank record.
I believe there have been times when I have not been able to make it fail but it appears very consistent at present.
I have tried:
Moving the network lock file
Removing RI
Removing Lookup
Turning off Auto Append/Strict translation
With/without directory aliases
Rebooting machines
without success.
In trying to give you solid info, I have just tried some more tests and it looks as if it only happens when the record is in the top two rows of the tableframe! This suggests a tableframe object problem.
Reported by: Chris Harwood
Date: 27 January 2000
MY COMMENTS:
I can only see this when selecting first record in the master table, and second or third row in detail table.
With Master table shown in a separate form, I have to edit the master record for the problem to show up.
I run Win95, with two instances of Paradox on same PC. I have tried it with P8 and P9 and data stored on the PC, and with P7 and P9 with data on a networked drive.
Workaround - Feb 2004:
Add code to the record object in the detail table - the action event
if eventInfo.id()=DataArriveRecord then
if upper(active'tableName)="DETAILTABLENAME" then
if isEdit() then
MASTER.lockrecord()
endif
endif
endif
if eventInfo.id()=DataBeginEdit then
doDefault
MASTER.lockrecord()
endif
Comments: A similar problem involving a 1-M-M datamodel between three tables was reported by Luc Kumps in April 2004.
Comments by Denn Santoro to the workaround above :
That works for me too in the record object action. Not in the TF or MRO's. Also in the form action else clause with or without the active.tablename test. So that might be a good generic version too.
Another workaround to Luc's problem suggested by Denn Santoro:
Here is what I came up with that works. In the prefilter or the else of the form action or in the record object (not the MRO or TF) action:
if eventInfo.id()=DataLockRecord then
;//make the refresh happen now
active.forcerefresh()
;//the sleep needs a value in the ()
sleep(1)
;//force the refresh again now that the character you type should be there
active.forcerefresh()
endif
And in the for the form section of the form action:
if eventinfo.id() = DataEndEdit then
setDesktopPreference(prefProjectSection, prefRefreshRate, 60)
endif
if eventinfo.id() = DataBeginEdit then
setDesktopPreference(prefProjectSection, prefRefreshRate, 1)
endif
This will, of course, leave you at a 1 second refresh rate so long as you are in edit mode. This could be a problem on some networks. I'm not sure. Of course you can just set your refresh rate to 1 permanently too and skip the edit tests.
To index
PX0487 Query Expert - Directory specification
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 P2 | 11 Build 302 | True |
SUMMARY:
If you, using the keyboard, enter a new directoryname without a backslash at the end (e.g. "c:\test") in the Query expert on the first dialog page, and clicks on Next, the expert doesn't display the fields in the selected table.
SETUP:
Paradox 9
Steps to reproduce:
1 Start the Query-Expert
2 Enter a new database path manually without a backslash at the end.
3 Click on next.
4 The tables in the new directory are correctly displayed. (Bertil Isberg: NOT FOR ME)
5 Select a new table from the combo box.
-> The fields of the table are not displayed.
6 Click on the Button Back
7 Add the backslash at the end of the new database path.
8 Click on next.
9 The tables in the new directory are correctly displayed.
10 Select a new table from the combo box.
-> Now the fields of the table are correctly displayed.
Reported by: Dieter Gerblinger
Date: 1 February 2000
To index
To index
PX0490 ObjectPAL - toolbar.addButton() - Toolbarbuttontype
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 P2 | 11 Build 302 | True |
SUMMARY:
Three toolbarbutton types does not work, ToolbarButtonRadio , ToolbarButtonRepeat, ToolbarButtonToggle. Maybe they should be removed as available types.
Menuconstant MenuFormViewdata will make the button be of type ToolbarButtonToggle no matter which type is specified. It will show as pushed when form is in View mode. Button cannot be used to enter edit mode.
Menuconstant MenuFormEditData will make the button be of type ToolbarButtonPush, no matter which type is specified. Button will not stay pushed.
DESCRIPTION AND SETUP:
5 - Adding a ToolbarButtonRadio causes a GPV. Maybe a bug. (No GPV in Paradox 10-11)
6 - Adding a ToolbarButtonRepeat : the specified menuAction does not repeat, it occurs only 1 time. This worked well with Paradox 7.32
7 - Adding a ToolbarButtonToggle : the button does not display pushed/unpushed. This also worked well with Paradox 7.32
Following is my test code :
method run(var eventInfo Event)
var
tb toolbar
endvar
if tb.attach( "Test" ) then
tb.remove()
endif
if tb.create( "Test" ) then
try
;Adding a repeat-button : the button displays well, but does not repeat itself
tb.addButton( ToolbarModeCluster, ToolbarButtonRepeat,
MenuRecordFirst, BitmapDataBegin, "" )
tb.addButton( ToolbarModeCluster, ToolbarButtonRepeat,
MenuRecordFastBackward, BitmapDataPriorSet, "" )
tb.addButton( ToolbarModeCluster, ToolbarButtonRepeat,
MenuRecordPrevious, BitmapDataPriorRecord, "" )
tb.addButton( ToolbarModeCluster, ToolbarButtonRepeat,
MenuRecordNext, BitmapDataNextRecord, "" )
tb.addButton( ToolbarModeCluster, ToolbarButtonRepeat,
MenuRecordFastForward, BitmapDataNextSet, "" )
tb.addButton( ToolbarModeCluster, ToolbarButtonRepeat,
MenuRecordLast, BitmapDataEnd, "" )
;Adding a toggle-button : the button does not appear being "pushed"
tb.addButton( ToolbarModeCluster, ToolbarButtonToggle,
MenuFormFieldView, BitmapFldView, "" )
tb.addButton( ToolbarModeCluster, ToolbarButtonToggle,
MenuFormEditData, BitmapCoEdit, "" )
tb.addButton( ToolbarModeCluster, ToolbarButtonToggle,
MenuFormViewData, BitmapCoEdit, "" )
; ToolbarButtonRadio --> GPV
tb.addButton( ToolbarModeCluster, ToolbarButtonRadio,
MenuFormEditData, BitmapCoEdit, "" )
onFail
errorShow()
endTry
endif
endMethod
Originally reported by: David Chantoiseau
Date: 3 November 1999
To index
PX0491 Form run - Notebook object and Tooltip
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 | 11 Build 302 | True |
PROBLEM:
I have a button with a tooltip, placed on a page of a notebook. If I move to one of the other pages and hover the cursor over the area where the button is behind, the tooltip show up!
This doesn't happen for every page in the notebook.
It only happens until cursor is moved over an area containing a tooltip on second page. Then the incorrect tooltip disappears.
Reported by: Robert Kyles
Date: 25 February 2000
To index
PX0492 Form open - replacing a table in datamodel
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 7.0 W95 | 11 Build 302 | True |
PROBLEM:
When prompted to replace a table in the data model because it's not in the working directory, my choices are tables (*.db) and queries (*.qbe), but not sql (*.sql).
Reported by: Carolyn Kay
Date: 3 March 2000
To index
PX0495 Visual Query Builder - Passwords
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 | 11 Build 302 | True |
PROBLEM:
If you create a new SQL query based on a remote database, you are asked for the password when you select the Alias and then once again when you select a table
To index
PX0496 Event model - mouseExit() and tableframe
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 7.0 W95 | 11 Build 302 | True |
PROBLEM:
A form contains a box with a table frame in it. Moving the mouse to the table frame's scollbars, mouseExit() for the box is triggered.
Reported by: Curtis Feger
Date: 20 March 2000
To index
PX0500 Form run - DataModel - 1-1 linked tables
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 P2 | 11 Build 302 | True |
SUMMARY:
Assume a form's datamodel contains 3 tables - A1,A2,A3 and both A2 and A3 are linked to A1 as 1-1. So, we have two 1:1 relationships. A2 is readonly (in datamodel), A3 - read/write (readonly flag dropped in datamodel). In such a form, the form behaviour depends on what table (A2 or A3) was linked to A1 first. If it is A2 (read-only) - strange behaviour, if A3 - all OK.
DESCRIPTION AND SETUP:
Reported by: Vladimir Menkin
Date: 23 March 2000
Assume a form's DataModel contains 3 tables - A1,A2,A3 and looks like the following:
A1--->A2
|
--->A3
So, we have two 1:1 relationships. A2 is readonly (in DataModel), A3 - read/write (readonly flag dropped in DataModel). A1 contains two records. A2 contains ONLY one record, corresponding to the first record of table A1. A3 contains two records (so each record in A1 has corresponding record in A3). Now place one tableframe with fields from all 3 tables, run form and try to edit fields from the table A3. If there are corresponding records in all 3 tables - all OK, but if A2 doesn't contain corresponding record - OOPS! You change a field in A3 (note, A3!), press enter and the OLD value reappears! If you remove readonly flag for A2 in DataModel, all becomes OK.
Some further investigations gave that the form behaviour depends on what table (A2 or A3) was linked to A1 the first. If it is A2 (read-only) - strange behaviour, if A3 - all OK.
COMMENTS:
From: Bertil Isberg
I unlinked a2 and relinked it and I changed the order of the columns in the frame.
To index
PX0505 Form run - IPF instead of Stack Overflow error
| Type of error: | First verified: | Last tested: | Verified by me: |
| ExitParadox | 9.0 P2 | 11 Build 302 | True |
SUMMARY:
In Paradox 7 and 8 you would get an error Stack Overflow if your methods were nested too deeply, e g if you were using recursive calls with no controlled way of stoping the calls.
In Paradox 9 and later versions, in some cases you'll get a IPF, or Paradox is closed down silently with no message at all.
DESCRIPTION:
Just created a couple of routines that called themselves - basically a recursive loop. FWIW, I used 3 methods to make sure that the compiler didn't optimise the test right outta existence
Running in Paradox9, both sets of routines iterated 1499 times before failing. Didn't notice an appreciable performance hit, although I'm running on a fast machine with plenty of resources.
I modified the form. The foo routines use try blocks and open a TCursor, the boo routines use try blocks and just assign a number. The fool routines just open a TCursor, the bool routines just assign a number.
Note: Each test was performed immediately after a reboot.
Results:
Proc Iterations Error On Exit
Paradox 7 - ( my comment- Bertil)
Similar to Paradox 8 but both tcTry and tcNoTry give a msgStop() and there are no problems closing down Paradox.
Paradox v8, SP1
foo tcTry 1503 MsgStop:Can't open GPV
fool tcNoTry 1386 Invalid Page Fault --
boo nTry 2442 Stack overflow clean
bool nNoTry 2521 Stack overflow clean
Paradox v9, SP1, SP2, Shlwp9en
foo tcTry 1499 MsgStop:Can't open clean
fool tcNoTry 1528 MsgStop:Can't open clean
boo nTry 2447 GPV, Stack Overflow No response, reboot req'd
bool nNoTry 2526 GPV, Stack overflow No response, reboot req'd
(MY COMMENTS: I don't get a StackOverflow message in P9. Neither do I get No response when I use the OK button on the GPV dialog. )
I didn't bother to flow Paradox8 much, since there will be no more changes, but I did play around with Paradox9. The foo routine worked great - recovered itself and ran several time consecutively without problems. ALL other routines failed! Even the boo routines which _should_ have been fine considering that they used the try blocks.
Reported by: Eric Frohmann
Date: 20 March 2000
To index
PX0506 ObjectPAL - Resource leakage - fileSystem type methods - isFile()
| Type of error: | First verified: | Last tested: | Verified by me: |
| Resource | 8.0 | 11 Build 302 | True |
SUMMARY:
A resource leak concerning filehandles is caused by the use of the method isFile(). Every call to isFile() increases the resources used as reported by Win2000 Task Manager.
SETUP:
Doing tests:
Test PC:
1. Win98, 56MB RAM, P8
2. Win98, 64MB RAM, P9+SP3
Test script:
method run(var eventInfo Event)
var
fs filesystem
ii longint
af array[] string
endvar
errorTrapOnWarnings(Yes)
try
for ii from 1 to 1000
; fs.findfirst("c:\\*.*") ;Test 1.
; fs.enumfilelist("c:\\*.*", af) ;Test 2.
isFile("c:\\config.sys") ;Test 3.
message(ii)
endfor
message("DONE")
onFail
errorShow()
endTry
errorTrapOnWarnings(No)
endMethod
My test results:
Each pass of Test line n, 1 or 2 or 3, opens another file handle, i.e. 1000 handles in above example.
Closing Paradox, handles are released through 1000 calls to Kernel32:FindClose.
Warning:
Increasing #_of_Iterations more problems can be expected, for example: closing Paradox Win98 can became 'frozen' for several minutes...
Workaround:
None.
By the way, P9 SP3 solves similar 'handle issue' noticed delivering forms by script (P8/9 & Win98).
Reported by: Ivica Kolar
Date: 9 May 2000
DESCRIPTION 1:
From: John Corkill
Date: 21 April 2000
Subject: EnumFileList, IsFile do not release resources
In converting a form from Paradox5 to Paradox9 a resource leakage 'issue' has been uncovered. The form needs to run 24/7 and checks various paths on the network for request files in a timer event. The Paradox5 version has run fine for years under WIN95. The Paradox9 version I first tried running on WIN98 but response time would gradually degrade until after a day a reboot was the only thing left to do. So figuring a memory leak I loaded NT server and ran it... same thing. The leak turns out to be not memory directly but handles ( don't know what type of 'handle', file handle or window handle) with the functions IsFile and EnumFileList
this can be verified by putting this code in a pushbutton event and watching the Handles value in the Performance tab in the NT task manager. Each button push will grow handles
var
fs filesystem
fFiles array[] string
endvar
fs.enumFileList("C:\\Program Files\\*.*:,fFiles)
fs.enumFileList("C:\\Program Files\\*.*","listTable.db")
; both varieties of enumFileList have the same behavior
b = isFile("C:\\Config.sys")
Closing Paradox (not just the form) returns all the resources
Interestingly the functions IsDir, FindFirst and FindNext appear to be OK , so my workaround will be to use these
Later on...
I had hoped to workaround the EnumFileList bug by using FindFirst, FindNext but now it seems that fs.FindNext() has the same leakage problem (but not FindFirst).
Verified by: Michael Irwin [CTech]
Verified on Win NT Server and Win NT Workstation, both at SP 6a level.
DESCRIPTION 2:
From: Remarkh
Date: 20 April 2000
Paradox 5 and 9
There appears to be a problem with the findfirst() method. Run this script and watch from Task Manager as it eats up memory it never gives back:
method run(var eventInfo Event)
var
fs filesystem
i smallint
endvar
for i from 1 to 10000
; message(isDir("c:\\temp\\")) ;no leak
; message(fs.findnext("c:\\temp\\*.*"));smallleak, uses 1 handle
message(fs.findfirst("c:\\temp\\*.*"));big leak, slow, uses handle
endfor
endmethod
I am working with Paradox 5.0 and figured it must have been fixed since then, right? I ran the same script in Paradox 9 and got the blue screen of death as it used not only memory but many file handles that it never gave back.
Findfirst() seems to load the contents of your directory into memory but never frees it. I have an application that polls for files where the user may specify "*.TXT" or similar. I can use findnext(), but this only leaks at a slower rate. IsFile() seems to be fine, but you can't use wildcards.
From: Remarkh
I found a suitable alternative to findfirst() and findnext() methods: use filesystem:: EnumFileList. This puts the files into your own array which you can loop through or whatever. When you delete the array, it appears to free the memory, and it gives back the file handle too. I encourage any of you to try this test on other methods they have, particularly those that loop many times, and let the others on this newsgroup know if you find anything strange.
COMMENTS A:
From: Robb Kookaby
Date: 17 January 2001
I was running P9 SP3. I uninstalled it and loaded P9 SP4 from CD. Now Paradox shows me as running version 9.00.883 . I placed the following code in a pushbutton...
while isfile("c:\\temp\\temp.pdf")
sleep()
endwhile
I made sure that temp.pdf was a file. With NT Task Manager open I pressed the pushbutton. The handles in Task Manager skyrockets as does memory usage until I open up file manager and delete the temp.pdf file. Then Paradox code stops running and the pushbutton comes back up except that the handles aren't released and the memory is not released either. Nothing gets released unless Paradox is exited.
From: Ivica Kolar
Robb,
That problem appears as addressed in SP4.
Testing SP3, loop counter (ii) value of 5600-6000, or more, was the one with the most interesting results (which includes blue screen sometimes). Testing SP4, overall stability is much better but some part of problem is possibly still there. Closing Paradox, bunch of handles (but not as much as in SP3) are still released through # calls to Kernel32:FindClose.
From: RobbK
Running SP4 in about 30 seconds with that pushbutton code my file handles went from about 3500 to 42000. The memory went from about 150000 to 220000. Neither one was released when I deleted the file to stop the code from running. Only when I exited Paradox did the memory and file handles get released. That was with a sleep(). I tried it with self.settimer() as well. That was even worse. With self.settimer(1000) the memory and file handles went up so fast I had to hurry to delete the file to make the code stop.
From: Ivica Kolar
Robb,
Try to play with the following:
;Warning; It's not tested solution, it's just a hint.
;I have just played with this & Win98.
Uses KERNEL32
{
HANDLE FindFirstFile(
LPCTSTR lpFileName, // address of name of file to search for
LPWIN32_FIND_DATA lpFindFileData // address of returned information
);
BOOL FindClose(
HANDLE hFindFile // file search handle
);
}
FindFirstFile( lpFileName CPTR, lpFindFileData CPTR ) CLONG [STDCALL "FindFirstFileA"]
FindClose( hFindFile CLONG ) CWORD
endUses
Const
INVALID_HANDLE_VALUE = LongInt( -1 )
SIZEOF_WIN32_FIND_DATA = LongInt( 512 ) ;it's more than needed
;You should calc sizeOf( WIN32_FIND_DATA structure )
endConst
method run(var eventInfo Event)
var
ii, hh longint
lpFileName, lpFindFileData string
endvar
lpFileName = "c:\\config.sys"
lpFindFileData = fill( " ", SIZEOF_WIN32_FIND_DATA )
errorTrapOnWarnings(Yes)
try
for ii from 1 to 5000
;API replacement for ObjectPAL's isFile()
hh = FindFirstFile( lpFileName, lpFindFileData )
if hh = INVALID_HANDLE_VALUE then
msgStop("STOP", "No such file!")
FindClose( hh )
quitloop
endif
FindClose( hh )
message(ii)
endfor
message("DONE")
onFail
errorShow()
endTry
errorTrapOnWarnings(No)
endMethod
Note regarding Paradox problem:
Seems that FindClose at Paradox exit is not the appropriate place for doing that (at least for isFile()).
COMMENTS B:
From: John Cuno
Date: 25 June 2001
in my testing with Paradox10 on W2K it seems that the 'EnumFileList' leak HAS been fixed, but IsFile ( when the file exists) still leaks handles
COMMENTS C:
From: mark bannister
Subject: Resource Problems isdir, isfile
Date: 5 October 2001
First:
isDir and isFile do cause resource problems, but it seems unlikely that it will cause people too many problems. They do tie up processor resources on a win 98 system (haven't played with it on NT or 2K yet). So if you call isdir 500 times in a loop your processor usage will go up and stay up (this could be file handles or something but I don't know how to check that). System does seem to reuse the 500 you used, so if you run again and call 500 or less times you don't increase the usage. On the other hand if you call it 1000 times it will. Shutting down Paradox does not seem to release the cpu usage.
Second:
enumfilelist causes problems as well. I don't know what it does (presumably ties up file handles) but if you call it enough times you will get a Windows error and a crashed Paradox. To get around this I wrote the followng custom method:
const
stTempTableCT = ":priv:enumfilelist.db"
endconst
method cmEnumFileList(const stPath string,const stPattern string, var dirtc tcursor) logical
var
looper,
returnvar logical
temptbl table
fs fileSystem
stHtime string
endvar
try
if not dirtc.Isassigned() then
if not fs.FindFirst(stTempTableCT) then
;just get the table structure
fs.enumFileList(":priv:*.db",stTempTableCT)
endif
dirtc.open(stTempTableCT)
endif
dirtc.edit()
dirtc.Empty() ;***********************
fs.setDir(stpath)
looper = fs.FindFirst( iif(StPattern="", "*.*", stPattern) )
while looper
if not (search(fs.name(),".") = 1) then
dirtc.InsertAfterRecord()
dirtc."Name" = fs.name()
dirtc."size" = fs.size()
dirtc."Attributes" = getFileAccessRights(fs.fullname())
dirtc."Date" = string(date(fs.time()))
;this needs a format statement also
dirtc."Time" = format("TH1O(%H:%M:%S)",time(fs.time()))
;to be consistent with Paradox
dirtc.unlockRecord()
endif
looper = fs.FindNext()
endwhile
dirtc.EndEdit()
fs.Unassign()
returnVar = true
onfail
errorShow("error in cmEnumFileList")
returnVar=false
endtry
Return(ReturnVar)
endMethod
Third:
I was also running some command line scripts that were causing problems. Sleeps before and after calling them seemed to fix this.
I still am seeing increased CPU usage that does not decrease but the crashes so far have stopped.
COMMENTS D:
Reported by: "TFehr"
Date: 13 August 2004
I have a program, Paradox 8, that runs a series of scripts which in turn print a series of reports within each script. I get the too many open files error when I run the program for the second time. I've doubled the maxfilehandles to 96 and the error still comes up.
Later on...
I cleaned up most of the FindFirst and isDir calls and now it all works much better.
MY COMMENTS:
isFile() problem verified on Win2000
To index
PX0510 ObjectPAL - popupMenu.addText()
| Type of error: | First verified: | Last tested: | Verified by me: |
| Error | 9.0 P2 | 11 Build 302 | True |
SUMMARY:
In Paradox 9, there is a limit on how many times you can do addText() to a popupMenu.
DESCRIPTION AND SETUP:
Description below is a simplified version of the original problem which was to build a Most Recently Used popupmenu.
A form contains a method which empties the menu and two popupmenus, and then adds 20 elements to one of the popupmenus. Both of them will be bound to the menu. Both the menu and the popupmenus are global variables in the form, declared in the form's Var window.
Form also contains a button which build the popupmenu 90 times. The button can be used once. The second time, Paradox will give an error saying Number of menuitems has exceeded the limit set.
If the popupmenu-variable is made local to the buildMenu method, this error will not appear. Neither will it appear in P7 and P8 , where ever the menu variables are declared.
here's the method used to build the menu and the popupmenus.
method uBuildMenu()
var
si smallInt
endVar
popBack.empty()
popWin.empty()
m.empty()
; menusetlimit(500)
for si from 1 to 20
popBack.addtext("A"+si.string(),MenuEnabled,UserMenu + si )
endfor
m.addPopUp("&Back",popBack)
;build Window menu
popWin.addtext("C&loseAll")
m.addPopUp("&Window",popWin)
m.show()
endmethod
Reported by: Thomas Becker
Date: 22 May 2000
WORKAROUND:
Don't make your popupmenus global variables, which you empty before rebuilding them. Make them local to method where they are built and added to the menuvariable.
In the example shown, they should go into uBuildMenu().
To index
PX0511 ObjectPAL - enumFolder()
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 7.0 W95 | 11 Build 302 | True |
SUMMARY:
enumFolder(arAllForms, "*.fsl") gives me only the forms with less than 11 characters before the .fsl
Reported by: Ken Loomis
Date: 30 May 2000
COMMENTS:
From: Darrell MacKay - Corel
Date: 31 May 2000
Incidentally if you set your filespec to *.* it returns everything including the forms with 11+ characters. Of course the down side is you have to filter the records to only get those ones you want.
To index
PX0512 Local SQL - updating a table that has a AutoInc column
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | Bde 5.11 | Bde 5.2 | True |
SUMMARY:
Using Local SQL to update a column that is part of the primary key in a table with an AutoInc column also is part of the primary key, will cause the Autoinc key to increase itself.
DESCRIPTION AND SETUP:
Autoinc field will increment itself each time you run the query.
IDSQL32.DLL is version 5.1.1.1
Using Local SQL and updating a field that is a part of the primary key.
The autoincrement field must also be a part of the primary key.
Steps to reproduce the problem:
Here is how to reproduce the problem in :DBDEMOS: on "Custoly.db".
First set PRIMARY KEY(CustNo, Last_Name)
Then, run this query that will increment the CustNo field, each time you run the query.
UPDATE "custoly.db"
SET Last_Name = Last_Name
Reported by: Stefan Bodingh
Date: 1 June 2000
COMMENTS:
From: Borland Dev. Support
Sent: Friday, June 02, 2000
Subject: Borland Bug Report #438761
Thank you for submitting your bug report. We have been able to reproduce the problem you reported and this problem is already in our bug tracking system. Please note that at this time we have no future development plans for the Local SQL Engine portion of the BDE. You should plan accordingly.
Thank you,
Quinn Wildman
Developer Support
To index
PX0516 Event model - status() event - setStatusValue()
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 5.04 | 11 Build 302 | True |
SUMMARY:
Under certain circumstances, eventinfo.setStatusValue("custom message") is not enough to replace a builtin message with a custom message. One more reference to eventInfo.statusvalue() is needed, eg st=string(eventinfo.statusValue())
DESCRIPTION:
The object is to trap the "Not in Edit mode. Press F9 to edit data." status message resulting from a key press or delete key when not in edit mode, and to substitute this message for a custom message using the setstatusvalue() method. This custom message will direct users to an appropriate custom menu option to edit records. This in turn changes various menu attributes to restrict some user actions when the form is in edit mode.
The relevant code attached to the form status message is thus
switch
case eventinfo.statusvalue() =
"Not in Edit mode. Press F9 to edit data." :
beep()
eventinfo.setStatusValue("custom message")
case eventinfo.statusvalue() =
"Press F9 to end edit mode." :
eventinfo.setStatusValue("custom message 2 ")
otherwise :
eventinfo.statusvalue("Customer 3")
endswitch
This worked fine in 4.5 with the messages being substituted in the appropriate places. But under 5.0 the standard message is still displayed as the first case selection above The second and others runs fine. The fact that the beep( ) - inserted as a test - activated when required shows that this case selection was entered. I have tried all ways of doing this in 5.0 with little success inserting disabledefaults at various stages but to no avail.
FROM: David Deaves:
Date: 1996
COMMENTS 1:
FROM: Bertil Isberg
Date: 1996
I would try a different approach at action() level:
method action(var eventInfo ActionEvent)
if eventInfo.isPreFilter() then
;// This code executes for each object on the form:
else
;// This code executes only for the form:
if eventInfo.id()=DataDeleteRecord then
if not isEdit() then
eventInfo.setErrorCode(UserError)
active.postAction(userAction)
endif
endif
if eventInfo.id()=UserAction then
message("Your message")
endif
endif
endmethod
There is a lot of numbers to add to UserAction (1,2,3,4.....) so the possibilities are there to use. (UserAction+1)
COMMENTS 2:
From: Scott Johnston - Corel
Date: 24 July 2000
In certain instances statusvalue() does not work properly, not setstatusvalue();
an extra couple of steps are required whereby you declare a string variable and make it equal to eventinfo.statusvalue(). It's also got to do with where you send the message. If I send it to the StatusWindow (eventinfo.setreason(StatusWindow()), it's not getting captured or sent, yet if I send it to one of the ModeWindows (1, 2, or 3), it does get captured and sent properly.
I've noticed this with Table frames thus far, I tested the button object and it worked properly without the extra step...as did a blank form at the form level, page level, and using a regular script
We're going to test the other objects to see which ones have the problem and log a bug accordingly.
MY COMMENT 2000-07 AND WORKAROUND:
The problem is still there in Paradox 9. A workaround is to assign evenInfo.statusvalue() to a variable
switch
case eventinfo.statusvalue() = "Not in Edit mode. Press F9 to edit data." :
st=string(eventinfo.statusValue())
eventinfo.setStatusValue("Custom message")
To index
PX0523 Event model - arrive() event - dmResync()
| Type of error: | First verified: | Last tested: | Verified by me: |
| AltCtrlDelete | 7.0 W95 P4 | 11 Build 302 | True |
SUMMARY:
In a form, with two tables in the data model (unlinked), one of which is displayed in a table frame (Table1). Create a drop-down field in the table frame (undefined field, or table field). In the arrive method of the field enter the code with a dmResync( "table2",....). What I'm getting is a recursive calling of the arrive method as soon as the dmResync is performed. If I create a 2nd table frame with at least 1 field of Table2 the code above works fine. By that I mean table2's range setting takes place like it should, and the list object gets filled properly.
SETUP:
In a form, with a 2 tables in the data model (unlinked), one of which is displayed in a table frame (Table1). Create a drop-down field in the table frame (undefined field, or table field). In the arrive method of the field enter the following code:
method arrive(var eventInfo MoveEvent)
var
tc TCursor
thisForm Form
endVar
doDefault
thisForm.attach()
tc.dmAttach("Table2")
tc.setRange(Table1.SomeFieldName, table1.SomeFieldName)
thisForm.dmResync("Table2", tc)
TABLE1.thisField.theList.DataSource = "[TABLE2.SomeField]"
endMethod
What I'm getting is a recursive calling of the arrive method as soon as the dmResync is performed. If I create a 2nd table frame with at least 1 field of Table2 the code above works fine. By that I mean table2's range setting takes place like it should, and the list object gets filled properly. For now I am simply hiding the 2nd table frame, but I think this is a bug.
The only way I have found to stop the constant 'arrive' loop is to place the table on the form, or moving the field outside of the table frame. As soon as I drag it outside of the table frame, same code, same everything it functions properly.
Reported by : Mark D. Meyer
Date: 2 February 1996
MY COMMENTS 2000-07:
arrive() event may be wrong event to use such code, but I haven't been able to find any other solution than to put both tables in the form.
To index
PX0524 Table Repair - Verify - when .xls files exist
| Type of error: | First verified: | Last tested: | Verified by me: |
| Error | 7.0 W95 | 11 Build 302 | True |
PROBLEM:
When a xls-file with same name as a table exists, Table Repair-Verify will report an error on the table.
Error message is: [Real Header size 0 is invalid or Invalid blocksize 0. FIlename.xls.]
Furthermore, rebuilding the table will rename the .xls as well as the table files.
To index
PX0526 Report Expert - Error - The table(s) this query is based upon could not be found by the query.
| Type of error: | First verified: | Last tested: | Verified by me: |
| Error | 9.0 P3 | 11 Build 302 | True |
SUMMARY:
If an invalid query exists in the default directory and the name of the QBE file is such as the file will be the first file in the dropdown list, the report expert will produce an error message already when you press the Next - button in the first expert screen where you specify "Data from one table".
The error message begins with: The table(s) this query is based upon could not be found by the query.
SETUP:
Create a QBE file based on a table.
Save the QBE file.
Delete the table.
Rename the QBE file so it will be the first in the table/Qbe list.
Then run the Report Expert and select Data from one table.
COMMENTS:
IMO the errormessage should not show up until the proper dialog screen is shown. As it is now, it's very confusing.
To index
PX0529 Form run - unsynchronized toolbar buttons
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 P3 | 11 Build 302 | True |
SUMMARY:
The menu for a form is created by code in the form. When form is run from design mode, the Edit button on the Toolbar is pressed even though form is in view mode.
When opening another form with a custom menu, there is flickering on the edit and view button on the Property Toolbar. The edit button is pressed and then depressed.
DESCRIPTION:
When I open a form from another form, the edit icon on the toolbar lights up briefly and then goes off and the view icon lights.
If I go into design mode and then run the forms, the edit icon lights and remains lit but the form is not in edit mode.
I've applied all patches. I've erased the toolbar config files. I've printed out my code and cleaned it up as best I could, but I cannot find what's causing this.
These forms aren't waiting though, that's what's so mysterious.
After some experimentation, I have found that its my menu building routine that is causing this; but there's nothing unusual about my menu. When the menu loads the edit icon blinks on and off.
Reported by: Ken Loomis
16 August 2000
To index
PX0530 Toolbars - Text Below Image
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 P3 | 11 Build 302 | True |
SUMMARY:
My default setting for toolbar[Button Appearance] is "Text below Image". When I create a new toolbar (ObjectPAL) the image of the toolbar shows but the text is [], until I restart Paradox / RunTime.
DESCRIPTION:
My default setting for toolbar[Button Appearance] is "Text below Image".
When I now create a new toolbar (ObjectPAL) the image of the toolbar shows but the text is [], until I restart Paradox / RunTime.
However, when I change the default setting into "Image Only" and I run my ObjectPAL script the toolbar shows and when I now change the default setting into "Text below Image" the text shows instantly (as it should). However because I now change my setting into "Text below Image" the next toolbar I create (ObjectPAL), won't show text and forces me to reload Paradox.
I'm using P9 Sp3.
It happens when I create a new toolbar or add buttons to an existing toolbar at opening my application. After I restart Paradox once, all is ok.
The same occurred on 4 different workstations.
It doesn't occur when I create a toolbar interactively in Paradox, but it DOES occur when creating or adding buttons to a toolbar through ObjectPAL. However the next time when I load Paradox (and of course I don't recreate the same toolbar) the text is correctly displayed.
Reported by: Hanno van Pelt
23 July 2000
To index
PX0531 Form run - SpellChecker in 1-1 linked detail table.
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 P3 | 11 Build 302 | True |
PROBLEM:
In a form with two 1-1 linked tables, the property menu for a field in the detail table will have Spell Checker grayed, even though Spell Checker is available in the Tools menu.
To index
PX0533 Import - Excel - numeric data
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 P3 | 11 Build 302 | True |
SUMMARY:
A problem related to non US versions of MS Office when importing Excel sheets in P9 SP3. I get the numeric columns imported as Alpha.
SETUP:
Export :Sample:Orders to Excel
Import it back to Paradox 9 Sp 3.
I get AmountPaid, Total Invoice and Balance Due as Alpha with a decimal point instead of comma. It does NOT happen in Paradox 8.
I also noticed that without formatting the date columns, Sale Date and Ship Date, in Excel, I got them as Alpha with mm/dd/yy format.
My Windows International settings are:
Decimal separator: comma
Short date: åååå-MM-dd ; whichs means yyyy-MM-dd
I'm using Bde 5.11
BDE settings
Decimal separator: Comma
Decimal digits: 2
All date settings except: YearBiased: True
Mode: 2
Separator: -
I'm using a Swedish version of MS Office, and a Swedish Windows 95.
VERIFIED BY: Michael Juul Hansen using a Danish version of MS Office.
To index
PX0534 Table Repair - entering a tablename
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 7.0 W95 P4 | 11 Build 302 | True |
SUMMARY:
if you type a file name to the Table Repair input field using alias, the Exclusive Lock remains placed on this table after closing Table Repair form. If you type the full table name (without alias) or select it using file browser, this issue doesn't occur.
SETUP:
There is a minor bug in the Paradox Table Repair form, but sometimes this bug can cause undesired side effects.
Short description: if you type a file name to the Table Repair input field using alias, the Exclusive Lock remains placed on this table after closing Table Repair form. If you type the full table name (without alias) or select it using file browser, this issue doesn't occur.
How to reproduce:
1. Assume that you have :PRIV: mapped to c:\priv and a table named testtbl.db in this directory (you can take any other alias).
2. Open Table Repair via Paradox menu and type in the file selection field :PRIV:TESTTBL.DB (don't press file browser button!!!) and press Enter. The alias will be automatically converted to the full path.
3. Close Table Repair and display table's locks - you'll see Exclusive Lock on testtbl.db.
4. Close and restart Paradox.
5. Open Table Repair via Paradox menu and type in the file selection field C:\PRIV\TESTTBL.DB - almost the same as in 2. but the full path instead of alias.
6. Close Table Repair and display table's locks - *NO* Exclusive Lock on testtbl.db.
This bug exists at least in P8 and P9.
Reported by: Vladimir Menkin
18 September 2000
To index
PX0536 Local SQL - Bcd columns
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 P4 | 11 Build 302 | True |
SUMMARY:
Some SQL operations do not seem to work properly if BCD fields (SQL: DECIMAL(32,n)) are involved.
DESCRIPTION AND SETUP:
This was observed with Paradox tables under BDE 5.1.1.
Toggling "ENABLE BCD" in the BDE does not seem to change anything.
In the following examples
xn is a numeric (Number) field
xbcd2 and xbcd4 are BCD fields with 2 resp. 4 decimal digits.
1. SELECT CAST(xn AS DECIMAL(32,k)) FROM ....
will always yield a set of NULL values for any value of k.
2. UPDATE test
SET xbcd2 = xbcd2 + 0.01
=> no effect, no error message
(Workaround: If xbcd2 is cast to Numeric, it works)
3. UPDATE test
SET xbcd2 = xbcd4
=> no effect, no error message
SET xbcd2 = CAST(xbcd4 AS DECIMAL(32,2))
=> no effect, no error message
4. UPDATE test
SET xbcd2 = CAST("0,01" AS DECIMAL(32,2))
/* Since BDE is set up for some odd locale, the value of the above number is 1/100 */
=> Believe it or not: The first record is changed correctly. All other records remain unchanged.
I have isolated the problem further and it seems to be an internationalization issue. It is neither UPDATE nor BCD specific.
Steps to reproduce:
1. Set up your BDE with DECIMAL SEP=",", THOUSAND SEP="." (It may look odd, but this is the standard in some countries.
2. Take an arbitrary table with >1 records.
3. SELECT x, CAST("0,1" AS DECIMAL(32,2)), CAST("0,1" AS NUMERIC) FROM Test
4. Result (here I use the english notation again, i.e. DECIMAL SEP="."):
x1 | 0.01 | 0.01
x2 | 10.00 | 10.00
x2 | 10.00 | 10.00
x2 | 10.00 | 10.00
....
Conclusion: The number in the strings is interpreted correctly only with the first record.
With DECIMAL SEP="," and THOUSAND SEP=" " it works o.k.
With DECIMAL SEP="." and THOUSAND SEP="," it works fine, too.
Windows was always set up with DECIMAL SEP=",", THOUSAND SEP=".", in case this matters.
Reported by: gfk
Date: 8 October 2000
To index
PX0537 Script - ProjectViewerClose()
| Type of error: | First verified: | Last tested: | Verified by me: |
| AccessViolation | 9.0 P4 | 11 Build 302 | True |
SUMMARY:
If ProjectViewer is closed from a script run from ProjectViewer, the script has to open ProjectViewer before endmethod, otherwise you'll get a Pdxwin32 error with message Access violation at address <> in module 'PdxVwr32.dll'.
SETUP:
Run the script a couple of times from Project Viewer. Sometimes, the problem does not show up first time.
method run(var eventInfo Event)
var
f form
lgPVWasOpen logical
endvar
lgPVWasOpen=False
if projectViewerIsOpen() then
lgPvWasOpen=True
projectViewerClose()
endif
f.open(":Sample:Custform") ; replace with any form
f.wait()
try
f.close()
onfail
errorclear()
endtry
if lgPVWasOpen then
;; projectViewerOpen()
endif
endMethod
Activate projectViewerOpen() line, and rerun the code.
Workaround:
var
af addinForm
endvar
if af.attach("Project Viewer") then
af.hide()
endif
; Main code
; Alternate 1
af.show()
af.unassign()
; Alternate 2
; af.close()
To index
PX0538 ObjectPAL - enumDesktopWindowNames() and EnumWindowNames()
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 P4 | 11 Build 302 | True |
SUMMARY:
EnumDesktopWindowNames() and EnumWindowNames() remove all leading spaces from the obtained window name.
Workaround:
use Windows API function GetWindowTextA to obtain window name (by its handle) instead of using the name obtained from Paradox methods.
Reported by: Vladimir Menkin
Date: 10 October 2000
COMMENTS:
By: Lance Leonard
What happens if your form title has a leading chr( 127 ) instead of a space?
I only ask because I seem to recall running into a similar behavior in 5.0 that only surfaced with the current character set was different than the 437 code page.
From: Vladimir Menkin
chr(127) remains intact.
MY COMMENT:
It did work in P7.
To index
PX0539 ObjectPAL - selectCurrentTool(NotebookTool)
| Type of error: | First verified: | Last tested: | Verified by me: |
| Error | 7.0 W95 P4 | 11 Build 302 | True |
SUMMARY:
SelectCurrentTool(NotebookTool) doesn't work in any of the 32 bit versions of Paradox.
SETUP:
Code from the help files
var
foTest Form
endVar
foTest.create()
foTest.selectCurrentTool(NoteBookTool)
msgInfo("Next step:",
"Click and drag to draw a field object.")
Run the form, and you'll get an errormessage saying "The requested prototype object could not be found"
Reported by: Vladimir Menkin
Date: 10 October 2000
To index
PX0541 Form / Report run - summary calculated field - rounding
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 P4 | 11 Build 302 | True |
SUMMARY:
A value 1.255 will be rounded 1.26, when shown in a table. A summary calculated field in a report will show the sum of the field as 1.25 instead.
DESCRIPTION:
We're using Paradox9 (ver 9.00.738, Patch 3), Win98, Novell Client 32. I have five numbers in a "Balance" field: Four of the numbers show $0.00, one number shows ($1.26). When I click on the ($1.26) the number changes to ($1.255). The table rounds up. I then generate a report. I sum the balance field. The sum is ($1.25). The report rounds down! Why the difference?
Reported by: Michael Derrick
Date: 27 October 2000
To index
PX0543 ObjectPAL - ReadProfileString()
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 P4 | 11 Build 302 | True |
SUMMARY:
According to the help files, writeProfileString() and readProfileString() should by default use Windows directory. In P9 (SP4) Win95, readProfileString() defaults to working directory instead.
SETUP:
In a form, create two buttons:
Button 1 - pushButton()
writeprofilestring("report.hdr","TITLES","COMPANYNAME"," Statistics Sweden")
Button2 -pushButton()
var
st string
endvar
st=readprofilestring("report.hdr","TITLES","COMPANYNAME")
st.view()
st will be blank.
Reported by: iconstructio
6 November 2000
COMMENTS:
It worked fine in Paradox8.
To index
PX0546 ObjectExplorer - showing methods and events from a different form
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 P4 | 11 Build 302 | True |
SUMMARY:
ObjectExplorer can under certain circumstances show methods and events from another form.
SETUP:
Create two forms. One of them - form A - with code in some form level events. The other one - form B - with no code at form level. Let the form contain different objects so it's easy to see which form is shown in Object Explorer, e g let one of them contain a notebook object.
Run form A. Open form B in design mode.
Open Object Explorer.
Activate form B.
Change the ObjectPAL Level (Tools | Settings | Developers Preferences ).
Watch the content of Object Explorer. It does show the running form's events and object tree.
If the running form is a non-modal dialog, this won't happen.
Reported by: Mark Bannister
Date: 15 November 2000
Comments by: Vladimir Menkin
This situation arises when in the same time there is a running form - fsl or fdl (!), any form in design mode and you switch ObjectPAL level! You can not only see FDL form' method names, but also change this form's properties and appearence via the corresponding tabs in ObjectExplorer! Fortunately, it's enough to switch to any other form - the magic methods disappears.
From: Paul Cronk
Date: 16 November 2000
Reproduction steps:
1. Create new form, with code at the page level. [any code, just to make a difference]
2. Save and deliver this form.
3. Open the delivered form, File->Open->Form
4. Create new form in design mode.
5. Open Object Explorer, pinned.
6. Select the delivered form
7. Change user level. Menu, Tools->Settings->Developer Preferences. (advanced to beginner or vice-versa)
Result:
This triggers a refresh in the object explorer for the current form, even when delivered.
Version: Paradox 9.0.368
Suggestion:
This probably exists with version 7. If it does not, then it is the new Object Explorer implementation. In either case, the Object Explorer should disappear when flipping between forms in run mode, and forms in design mode.
To index
PX0549 TableStructure dialog - Tab key
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 P4 | 11 Build 302 | True |
SUMMARY:
When a running form object is on the Paradox desktop, and you open the File New Table dialog to create a new table, the Tab key is sent to the form and not to the create table dialog.
ProjectViewer has to be closed.
SETUP:
Paradox 9 Sp4 win 98 2nd ed.
Open a form with a table frame. Put cursor in table frame
Open new table dialog via menus. Position dialog so you can see the open form behind it.
Enter first field name and hit tab.
Tab will tab through the open form, but not move in dialog box.
Don't know if this is new to SP4 or not. I usually don't have forms open when creating tables.
Reported by: Mark Bannister
Date: 27 November 2000
COMMENTS FROM: Mike Irwin
I don't see this on NT 4 SP6 with Paradox 9 SP3.
To index
PX0550 Form design - ActiveX and MRO objects
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 P4 | 11 Build 302 | True |
PROBLEM:
I can't place any of the Active X (NWC) objects in a MRO record object.
BTW, I can place it inside the MRO record object, if I first place it on the outside and drag it into the recordobject, but I cannot place it directly in the record. OTOH, I can place it in the MRO object itself.
P9 SP4 on Win95.
To index
PX0553 Form design - copying objects
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 8.0 P1 | 11 Build 302 | True |
SUMMARY:
With multiple objects selected in a form and with ObjectExplorer opened, the selection handles are lost for all objects but one, when you issue a Copy using the Edit menu, Ctrl+C or anyother way.
DESCRIPTION:
1. Pick 3 objects
2. Use ctrl+ C to copy them
----Note that two now lose focus and handles
3. Go somewhere convenient (another form, perhaps)
4. Use ctrl + V to paste the three objects
----Note that while all three arrive correctly, only one remains in focus with handles.
IMHO in both cases all three objects should retain focus and handles.
Reported by: Mike Irwin [Paradox]
Date: 10 December 2000
MY COMMENTS:
With ObjectExplorer opened, I lose the handles for all objects but one, when I select Copy. With ObjectExplorer closed, all objects are still selected.
To index
PX0555 ObjectPAL - GPV - query.executeQbe() - long tablenames
| Type of error: | First verified: | Last tested: | Verified by me: |
| GPV | 9.0 P4 | 10.0 P3 | True |
SUMMARY:
Creating a query with query type methods, qryhandle.checkfield() and setCriteria(), will cause a GPV if tablename/directoryname/columnname is long. The exact limit is in the range 64-66 characters.
Paradox 9 - Sp4 - Bde 5.11. running on Win95B and Win2000.
Fixed in P 11 Build 233. Fixed in P10 Build 990. Exists in P11 Build 302.
SETUP:
Create a copy of Customer table, named List_for_TransNo_6_28_Dec_2000.db, in a directory named D:\Data\MinaDokument\Paradox (or of same length).
Create a form/script with the following code:
var
qryHandle Query
siTblImportID SmallInt
stImportTblName String
endVar
try
stImportTblname="D:\\DATA\\MinaDokument\\Paradox\\List_for_TransNo_6_28_Dec_2000.DB"
siTblImportID = qryHandle.appendTable(stImportTblName)
qryHandle.appendRow(siTblImportID)
qryHandle.checkField(siTblImportID, "City", CheckCheck)
qryHandle.writeQbe("z1")
qryHandle.checkField(siTblImportID, "Country", CheckCheck)
qryHandle.writeQbe("z2")
qryHandle.checkField(siTblImportID, "State/Prov", CheckNone)
qryHandle.writeQbe("z3")
qryHandle.setCriteria(siTblImportID, "State/Prov", "calc count as Freq" )
qryHandle.writeQbe("z4")
onfail
errorShow() ; Running the debugger I get to this point.
return
endTry
try
qryHandle.executeQBE()
onFail
errorShow()
endTry
qryHandle.checkField(siTblImportID, "Customer No", CheckCheck)
qryHandle.writeQbe("z5")
try
qryHandle.executeQBE()
onFail
errorShow()
endTry
Run the form. I get a GPV and PdxWin32 error on statement
qryHandle.writeQbe("z2")
The queries can be created and run interactively.
When table is in a directory named D:\DATA\Buggar\Testing, I don't get a GPV.
When table is in a direcory named D:\DATA\MinaDokument\Paradox\CompuServe\MergeUpdate, I get another kind of error, but not a GPV.
Reported by: Denis Jobin
Date: 5 January 2001
To index
PX0556 Local SQL - GPV - join between tables when two aliases are specified
| Type of error: | First verified: | Last tested: | Verified by me: |
| GPV | 9.0 P3 | 11 Build 302 | True |
SUMMARY:
A simple SQL statement containing a join between two tables from two different BDE aliases will, under unknown circumstances, cause a GPV every OTHER time you run it.
When run from ProjectViewer, the second execute will cause an Access Violation in Pvqb.dll.
DESCRIPTION AND SETUP:
Using: Paradox P9 SP3, NT4 sp6a
Also reproduced on P9SP3/Win2K Pro
BDE 5.1.1
Declare a simple SQL statement where there is a join between two tables using two different BDE aliases, eg.
SELECT * FROM
":alias1:mytable" d1, ":priv:othertable" d2
WHERE
d1.ID=d2.ID
Every OTHER time you run this you get a GPV.
Reported by: Adam Toth
Date: 8 January 2001
COMMENTS Jan 2004
This is a really confusing problem. One case I'm testing will run Ok, with one order of the aliases , but when order is changed, the GPV occur
SELECT DISTINCT d."Customer No", d.Name
FROM ":SAMPLE:customer.db" d, ":A1:customer.db" d1
WHERE
(d1."Customer No" = d."Customer No")
ORDER BY d."Customer No", d.Name
is Ok
SELECT DISTINCT d."Customer No", d.Name
FROM ":A1:customer.db" d, ":SAMPLE:customer.db" d1
WHERE
(d1."Customer No" = d."Customer No")
ORDER BY d."Customer No", d.Name
causes a GPV.
When run from another working directory both runs ok.
COMMENTS from: "Randy Fraser"
Date: 15 April 2004
the next sql statement, no matter what it was, would fail.
SUGGESTED WORKAROUND from: "Randy Fraser"
Date: 16 April 2004
I found a fix. Turn off oplocks even if it is a workstation. You can then use joins across multiple aliases. The BDE must have a handle on the file and that is why you can't run it the second time.
MY COMMENTS:
I have not being abled to verify this workaround.
To index
PX0559 QBE Editor - Highlighting text
| Type of error: | First verified: | Last tested: | Verified by me: |
| Minor | 9.0 | 11 Build 302 | True |
SUMMARY:
In a QBE window, if I go to select text in any of the fields, instead of turning to the color I have set in windows appearance properties (red background with white text), I get all black, in other words the text "disappears".
Reported by: Thomas M. Turner
Date: 13 January 2001
COMMENTS:
Using P 9 on a Win2K machine.
Problem didn't exist in P8 on a Win NT 4 machine.
Verified by: Dan Alder (Corel)
You're right.
Incidentally, the colour of the text in the QBE window is set by the menu text colour in windows, and the highlight is based on that (and seems to be wonky...) You may be able to work around it by playing with that setting...
To index
PX0560 Table Repair - table with formatted memo
| Type of error: | First verified: | Last tested: | Verified by me: |
| Error | 9.0 P4 | 11 Build 302 | True |
SUMMARY:
A formatted memo with size F126 or larger will cause tableRepair report an error: "Invalid formatted memo header".
DESCRIPTION AND SETUP:
I created a new table from scratch. Just 2 fields. The first field, A1* and the second F150. I saved the structure and then added 3 records. I entered "101" in the F150 field for each record. Closed the table and then did a verify in TableRepair. All 3 records registered an ErrorCode 96, "Invalid formatted memo header".
If I do a rebuild, the memo data will be removed but the records will be saved.
If I don't do a rebuild and just restructure the table and change the F150 to a M150, then the verify will not show any errors.
If I restructure and change the F150 to F0, F1 or anything up to F125, no errors with Verify. But go to F126, and the errors start.
Reported by: Robert Harder
Date: 11 January 2001
To index
PX0565 Report - PublishAs - Doc and Wpd
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 P4 | 11 Build 302 | True |
SUMMARY:
Tabular report with detached header placed in page band cannot be published as Wpd or Doc file.
SETUP:
1) Open Customer.rsl in design mode
2) De-attach the table header
3) Place the table header in the Page band
4) Run the report
5) Publish the report as Doc or Wpd
6) No file is created
Reported by: Michael Juul Hansen
Date: 26 February 2001
Verified by: Ivica Kolar
I can confirm for .WPD & .DOC but not for .RTF.
Testing PublishToWPD and answering YES for ReplaceExisting even old one .WPD disappears.
MY COMMENTS:
When published as Rtf, the page band is placed before the reportHeader.
To index
PX0567 Report print - scripted TrueType fonts
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 7.0 W95 P4 | 11 Build 233 | True |
SUMMARY:
Only scripted TT font defined as Paradox default system font prints correctly. Other font scripts during the print, malfunctions to Western.
DESCRIPTION:
(Due to language driver used for storing the messages, Ivica's characters are not shown correctly)
This problem bothers me since Paradox7 & patch(6/18/96) which introduced font scripts to 32bits Paradox.
Steps:
1. As Paradox/SystemDefaultFont set Font: Arial, Script: aScript (Arial/aScript in further text)
Note: aScript is one from the list: Greek, Turkish, Baltic, Central European, Cyrillic.
1.1 Restart Paradox.
2. Create new blank report with two text objects.
2.1 1st Text object, set Font: Arial/aScript, set value (contents): "èæ¹ð¾".
Note1: Instead of "èæ¹ð¾" use your language (code page) specific characters.
2.2 2nd Text object, set Font: CourierNew/aScript, set value (contents): "èæ¹ð¾".
3. Save/Close Report.
4. Run Report.
5. Print while previewing report.
6. Compare results Preview vs. Printout.
Preview - result:
1st Text object shows: èæ¹ð¾
2nd Text object shows: èæ¹ð¾
Printout - result:
1st Text object shows: èæ¹ð¾
2nd Text object shows: CourierNew/Western equivalent of above.
Result: Only 1st Text object has been printed correctly.
7. Repeat steps 4-6 but now with CourierNew/aScript as Paradox/SystemDefaultFont.
Result: Only 2nd Text object has been printed correctly.
8. Repeat steps 4-6 but now with TimesNewRoman/aScript as Paradox/SystemDefaultFont.
Result: None of Text objects has been printed correctly.
Note:
Following fonts also belongs to the group of Substituted Scripted TT Fonts:
Arial Cyr, Courrier New Cyr, Times New Roman Cyr.
Reported by: Ivica Kolar
Date: 26 February 2001
MY COMMENTS:
If what is shown on the screen is correct, I can confirm Ivicas result. Only the font specified as Default will print the characters as they appear on screen.
To index
PX0569 Event model - action(dataEndEdit)
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 P4 | 11 Build 302 | True |
SUMMARY:
A form based on a table with a required field. When you try to exit edit mode with a record containing a required field error, the record will be cancelled, and disappear, but Paradox won't leave edit mode.
Same problem occurs, if a table contains an value not found in the lookup table.
DESCRIPTION 1 AND SETUP:
I have a form bound to a single table that is indexed and has some required fields (specified in table structure).
Under Paradox9 SP4, if I insert a new record and fail to supply the required fields, instead of prompting and refusing to post when F9 is pressed, it prompts but flies away losing the data entered. I have tried removing the required fields and intercepting dataUnlockRecord in the record.Action event but this cannot block the rogue action either. Paradox 5 works fine on the same table (no other versions to hand to try).
I have tried recreating this on a completely separate installation and it still misbehaves.
To test:
create a table with fields Ref = longInt, Name = Alpha30, key on Ref, required on Name.
create a form with an mro bound to table above, insert some records.
move to a record away from the end and insert a new record. Enter a Ref that will fly away but leave Name blank (it is required). On ending edit the record will vanish, edit will not be exited, and a message will appear on the status bar saying field 2 was required. A second press of F9 will then leave edit mode.
Reported by: Chris Harwood
Date: 22 February 2001
DESCRIPTION 2:
Have just noticed that if a value in a look-up table gets accidently deleted or altered, Paradox9 SP4 responds in a different way to Paradox7. If you tried to edit a record in Paradox7 which had an erroneously look-up value in one of it's fields, it would complain when you pressed F9, until you found and corrected the offending field (or the value in the look-up table). Paradox9 however, "edit undo"s any changes you have made, on pressing F9, and then complains. This is really unhelpful, as you lose all your pre-posted data. I know there's a work around e.g. trapping for F9; using postrecord() (neither this nor unlockrecord() wipes the data); checking for errors; prompting user; etc etc.
Reported by: "Michael Melling"
Date: Mon, 30 July 2001
To index
PX0571 IPF on exit from Paradox
| Type of error: | First verified: | Last tested: | Verified by me: |
| AccessViolation | 9.0 P4 | 11 Build 302 | True |
SUMMARY:
Running a form with two charts based on two sql files where the SQL files contains tables with alias specified, like :SAMPLE:Customer, will cause
a) a Runtime Error 216 at 2F30 and at 516E. When closing the first Runtime Error dialog, I get the second one.
or
b) Invalid Page Fault in PVQB.DLL at address 016f:076934c2
when Paradox is closed down.
Error is more frequent when form is run from Design mode.
On Win2000 SP4, error is Exception EAccessViolation in module Pvqb.dll at 0000228B.
SETUP:
You'll need an alias SAMPLE pointing to the Samples directory with Customer and Orders tables.
The SQL file:
SELECT d.City, d."State/Prov", d.Country, d1."Ship VIA",
d1.Terms, d1."Payment Method", d1."Month",
SUM(d1."Total Invoice") AS TotalInvoice
FROM ":SAMPLE:Customer.db" d, ":SAMPLE:Orders.db" d1
WHERE
(d1."Customer No" = d."Customer No")
GROUP BY d.City, d."State/Prov", d.Country, d1."Ship VIA", d1.Terms, d1."Payment Method", d1."Month"
Alias specified in the Alias control is: WORK.
Create two copies of this file: twoCharts1 and twoCharts2.
Create a form based on those two sql files. Do not link. Select a Blank form in Design layout.
First chart object Second chart object
Based on: twoCharts1.sql twoCharts2.sql
DataType: 2D Summary 2D Summary
X-axis: Month Month
Grouped By: Payment Method Ship Via
Y-axis: TotalInvoice TotalInvoice
For both chart objects, open the Property sheet and checkmark Runtime: TabStop.
Save the form.
Close it.
Run it.
Close the form.
Exit Paradox.
Run the form with tables instead.
Run the SQL file and rename the Answer table, and take a copy of it.
Create a similar form based on the two tables instead. Use the same chart definitions.
Run form. Close it. Exit Paradox.
*This does happen in Paradox 9 SP4
*This does not happen if the two sql files are replaced by tables.
*This does not happen in Paradox 7.
*This does not happen if the alias is removed from the table reference and the database is selected
from the alias control, that is when the content of the SQL file is
/*
Answer: :PRIV:ANSWER.DB
Type: PARADOX
Constrained: False
AuxTables: True
RunMode: Default
Alias: Sample
LiveAnswer: FALSE
*/
SELECT d.City, d."State/Prov", d.Country, d1."Ship VIA",
d1.Terms, d1."Payment Method", d1."Month",
SUM(d1."Total Invoice") AS TotalInvoice
FROM "Customer.db" d, "Orders.db" d1
WHERE
(d1."Customer No" = d."Customer No")
GROUP BY d.City, d."State/Prov", d.Country, d1."Ship VIA", d1.Terms, d1."Payment Method", d1."Month"
Reported by: Sinisa Stokic
Date: 22 March 2001
Comments:
In Paradox 11, I get another error when Paradox is closed down:
Exception EAccessViolation in module Pvqb.dll at 0000228B. Access violation at address 0547228B in module 'Pvqb.dll.' Write of address 05543FED.
To index
PX0572 Preferences - PrinterStyleSheet Browse button
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 P4 | 11 Build 302 | True |
PROBLEM:
On Tools | Preferences : The Form/Report tab. Printer StyleSheet Browse button will give the Screen Style Sheets, *.ft files to select from
To index
PX0573 Report design - Page Setup
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 10.0 | 11 Build 302 | True |
PROBLEM:
Opening the Page Setup dialog from the File menu with a report open in design mode, will change the ruler scale in the report, from centimeters to inches, when Page Setup is closed using the OK button.
To index
PX0575 Project Viewer - Statusbar information
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 P4 | 11 Build 302 | True |
PROBLEM:
With Current directory in Project Viewer set to any other directory but Work, changing working directory using File | Working Directory does not update the Status bar in Project Viewer. The initial working directory is still reported as working directory. Not until you select Work in ProjectViewer's Alias dropdownlist, (or you select a different Current directory) is the status bar updated.
To index
PX0576 Import - ReadOnly files.
| Type of error: | First verified: | Last tested: | Verified by me: |
| Error | 9.0 P4 | 11 Build 302 | True |
SUMMARY:
The text import expert does not work when the text file to be imported has the read only attribute set to true.
Neither do import of Excel files.
Reported by: Mark Bannister
Date: 16 May 2001
MY COMMENTS on Text files:
It also happens in P10 on Win95B when the text file has ReadOnly attribute set.
It happens with the Text import Expert and the script created by the expert, not when using File | Import. So it seems related to dataTransfer methods. Using the generated script, I get an error: Unable to open database table. Table is read-only.
I tested a delimited text file.
COMMENTS on Excel:
From: Richard Creer
Date: 31 July 2001
I get the message 'Unable to get table field descriptions' when I try to import a read-only Excel spreadsheet. If not read-only, it works fine but there are good reasons why the spreadsheet should stay read-only.
For the record, and you probably know this already, it works if workbook protection is off but sheet protection is on. Not being an Excel person I don't know the significance of this but it must mean something.
To index
PX0578 ObjectPAL - twain.acquire()
| Type of error: | First verified: | Last tested: | Verified by me: |
| Error | 10.0 | 10.0 | False |
SUMMARY:
When running the acquire example 3, I get an error: "You have tried to use an unassigned variable. A variable must be assigned a value before you can use it." at the acquire line. If I write to file instead, no problems...
DESCRIPTION:
var
tw Twain
g Graphic
endVar
;open the source
if not tw.open() then
errorShow()
return
endif
;acquire to the filename from the system default source. Show the UI.
if not tw.acquire ( g, TRUE ) then
errorShow()
endif
;close the session
tw.close()
Reported by: Oak Hall
Date: 22 May 2001
Verified by: Paul Cronk
To index
PX0579 TableStructure dialog - Auxialiary passwords
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 | 11 Build 302 | True |
SUMMARY:
An auxiliary password with ReadOnly right, and where Field rights = None have been specified for some columns, will show up incorrectly as ReadOnly when the password tab is activated in the restructure dialog. And changed to ReadOnly if table is saved.
DESCRIPTION:
Paradox 9 SP4 Win 2K
I'm trying to setup some passwords on some tables.
I have one low level password that I only want the user to be able to view a few fields.
In the Table Rights area I checked "Read Only". Under Fields I selected the ones I did NOT want user to see and changed it to "None". Choices are None or Read Only.
Problem is that changing to "None" doesn't stick. When i reopen restructure box field rights are set back to "read only".
If I change the table rights to "Update" (the next rights level up) I can change field rights to "none" and it sticks. If I then downgrade the table rights to "None" then field rights get set back to "read only".
It's a display issue in the dialog box. Occurs both in Win2K and Win98.
Setting fields to None works, but when you reopen the dialog box it displays readonly. If you save at this point it will change the field right's back to readonly again. That's what kept happening to me.
By the way, you have to look at the password tab for things to get reset to read only. If you edit the structure without looking at the password tab settings are preserved.
Reported by: Mark Bannister
Date: 21 May 2001
To index
PX0580 Button Expert - Advanced Data Entry - Locate Field value
| Type of error: | First verified: | Last tested: | Verified by me: |
| Error | 9.0 P4 | 11 Build 302 | True |
SUMMARY:
Button Expert -
Category : Advanced Data Entry
Button: Locate Field value
The code created won't work when the style sheet used creates a pushButton with TabStop checked. The code requires TabStop to be unchecked.
Code form the Locate button
active.action(DataSearch)
Reported by: Robert L. Porter
Date: 25 May 2001
MY COMMENTS:
It's a problem caused by the new style sheets used, where the pushButtons have TabStop property checked. The code generated by the expert won't work. Uncheck the TabStop property for the button.
Seems to have been introduced in P9. In earlier versions, at least P7, pushbuttons were not created with TabStop checked.
I guess this is not the only expert broken by this change.
To index
PX0581 ObjectPAL - tcursor.enumLocks()
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 8.0 | 11 Build 302 | True |
SUMMARY:
It appears to me that the RecordNumber field that is part of the Paradox table created by the enumLocks() method does not give accurate results for records higher than 32768. I know using the Tools | Security | Display Locks menu option works fine, but not the ObjectPal equivalent.
Reported by: Dan Ellingson
Date: 31 May 2001
To index
PX0584 Report run - Publish As - Html
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 10.0 | 11 Build 302 | True |
PROBLEM:
Numeric data - Short, Number, LongInt, AutoInc - is published IF the format is anything but Integer. When format is set to Integer in the report, data disappears in the html file.
To index
PX0587 Form open - Error - Disk error occured while reading file
| Type of error: | First verified: | Last tested: | Verified by me: |
| Error | 10.0 | 11 Build 302 | True |
SUMMARY:
I get an error "Disk error occured while reading file" when trying to interactively open a form which contains graphics. The forms can be opened in P9. When opened from ObjectPAL, the error is: "The design object, '<>', could not be opened."
The problem is caused by the new graphic filters in P10.
COMMENTS Aug 2001:
Win98 and Win2000, but not Win95.
If clipboard contains a graphic caught by Alt+PrintScreen, and the content is pasted into a graphic object in a form, and the form is saved, the errormessage occurs when form is reopened.
COMMENTS Nov 2001:
If the Clipboard content is pasted into MS Word, and then copied and pasted into a graphic object in Paradox, the problem does not occur.
COMMENTS Apr 2005:
Problem seems to be caused by the Windows setting for Color depth. If the Color depth is 32 bit True color, the problem occur, but not for True Color 24 bit.
To index
PX0588 Event model - action(dataEndEdit) and action(dataUnlockRecord)
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 P3 | 11 Build 302 | True |
SUMMARY:
In Paradox 7, you could prevent a record from being unlocked by code in form level action event, the else clause
if eventInfo.id()=DataUnlockRecord then
eventInfo.setErrorCode(userError)
endif
This code would prevent unlockrecord even if unlockrecord was caused by the use of end edit mode actions. Also those actions would be prevented.
In P9 and P10, the record will be cancelled and unlocked but edit mode actions are prevented.
SETUP:
Add the code above to form level action event, else clause.
Edit an existing record, and press View mode to unlock the record.
Note, changes are cancelled, but you are still in edit mode.
To index
PX0589 Report print - Print dialog - Settings control
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 10.0 | 11 Build 302 | True |
SUMMARY:
Whenever I create a report and want to print it interactively, I see Current (Current settings not saved) in the Settings control in the Print dialog.
If I press the Edit Settings button, I get the Default setting, and when I close the dialog, Default setting is selected.
Next time report is to be printed, I still see Current (Current settings not saved) in the Settings control.
SETUP:
I create a report, save it and run it. Opening the Print dialog, I press the Properties button to see the printer settings. The paper size is reported as Letter!. Canceling my way back to the Print dialog, I press the Edit settings.. button, and doing nothing but closing the dialog, I get Default setting instead of Current. Now the printer paper size is A4.
(Update 2002-09: The Letter paper size problem has disappeared after US version of Win2000 was replaced with a Swedish version. )
COMMENTS:
From: Scott Johnston - Corel
Date: 13 June 2001
Here is what our printing specialist has to say:
< Quote >
I'm told this problem apparently exists for other applications as well. So far, I see Draw and WordPerfect have some similarities in their Print Dialog Box but mainly WordPerfect is closest to ours.
I have checked it out in WordPerfect, and the difference I see there is the Settings Listbox shows "Default" to begin with instead of "Current(Current Settings not saved)". When you click on the "Edit Settings" in the Print Dialog for WordPerfect, you have the same screen as we do for Paradox "Edit Settings" where the word "Default" is listed in the dropdown listbox. And when you close this dialog box you see the "Default" listed as the Setting for the Print Dialog. In Paradox it is a little different.
When we initialize the print engine for Paradox we are loading default ("factory" ) settings. However between engine initialization and Print Dialog being invoked, the application may alter some settings. Most often these settings are color, number of copies, collation, output paper, etc. This change of the initial settings is detected and therefore we are displaying text string that tells users default settings has been altered. ie: "Current (Current settings not saved)".
This problem can be resolved by going into "Edit Settings" dialog and pressing the Replace button, which replaces initial default settings with the settings the user currently has in Print Dialog. What happens when you close the Print Dialog box and re-open it again, is the same string is displayed again. ie: "Current (Current settings not saved)" even when you haven't made any changes, but just opened it again.
I will log a bug against the fact that once initial settings have been made, and the Print Dialog box is closed, bearing in mind that the same report is still open on the screen, and the Print Dialog is opened again, the Settings should display "DEFAULT" not Current (Current settings not saved)."
< /Quote >
To index
PX0591 ObjectPAL syntax
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 7.0 W95 | 11 Build 302 | True |
SUMMARY
The syntax
var
myvar false
endvar
is accepted. It should not be.
SETUP:
Paradox 9 sp4.
Try this:
Var
myvar FALSE
endvar
myvar.view() ;logical with value N/A
myvar = true
myvar.view() ;logical value true
Reported by: Mark Bannister
Date: 13 July 2001
COMMENTS:
From: A. I. Breveleri
Compiles and runs also in v7. Gives a syntax error in V5.
To index
PX0594 Tables - Error - The graphic file contains an invalid header - Graphic columns
| Type of error: | First verified: | Last tested: | Verified by me: |
| Error | 10.0 | 11 Build 302 | True |
SUMMARY:
Win2000, but not Win95 and Win98.
A graphic object in clipboard is pasted into a graphic column in a table. When record is unlocked, an error "The graphic file contains an invalid header" is shown on the toolbar. The graphic seems to be empty, but the size of the MB indicates the opposite.
This bug is probably the same as Px0587, at least they are both related to the graphic filters in Paradox 10.
DESCRIPTION:
I have a graphic in clipboard (by example Ctrl+printscreen). I want to put it in a graphic field of a table by paste. I see the graphic in field but I lose it at unlockrecord with message: "The graphic file contains an invalid header"
Same in P9.
Is it a compatiblilty problem between Paradox and the clipboard format in NT/2K or is it my configuration?
If I paste bitmap in paint, record in a file and paste from the file, it's ok.
If I select and copy in paint, paste from clipboard is ok in Paradox. Problem occurs perhaps only with printscreen (sendkeys("^{prtsc}",True) ) and perhaps with NT technologies.
Reported by: Jacques Chaillot
Date: 7 April 2001
COMMENTS Apr 2005:
Problem seems to be caused by the Windows setting for Color depth. If the Color depth is 32 bit True color, the problem occur, but not for True Color 24 bit.
To index
PX0595 Project Viewer - Resource leakage
| Type of error: | First verified: | Last tested: | Verified by me: |
| Resource | 10.0 | 11 Build 302 | True |
SUMMARY:
There is a resource leakage when closing Project Viewer. The GDI objects as reported by Task Manager will increase when Project Viewer is opened, closed, and reopened.
DESCRIPTION:
I've discovered another way to leak resources, and a clear method to view the resource leak:
Open and close many times the project viewer!
In the meantime use the win 2k Task manager, Processes Tab, Adding the GDI objects column to the view;
ParadoxWIN32 uses more and more GDI objects all the time!
Reported by: Manuele Grueff
Date: 19 July 2001
MY COMMENTS:
On Win2000, I see the following:
Number of GDI objects when Paradox is opened with PV. 343
Closing PV: 257
Open and close three times. 371
Open PV once more 496.
Close and open, close three more times. 523
Open once more. 649
To index
PX0598 Report print - Warning - Report layout settings ... have been changed within the print dialog.
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 10.0 | 11 Build 302 | True |
SUMMARY:
This is a inconsistent problem that can be hard to recreate.
When trying to print a report, you get a message:
Report layout settings (page size, paper orientation) have been changed within the print dialog. this will require each report to be regenerated. This can take a long time for large reports. Would you like to continue.
This occurs for some reports even though nothing has been changed.
After having found a solution for portrait reports, the problem does still exist for every landscape report.
DESCRIPTION - QUOTES FROM
issi
Terry Straehley
Stu Bailey
Erik Wogstad
Delfo Perozziello
Anders Torvill Bjorvand
Bertil Isberg
"Håkon Rasmussen"
Date: May 2001 - April 2004
Almost everytime we have a report on the screen and then click 'File', 'Print' and then print, we get a warning message 'Report layout settings (page size, page orientation) have been changed in the print dialogue...' . This comes up even without changing anything.
This happens with some reports, not others.
I've checked the page layout size constantly. My default page size is A4. I've tried every version of A4 in the page layouts without success. When I first open P10, the page layouts are in centimetres. I can open a bunch of reports in design mode, check the page layout - and they're all in centimetres. If I print a report that (somehow) works without triggering the message - the page layout dimensions remain in centimetres. But the moment I print a report that triggers the layout message, the page layout dimensions go back to inches!
Others have reported getting this message intermittently, usually with text close to the margins, etc., but this happens for ALL my reports in P10.
I have other network printers to go to, and wouldn't you know it, my simple test reports print without the warning for HPDeskJet and HPOfficeJet85. Good so far as this goes.
I've been testing on my local laser printer, an NEC Superscript 860, and that's where the problems continue. I totally uninstalled the driver, then re-installed. Same problem, but at least this can be isolated to P10's interaction with this particular driver. I never saw any problems with this driver and P7.
I get the error consistently with an apparently random range of reports, no matter which printer I'm connected to (and have specified), ranging from a simple HPIII through to various flavours of Canon and Minolta. If I get it on one printer, I get it on the lot.
The warning message has disappeared after replacing US version of Win2000 with a Swedish version. Problem does still occur on Win95/Win98 though.
SUGGESTIONS:
BY: Liz
My research indicates the following may be causes:
1. Having a query in the data model
2. Having a report created in another version of Paradox
And the following may be solutions:
1. Open the report in design, enter the page setup/layout dialog, click OK to exit said dialog and save the report.
2. Get the queries out of the data model
3. Recreate the report in Paradox 10
BY: Terry Fehr
It seems to get fixed by moving all objects away from touching the margins and the record bands. Open the page format first and click on the paper size, verify the margins, and other settings then close the dialog. Then try running and printing your report, if it works, save & deliver it, if not you've probably got some controls that are overprinting a margin some where.
BY: Bertil Isberg
Date: 2003-04
Changing the PageSize property in ObjectExplorer can make the errormessage disappear. I had a couple of reports that printed Ok, but one report caused the Warning message.
Page Size - A4 portrait - for the failing report was (11899,16837). Page size for report that printed without the warning was (11905, 16837). Changing Page Size to (11905,16837) was enough to make the report print without the warning.
BY: "Fredrik Winter"
Date: 18 August 2003
get into Design and make a very small change to the size of the report, just a few mms is usually enough to take the problem away.
File PageSetup Margins.
Save and test.
BY: "Robert Wiltshire"
Date: 2004-04
In the page setup dialog box, select Printer page types instead of the Standard page types. This can help to get rid of the error message when printing portrait reports, but not for landscape reports.
SUMMARY:
No suggestions seems to work for other users than the one making the suggestion.
ANALYSIS BY: Ivica Kolar
Printer driver: HP5LPCL (HP version G 1.30.0.0 )
Printer Paper size: A4 210*297
Report Page format: A4
1. Create/Save blank report, Print it
Result1: Message "Report layout ..."
Repeating above on other PC with Printer driver: HP5LPCL (MS version 3.55 ).
Result1: Message "Report layout ..."
About ReportLayout... issue:
Using HP930C driver as default I can create blank report not having ReportLayout... issue.
However, printing that report with HP5PCL I got that issue.
LATER ON:
What I did is:
1. Change PrinterName from "HP LaserJet 5L (PCL) hp" (A)to "HP LaserJet 5L (PCL)" (that is the printer's DriverName in my case)
2. Search Registry and change all occurances of A to A's DriverName.
Result is (beside that PrinterName = DriverName):
* Above result suggests that Paradox in some cases wrongly uses PrinterName as reference to Registry (should use DriverName).
Now, I can consistently print Erik's reports without issue 4.
Now, I can create/print blank report without issue 4 using following page types:
Letter
Legal
If your printerName differs from driverName (check also ([HKEY_USERS\.DEFAULT\Software\Corel\PrintEngine])
section) and you will try steps 1&2 please check this:
LATER ON:
Latest summary:
Workaround:
1. Change PrinterName in MyComputer/Printers from A to A's DriverName.
2. Search Registry and change all occurances of A to A's DriverName.
Hypothesis:
* PerfectPrint/PrintEngine in some cases wrongly uses PrinterName as reference to Registry (should use DriverName).
MY COMMENTS:
See also PX0597 and Px0698 for other problems where this message is involved.
To index
PX0599 Form design - DataModel - changing link between tables
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 10.0 | 11 Build 302 | True |
SUMMARY:
Changing the link between tables in the DataModel Designer may cause tables to disappear from your form.
DESCRIPTION:
Data Model Designer undefines objects inappropriately:
Create 3 tables.
Master has Long int key and another field.
Child1 has long int key, foreign key is long int with secondary index maintained.
Additional secondary index on FK and PK in that order, maintained.
Child 2 set up the same as child one except no 2 field secondary index needed.
Start a blank form.
Add an MRO. Define as 1x1.
Right click, define table, create data model.
Link tables in a data model Master->>Child1->>child2 with the link from Primary Key to Foreign Key in each case.
Return to form.
Add a second MRO. Define it as child1.
Add a TF (in the MRO record object). Define it as Child2.
Save.
Now right click on Child1 MRO. Select define table.
Click the DMD icon. Unlink the Child1 table and relink on the 2 field secondary index.
Note, this should not change anything for the Child1 to Child2 link.
OK back to the form.
Not only is Child2 undefined, it's TF is GONE. Bad. Does not happen if TF is outside of MRO record object.
Workarounds: Use P7 DMD.
Drag Design objects out of MRO record objects before changing links in DMD.
Results:
Changing a link in a way that should only effect the record sort order in fact damages the form
requiring a full rewrite for anything below the changed link.
Reported by: Dennis Santoro
Date: 4 September 2001
MY COMMENTS:
Four more workarounds:
1)
Select Child2 TF Select define table.
Click the DMD icon. Unlink the Master and Child1 table and relink on the 2 field secondary index.
2)
Select Master record. Select Define record.
Click the DMD icon. Unlink the Master and Child1 table and relink on the 2 field secondary index.
3)
Use Format | Datamodel to change the Datamodel.
4)
Save the datamodel.
Close the form.
Change the datamodel the way you have described and save it.
Open the form in design mode.
Format | Data Model.
Select the changed DataModel. You don't have to remove the tables. Only select the datamodel, and it will replace the one used.
So the problem only occurs when Child1 is selected, and you change the link using the DMD icon in Define Table/Define Record dialog.
To index
PX0600 Import - Excel
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 P4 | 11 Build 302 | True |
SUMMARY:
If a cell starts with a doublequote, but doesn't have an ending doublequote, the record won't be imported properly. The rest of the record is stuffed into first field.
Software:
Windows 98SE
Paradox 10 (SP0)
Excel 2000 (saving to earlier file formats)
SETUP:
Create a simple spreadsheet in Excel similar to what is shown below. Make sure one of the cells start with a doublequote. Save the spreadsheet in a version readable by Paradox (v3, 95 and 97 tested).
Florida | David | US12122 | data12312
"Texas | Cathy | US12122 | data12312
Ohio | Wayne | US12111 | data12312
Import the spreadsheet into Paradox. The record containing the quote doesn't import correctly in Paradox 10. The same Excel file imports correctly in Paradox 8.
I would understand the problem if the file was ASCII Delimited. But with an Excel file, the cells should be the delimiters, quotes should not be treated as delimiters. Modify the row to look like this:
"Texas | Cathy" | US12122 | data12312
Paradox 10 imports this as:
Texas Cathy | US12122 | data12312
Unfortunately, we don't create the data, it comes to us with the leading quote.
The same Excel file works in Paradox 8, but fails in Paradox 10.
Reported by: Wayne Sheppard
Date: 6 September 2001
MY COMMENTS:
P9 SP4 gives same result.
To index
PX0601 Form run - memo field - cursor position
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 P4 | 11 Build 302 | True |
SUMMARY:
If zoom is set to (MenuPropertiesZoomFitWidth) in a form, the cursor does not correspond to the writing position in the memo field.
DESCRIPTION:
If menuAction is set to (MenuPropertiesZoomFitWidth) in a form, the cursor does not correspond to the writing position in the memo field.
The error becomes more and more accentuated when the cursor arrives at the end of the line, especially if no other word is on the right of the cursor, on the same line.
These problem occurs only in paradox 10 (not in paradox 9 also with the different service packs) and is not triggered by the use of the backspace key
Reported by: Ruggero Capra
Date: 7 September 2001
To index
PX0603 ObjectPAL - number.smallint()
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 7.0 W95 P4 | 11 Build 302 | True |
PROBLEM:
number.smallint() won't create a Overflow error when applied to a value large than the smallInt ranges, eg 35000 casted as smallint will return a -30536
To index
PX0605 Form run - assigning values to numeric fields
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 7.0 W95 P4 | 11 Build 302 | True |
PROBLEM:
Tablebound Numeric field in a form with format set to Integer will accept values with decimal digits, like 1.45, but only if you enter the value with a decimalpoint. The Windows defined decimalseparator, in my case, comma is not accepted.
If I am allowed to enter decimal digits in a field with Integer format, I should be able to use the decimalseparator defined in Windows short.
To index
PX0607 ObjectPAL - restructure() - Graphic columns
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 8.0 | 11 Build 302 | True |
SUMMARY:
ObjectPAL restructure() method does not like graphic fields with size 0.
DESCRIPTION:
The following code to restructure a table through ObjectPAL and insert a new field yeilds error "invalid field descriptor". I've checked and rebuilt the data just in case but that's made no difference. I've manually restructured it without a problem but ObjectPAL doesn't work. Any ideas?
ps... the error errupts at
if not tb.restructure(dynNewStru) then
errorshow()
return
endif
var
tc tcursor
dyn, dynnewstru DynArray[] Anytype
tb table
FieldNames Array[] AnyType
endvar
tb.attach(":data:storm.db")
tb.enumFieldnames(FieldNames)
if fieldnames.contains("S_or_G") = False then
beep()
msginfo("UPGRADE NOTICE",
"Your database is now going to be updated... DO NOT interrupt this process!!!")
if istable(":priv:struct.db") then
delete(":priv:struct.db")
endif
tb.enumFieldStruct(":priv:struct.db")
tc.open(":priv:struct.db")
tc.edit()
if not tc.locate("Field Name","M_or_E") then
errorshow()
return
endif
tc.insertafterrecord()
tc."Field Name" = "S_or_G"
tc."Type" = "ALPHA"
tc."Size" = 1
tc.endedit()
tc.close()
dynNewStru["FIELDSTRUCT"] = ":priv:struct.db"
if not tb.restructure(dynNewStru) then
errorshow()
return
endif
tb.unattach()
delete(":priv:struct.db")
beep()
msginfo("UPGRADE NOTICE","Database upgrade process complete...")
endif
Reported by: RobbK
Date: 17 September 2001
COMMENTS From: Vladimir Menkin
Robb sent me his table. It has the following structure:
M_or_E : A1
Pix-narrative : M1
Pix : G0
Note the last field type - G0 (G *zero*). Here's the problem. Changing this field type to G1 (generally, G_AnythingExceptZero) resolves the issue - the code given by Robb works without errors.
Moreover, the following script must produce *no* changes in the table's structure:
var
dynnewstru DynArray[] Anytype
tb table
endvar
tb.attach("storm.db")
tb.enumFieldStruct(":priv:struct.db")
dynNewStru["FIELDSTRUCT"] = ":priv:struct.db"
tb.restructure(dynNewStru)
But it changes Pix : G0 to Pix : G1
MY COMMENTS:
I can verify G0 being changed to G1.
If I change the code used to:
if not tc.locate("Field Name","M_or_E") then
errorshow()
return
endif
tc.end() ;;;;;;;;; This line added.
tc.insertafterrecord()
tc."Field Name" = "S_or_G"
tc."Type" = "ALPHA"
tc."Size" = 1
tc.endedit()
Now the column will be added, but G0 is still changed to G1.
Looks like the restructure() method does not accept size=0 at all.
To index
PX0608 QBE run - Incorrect result
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 P4 | 11 Build 302 | True |
SUMMARY:
A QBE with a mix of calc sum [all] and calc count [unique] with a grouping [checkmark] and multiple calc count [unique] will create an incorrect result.
DESCRIPTION AND SETUP:
Not expected result of a query. SQL is Ok, though.
Let's take a look at the SQL first as it's easier to see what the query does.
SELECT DISTINCT o."Ship VIA",
COUNT(DISTINCT o."Order No"),
SUM(o."Total Invoice"),
COUNT(DISTINCT c.City),
COUNT(DISTINCT c."State/Prov"),
COUNT(DISTINCT c.Country)
FROM orders o, customer c
WHERE
(c."Customer No" = o."Customer No")
GROUP BY o."Ship VIA"
ORDER BY o."Ship VIA"
1) A join between Customer and Orders
2) A group by
3) Counts in both tables
4) Multiple Counts in Customer
5) Sum in Orders
6) A mix of Sum all and Count distinct
The last three counts should result in:
ShipVia City State/ Country
Prov
DHL 20 10 9
Emery 5 3 2
FedEx 22 11 12
UPS 28 12 13
US mail 20 9 9
The QBE file
Query
ANSWER: :PRIV:ANSWER.DB
:Sample:orders.db | Order No | Customer No |
| calc count | _join1 |
:Sample:orders.db | Ship VIA | Total Invoice |
| Check | calc sum |
:Sample:customer.db | Customer No | City |
| _join1 | calc count |
:Sample:customer.db | State/Prov | Country |
| calc count | calc count |
EndQuery
Now the result is:
DHL 1 0 9
Emery 1 1 2
FedEx 1 0 12
UPS 1 0 13
US Mail 1 0 9
Change the "calc sum" to be "calc sum unique" and the QBE will give the same Count results as the SQL.
Conclusion A: Mixing calc sum all and calc count [unique] is involved.
By removing the Check in Ship Via, and replacing it with a selection FedEx, the result will also be correct 22 - 11 - 12.
Conclusion B: Grouping is involved
Removing calc count from State/Prov and Country, will also change the result to be correct.
Conclusion C: Number of calc count {unique] is involved.
Let's run the query in two steps, first selecting the columns needed, and then doing the calculations. The same problem should occur.
Conclusion D: The join itself is not involved.
Summary.
A QBE with a mix of calc sum [all] and calc count [unique] with a grouping [checkmark] and multiple calc count [unique] will create an incorrect result.
WorkAround: Use SQL
Another example reported by: "Bob Hutchison"
Subject: Calc Count bug in large tables
Date: 22 August 2003
Calc Count can give erroneous results - obviously crazy results.
I first found this bug a couple of years ago but being flat out at the time did not report the problem nor my work-around. I have just been hit by it again so thought I would report.
The problem arises when I am doing a "slice and dice" analysis on a large OLAP cube which is a Paradox database. My current problem table is about 60MB with 27 fields and 330,000 records. The slice and dice query is a mixture of Calc Sum operators (on value fields) and Calc Count operators (on alphanumeric ID fields) with Checked field representing grouping variables.
When the Calc Count fields are interleaved between Calc Sum fields the Calc Count result will regularly be obviously wrong. The problem is not specific to Paradox version and I would think that the culprit is the BDE.
My (so far only) solution to the problem is to restructure the table so that all the Calc Count fields appear earlier in the field roster than the Calc Sum fields. Hey presto - correct results!
A brief description of the situation.
1.
Table - Test.db
Structure:
Characteristic A1
Value1 N
ID1 A15
ID2 A10
Value2 N
Table not keyed
Table contains 4333 records, size on disk 194KB
2.
Query - TestQBE.qbe
Query
ANSWER: :work:AnswerQBE.DB
Test.DB | Characteristic | Value1 | ID1 | ID2 | Value2 |
| Check | calc sum | calc count | calc count | calc sum |
EndQuery
Note values of 1.00 for "Count of ID1" for each value of Characteristic
3.
Query - Test.sql
SELECT DISTINCT Characteristic, SUM(Value1), COUNT(DISTINCT ID1), COUNT
(DISTINCT ID2), SUM(Value2)
FROM "Test.DB"
GROUP BY Characteristic
ORDER BY Characteristic
Note correct values for "Count of ID1" for each value of Characteristic
4.
Restructure Test.db so that Value1 comes after ID2 in the field roster.
Re-run Test.qbe.
Note correct values for "Count of ID1" for each value of Characteristic
To index
PX0609 Form / Report run - unsynchronzied toolbar buttons
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 P4 | 11 Build 302 | True |
PROBLEM:
When Standard Menu is unchecked in a form's WindowStyle dialog, switching between two or more such forms, will cause the edit button on toolbar to be unsynhronized with the actual edit mode status.
SETUP:
Open P10 and create two new forms with any DataModel . No Code involved . Uncheck 'Standard Menu' in Windows Style of form. Run those forms and toggle edit mode (also Pressing F9 etc). Switching between forms, I go out of synchronization .
Reported by: Spaggiari Fabio
Date: 3 October 2001
To index
PX0611 Report run - Publish As - Text
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 10.0 | 11 Build 302 | True |
SUMMARY:
A single table report with a MRO layout showing one field per record is not published to text in P10. It works fine in P9 Sp4.
SETUP:
Create a report based on Customer. Select MRO, and remove all fields but City. Run and publish as text.
Result in P9
4 October CUSTOMER Page
2001
City: Kapaa Kauai City: Freeport City: Kato Paphos
City: Christiansted City: Waipahu City: Christiansted
Result in P10
4 October 2001 CUSTOMER Page
That is: Only the report and Page header.
To index
PX0612 ObjectPAL - passing number to a DLL
| Type of error: | First verified: | Last tested: | Verified by me: |
| Error | 9.0 | 10.0 | False |
SUMMARY:
It seems that anytime a number type is passed in to a .DLL, that value is corrupted (it comes into the .DLL as "-NAN" Not A Number).
DESCRIPTION:
Paradox 9.
It seems that anytime a number type is passed in to a .DLL, that value is corrupted (it comes into the .DLL as "-NAN" Not A Number). The value must be converted either to a string or a longint value before being sent into the .DLL and reconverted back with the C++ Code.
This issue was discussed in a couple of threads in the Paradox 9 Newsgroup.
I have pasted text from a message from someone else that has this same issue in Paradox 9 (simply because they have code samples) He seemed to convert to a string and back once in the DLL, we made it into a longint and converted. Either way, the issue is the same...Paradox 9 cannot pass Number types to DLLs.
< Quotes from an older Paradox 9 Newsgroup Message >
....
Everything went smoothly, until I noticed a floating-point parameter passing problem between Paradox 9 and a C++ DLL. Any floating-point values that were passed to a function in the DLL were being received as garbage. I posted my findings to a NG and received a reply stating that Corel may have changed the way Paradox handles floating-point values. I finally had to abort the project and stick with Paradox 7, which had no issues with the DLL.
Recently, I have come back to this task with some more ideas, but every attempt I have taken has failed. I have simplified the code down to the extreme basics in order to isolate the problem. Here is what it looks like:
C++ code
(C++ Builder 4 - Created new DLL, and added the following test function.)
extern "C" __declspec(dllexport) double ParameterPassing( double doubleTest,
short int integerTest, char *stringTest ) ;
extern "C" __declspec(dllexport) double ParameterPassing( double doubleTest,
short int integerTest, char *stringTest ) {
double returnTest;
char buffer[80];
// Message boxes to view each of the passed parameters
sprintf(buffer, "%f", doubleTest);
MessageBox(NULL, buffer, "doubleTest, as received by C++", MB_OK);
sprintf(buffer, "%d", integerTest);
MessageBox(NULL, buffer, "integerTest, as received by C++", MB_OK);
MessageBox(NULL, stringTest, "stringTest, as received by C++", MB_OK);
// Return a value as a test.
returnTest = 3.14;
return returnTest;
}
Paradox code
(Paradox 9 with SP 3 - Created one form with a textbox to see the return value, and a button to execute the code.)
Uses block:
Uses myDLL
ParameterPassing( doubleTest cdouble, integerTest cword, stringTest cptr ) cdouble [STDCALL]
endUses
pushButton event:
method pushButton(var eventInfo Event)
;; return_value is my textbox to see what comes back.
return_value = ParameterPassing( 3.14, 5, "Hello, World!" )
endMethod
OK. The C++ compiler is set for STDCALL calling convention. I compile the code to a DLL, and then run the Paradox form. No problems so far.
Trigger the pushButton event, and the first thing I get is "Unexpected: Floating point error was generated." I click "OK", and then trigger the event again.
This time, there is no error message, and my message boxes from the C++ DLL start popping up. The doubleTest variable displays as "-NAN", but the other two variables display just fine. And the real kick-in-the-head is that my 3.14 return value comes back with no problems.
If I switch everything over to CLONGDOUBLE/long double, I get the same results, except that the DLL tells me that doubleTest is "-0.0000000".
I think I have ruled out problems with the calling conventions. It seems that if there is a problem from that aspect, Paradox can't even find the DLL's function.
...
< /Quotes from an older Paradox 9 Newsgroup Message >
Now mind you, I have not really examined this example in great detail. but the symptoms described here are identical to ours. Basically, Paradox 9 passes a Number Type to a DLL that we have written. What actually gets into the DLL is -NAN. We ended up multiplying it by 1000 and passing as a longint then dividing out again once inside the DLL. Nothing really weird going on in our code...just routine Uses Block and very simple data being moved back and forth.
Reported by: Tim Smith
Date: 2 October 2001
COMMENTS:
From: Josce
Here is the Paradox code:
uses "testdbl.dll"
TestDouble(d CDOUBLE) CLONG
endUses
method run(var eventInfo Event)
Var
n number
endVar
n = 2001.75
TestDouble(n)
endMethod
and here is the code C code:
#define DLLEXPORT __stdcall __export
int DLLEXPORT TestDouble(double d)
{
char p[256];
sprintf(p,"Double = %f",d);
return(0); // now p = "-nan"
}
From: Paul Cronk
Tim;
I'm sorry to say that your problem has not been addressed in Paradox 10.
The code I have written is very close to yours and is attached for reference. The only work around I see is placing the return code in an environment variable, and sending it back to the Paradox application. It seems that the only time this function is successful, is if the data resides in the code segment of the DLL (ie, defining a literal)
To index
PX0613 ObjectPAL - dataTransfer.transferData() - default directory
| Type of error: | First verified: | Last tested: | Verified by me: |
| Error | 9.0 P4 | 11 Build 302 | True |
PROBLEM:
Seems like they both transferData() and importSpreadsheet() now, P9 SP4 and P10, defaults to get the file from the directory where pdxwin32.exe is stored or maybe last directory activated. Sorry to say, all examples in the help files ignores to specify a path to the file to be imported.
The error you will get is: Unable to get table field descriptions.
To index
PX0614 Form run - formatted memo field
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 P4 | 11 Build 302 | True |
PROBLEM:
A form with a table with a formatted memo field. When form is in edit mode, you can select text and bring up the Property dialog. When you close the dialog, the form is active, eg you can enter text in the memo field, but the color of the form's title bar indicates an inactive window.
If form is only window on Paradox desktop, you may have to minimize the form or Paradox to make the form get it's proper active color.
To index
PX0615 ObjectPAL - GPV - assigning value to textobjects in a report
| Type of error: | First verified: | Last tested: | Verified by me: |
| GPV | 10.0 | 11 Build 302 | True |
SUMMARY:
Assigning values to textobjects in a report from a form will cause a GPV.
SETUP:
A report based on a table with a single record layout and two text objects in the Page header, named txtReceiver and txtPeriod.
var
roi reportOpenInfo
r report
stReceiver string
stRange string
uio1, uio2 uiObject
endvar
stReceiver="Bertil"
stRange="January"
roi.name="textAssign"
roi.masterTable=":Priv:Answer"
roi.winstyle=WinStyleDefault +WinStyleHidden
r.open(roi)
sleep()
errorTrapOnWarnings(Yes)
try
uio1.attach(r, "txtReceiver")
sleep()
uio1'text="Transporter till " + stReceiver ; GPV here
sleep()
uio2.attach(r, "txtPeriod")
sleep()
uio2'text="Period: " + stRange ; but most often here
sleep()
onFail
errorshow()
endTry
errorTrapOnWarnings(No)
r'DesignModified=False
r.show()
r.bringToTop()
r.maximize()
r.menuAction(MenuPropertiesZoomFitWidth)
r.wait()
In Paradox 10, you will get a GPV on first or second assignment. With an errorclear() in onFail, the textobjects have been assigned values. At least the first.
In P9, the code runs without any problem.
To index
PX0616 ObjectPAL - sysInfo() and enumLocks() - Net login name
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 8.0 P1 | 10.0 | False |
SUMMARY:
a) Running enumLocks() to obtain lock status of a table, will give blank information if the username is >15characters.
b) sysInfo() Username element will also contain incorrect information.
DESCRIPTION:
Using a network logon name longer than 15 characters. You run enumlocks to obtain lock status placed on a table. The output lock table does not contain the 16+ character user name but the rest of the information LockType, NetSession Session & RecordNumber are all completed correctly.
if tc.open(":thealias:testtable.db") then
tc.enumLocks(":locks:testtable.db")
tc.close()
else
msgStop("Stop!", "Can't open testtable.db table")
endif
I also suspect a similar problem exists with sysInfo to obtain usernames longer than 15 chars
Var
userSys DynArray[] AnyType
tc TCursor
endVar
sysInfo(userSys) ; fill the array with system information
if NOT tc.Open(":GICSDATA:LOGON.DB") then
errorShow()
Return
endif
tc.edit()
tc.InsertRecord()
tc."UserName" = userSys["UserName"]
tc.endedit()
tc.close()
As soon as you make the network logon name <= 15 chars it works as expected.
Clients running Paradox 9 SP3 on Win98 machines, with network accounts on WinNT 4.0 SP6 file server
From: Leo
Date_ 11 October 2001
Verified by: Liz
Test environments:
1. Windows 2000 Pro SP1, Paradox 10, BDE 5.1.1
2. Windows 95a, Paradox 8 SP1, BDE 5.1.1
Results were identical in each situation (except that different tables and forms were used and the path to the BDE config file is different (see below)). Each of the three enumLocks processes wrote the locks to a differently named table in priv and each process operated against the same table in priv.
Logged into computer as "elizabethwoodhouse" (18 chars)
1. Open table, enter edit mode, type in field, from menu, select Tools > Security > Display Locks. Resulting table displays "elizabethwoodho" in the username field.
2. With said table still locked, open tcursor and issue tc.enumLocks(..), look at resulting table, username field is _blank_.
3. Close said table, put tframe on form, run form, edit field, run code from button which does tframename.enumLocks(..), look at resulting table, username field is _blank_. (Note, msg displays in status bar (in P10, forgot to check in P8) saying "Data is too long for field.")
4. Unlock said table, run two lines of code:
sysInfo(userSys)
userSys.view()
The username element in the array was "elizabethwoodho" followed by the path to the BDE config file, for example:
elizabethwoodhoC:\Program Files\Common Files\Borland Shared\BDE\IDAPI32.CFG
...exactly like that.
So, enumLocks can't handle longer user names, and assuming tacking on the path to the BDE Config is _normal_, then one need simply get a substring of the value from the array. (NOTE: It appears NOT to be normal as sysInfo() when I'm logged in as "Administrator" does not tack on that path - still, the user can substr, knowing it will only return the first 15 chars of the login name anyway.)
To index
PX0617 Form run - Ellipse objects
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 P4 | 11 Build 302 | True |
SUMMARY:
If I place an ellipse on a form and give it a thicker than normal frame, in runtime, the frame is "cut-off". For example, some of my code changes the color of a thick frame from white to blue. When the frame changes color, parts of the frame stay white.
SETUP:
Create a form. Put an ellipse on it. Set the frame thickness to the maximum in the dropdown on the properties tab (Line.thickness = 105 in the Object Explorer/Appearence Tab). Set the frame color to green. Place a button on the form. On the pushbutton do this:
method pushButton(var eventInfo Event)
if Circle.line.color = green then ;The ellipse is named "Circle"
Circle.line.color = red
else
Circle.line.color = green
endif
endMethod
When I run this form and push the button, the frame changes to red, but the four sides of the ellipse (as defined by the square "wireframe" in design mode) stay green, showing a circle with a red frame that has four green edges. I am running 9.00.883.
This event occurs if the Line.Thickness property is anything over the default, it is just most visible if you use a thicker value.
Reported by: Tim Smith
Date: 22 October 2001
MY COMMENTS AND WORKAROUND:
If you resize the form in anyway, the problem disappears.
Here's a workaround: put a boxobject behind the ellipse and name it box.
Turn off the boxobject's property containObjects
box.bringtofront()
if elps.line.color = green then
elps.line.color = red
else
elps.line.color = green
endif
sleep()
box.sendtoback()
sleep()
To index
PX0618 Form run - Ellipse objects
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 P4 | 11 Build 302 | True |
PROBLEM:
Selecting another line style than Solid, and another thickness than the thinnest, will draw the ellipse with a solid line. The dotted linestyles does only work with thinnest line.
To index
PX0619 Event model - menuAction(menuFileExit)
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 P4 | 11 Build 302 | True |
PROBLEM:
MenuFileExit triggered from Paradox standard menus is not sent to a form on desktop.
To index
PX0622 ObjectPAL - tcursor.isValid()
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 10.0 | 11 Build 302 | True |
SUMMARY:
If a table lookup is defined as Applicable Fields, tcursor.isValid() will always return True.
SETUP:
I've a problem with a piece of code with the isValid method in it, which runs but produces a result different to what I was expecting. I created the simple test below with new tables and form and am still getting unexpected results.
The following steps may seem long but it only takes a few minutes to perform.
I am running Paradox9 SP3 (9.00.738) on Win98.
Create a lookup table with the following structure.
TESTLOOK.DB
LookId I*
LookName A10
Populate the table with the following records.
111, AAA
222, BBB
333, CCC
Create a master table with the following structure.
TESTMAST.DB
MastId I*
LookId i
LookName A10
Define a table lookup on TESTMAST.LookId field linking it to TESTLOOK.LookId field. Set the following lookup options.
Lookup Type = Current fields
Lookup Rights = Fill and View
Create a form named TESTMAST.FSL. Place the TESTMAST.DB in the data model. Place a 1 X 1 MRO on the form. Rightclick the MRO and select Define Record and place all 3 fields in the SRO.
Place a PushButton named IsValid on the form, outside the SRO. Place the following code in the pushButton method.
method pushButton(var eventInfo Event)
var
tc tCursor
endVar
tc.open(active.self.tableName)
msginfo(active.name+" = " + active.value,
tc.isValid(active.name, active.value))
tc.close()
endMethod
Run the form. Go into Edit mode. Enter 1 for MastId. Press Enter.
Press Ctrl+Spacebar for lookup table and select 111 (AAA) record.
Don't press Enter. Press the isValid PushButton. Result is True.
Edit and change the value in LookId to 1 which is not in TESTLOOK.DB.
Don't press Enter. Press the IsValid PushButton. Result is False.
Delete the current record. End edit mode. Close form.
Restructure TESTMAST.DB and change the Lookup Type for LookId field from Current Fields to Applicable Fields. Save the changes.
Repeat the above test First result is True.
Second result is also True.
If the Lookup Type is changed back to Current Fields again, the result is True and False again.
Reported by: Sunil Pillai
Date: 20 November 2001
To index
PX0623 ObjectPAL syntax error - Internal error: Between Parses
| Type of error: | First verified: | Last tested: | Verified by me: |
| Error | 5.0 | 11 Build 302 | True |
SUMMARY:
Code in a proc in a script or library containing a syntax error - proc has no return type specifed but it has a return statement - will cause an error, "Internal error: Between Parses" if any event in the script/library contains code.
SETUP:
To get the error, in the script's proc, create a proc whose declaration doesn't specify a return type, but which does in fact return something:
Proc getError(liError LongInt)
return daErrors[string(liError)]
endProc
(daErrors is a dynArray of type string declared in the script's var)
Compile the code. No syntax error. Now add a comment line in any of the events, and compile the script once again. Now, you'll see the error.
The above causes the parses error but _only_ if it's in the script's proc. Fixing it to:
Proc getError(liError LongInt) String
return daErrors[string(liError)]
endProc
...eliminates the parses error.
Tested in P10SP2 and P8SP1.
To index
PX0624 ObjectPAL - GPV - filesystem.findFirst()
| Type of error: | First verified: | Last tested: | Verified by me: |
| GPV | 10.0 P2 | 11 Build 302 | True |
PROBLEM:
A call to fileSystem.findFirst() after a fileSystem.unAssign() will cause a GPV.
SETUP:
This sequence of code will cause a GPV in the second fileSystem.findfirst().
var
fs filesystem
endvar
fs.findfirst("c:\\*.*")
fs.unassign()
fs.findfirst("c:\\*.*")
WORKAROUND:
remove fs.unAssign().
Reported by: Ivica Kolar
To index
PX0626 ObjectPAL - sql.executeSql() - default name of answer table
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 10.0 P2 RT | 11 RT Build 233 | True |
SUMMARY:
Paradox 10 Runtime SP2:
Running executeSql(database) without specifying the name of the answer table will create an answer table named .db (no name, only extension) in the private directory
SETUP:
I have a button running the following code against a table on a MSSQL server.
stTserv="dbo.BUTIKERpersonal"
sq=SQL
Select *
From ~stTserv
endsql
if not sq.executesql(db) then errorshow() return endif
The code works as expected and creates an answer table in PRIV if I run on my machine with P10 SP2 and BDE 4.51.
However when I run the same code on another machine with P10 Runtime SP2 and BDE 5.11, I get no error message and no answer table!
If I change to
if not sq.executesql(db,":PRIV:TEMP") then errorshow() return endif
or
if not sq.executesql(db,tc) then errorshow() return endif
Then it works on both computers and creates an answer table or a tcursor
When I run the SQL query it creates an answer table name ".DB", just a table without name! The data is there and if I copy it to another machine (can't open it directly as it is a RT only machine) with full P10 I can open up the table.
To summarize:
If I run
sq=SQL
Select *
From Table
EndSQL
if not sq.executesql(db) then errorshow() endif
and don't specify an answer table I will get an answer table in PRIV with the name .DB
I have tried to run the SQL on both local Paradox tables and remote MSSQL tables and get the same result.
Reported by: Anders Jonsson
Date: 12 December 2001
Verified by: David Scavo
I can verify that I am seeing the same thing (WinNT Terminal Server v4 SP5)
P10
Table :PRIV:ANSWER.DB is created
P10 Runtime
Table :PRIV:.DB is created
To index
PX0627 Form / Report design - TrueType substituted fonts
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 | 10.0 P2 | False |
SUMMARY:
a) Using P10 (or P9) we have no way of detecting usage of TT substituted fonts. Even ObjectPAL is of no help here.
b) P10 (and P9) gives no information about TT substituted fonts (like Arial CE etc.). Under some circumstances script support of such fonts just grounds to 0, i.e. Western. The only way for detecting presence of such fonts in P10 forms/reports is an INDIRECT one, i.e. by the sideffects of malfunctioned script support.
NOTE: Language drivers used to store the messages can't handle the characters used to describe the problem.
SETUP a):
1. Create new blank form (or report) with one text object.
2. Using Properties/TextProperties dialog for font of Text object choose ArialCE/Western.
2.1 Close dialog box.
2.2 Using right mouse click Inspect TextProperties of Text object. Font listed is Arial i.e. NOT the ArialCE.
3. To set Font property of Text object, try using ObjectExplorer/Appearance/FontTypeface drop down list.
Choosing ArialCE from dropdown list of fonts field Typeface still shows Arial i.e. NOT the ArialCE.
4. Save/close form (or report)
5. Open form/report by P8 (not the P9) and Inspect properties of text object.
You will find that font name is correct, i.e. Arial CE as it should be.
SETUP b):
1. Create new blank report with one text object.
2.1 For the TextProperties/Font of Text object choose ArialCE/CentralEuropean.
2.3 As value i.e. contents of Text object set "ccšdž". See Note1.
3. Save/Close Report.
4. Restart Paradox
5. Run Report.
6. Observe contents of Text object.
Text object shows: ArialCE/Western equivalent of "ccšdž".
7. Do the steps 1-4 but this time using form.
7.1.Run Form. Contents of Text object should be valid.
7.2 Run/Close some report. (Even blank one will suffice.)
7.3 Appearance of the contents of the Text object is switched to ArialCE/Western equivalent of "ccšdž".
Reported by: Ivica Kolar
Note 1: Characters used by Ivica cannot be stored by the language drivers used for my tables.
To index
PX0629 Paradox Runtime - Notebook objects
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 10.0 RT | 11 RT Build 233 | True |
SUMMARY:
a) In Paradox 10 Runtime, Alt+Delete will remove a notebook page in a form with a notebook containing more than one page.
b) Running a form, delivered or not, with a notebook object, pressing Alt + Insert causes new notepages to be inserted. When cursor is in a tableframe, Alt+Insert adds a column in the table frame.
The problem is restricted to Paradox 10 Runtime. Paradox 9 & 10, and Paradox 9 Runtime are unaffected.
Alt+Delete problem reported by: Michael Melling
Date: 8 January 2002
Verified by: Ivica Kolar
Alt+Insert problem:
Reported by:
Fabio Spaggiari
Anders Jonsson
Date: 14 January 2003
Verified by:
Bruce R. Brunk
Ivica Kolar
WORKAROUND Alt+Delete-problem:
Reported by: Ivica Kolar
There is no actions generated so all we can do is trapping for 'Alt-Delete':
method keyPhysical(var eventInfo KeyEvent)
if eventInfo.isPreFilter() then
;// This code executes for each object on the form
if eventInfo.vCharCode() = VK_DELETE then
if eventInfo.isAltKeyDown() then
disableDefault
; msgInfo("ALT-DEL","No, no.")
endif
endif
else
endIf
endMethod
To index
PX0630 ObjectPAL - getLanguagedriver()
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 7.0 W95 P4 | 11 Build 302 | True |
SUMMARY:
An issue with the RTL method system type - getLanguageDriver().
With Paradox 'swedfin' specified both under Drivers | Native | Paradox and under System | Init, I get ANSISWFN returned. ANSISWFN is the PDOX ANSI Swedfin driver.
Using sysInfo(), the element LanguageDriver returns "swedfin".
This has so far been verified by two other Paradox users. As seen from the messages below, the problem is not only related to Paradox 'swedfin' but also to other ascii based drivers.
COMMENTS:
From: Ivica Kolar
Date: 14 January 2002
Here is my testresults using 'Paradox Slovene 852':
PC1 W98: P10 SP2/ RT SP2, P8, BDE 5.11/4.51
getLanguageDriver() returns 'anczech'.
Note: 'anczech' is ansi czech driver.
PC2 W98: P10 SP2/ RT SP2, BDE 5.11/4.51
P10 RT SP2: Using 'Paradox Slovene 852':
getLanguageDriver() returns 'anczech'.
P10 SP2: Using 'Paradox Slovene 852':
getLanguageDriver() returns 'ansislov'.
Note: 'ansislov' is our ansi driver version.
However neither of returned values is correct, expected was 'slovene'.
I'm repeating test today, results:
W98/95, P10 SP2/RT SP2, BDE 5.11
Issue occurs using ascii driver only.
1. Using 'swedfin' I got 'ANSISWFN' confirming your result.
2. Using 'czech' I got 'anczech'.
3. Using 'slovene' I got 'ansislov' but not consistently.
With PC1:W98 I got 'anczech'.
With PC2:W98 I got 'anczech' with P10.
but I got 'ansislov' with P10 RT.
With PC3:W95 I got 'ansislov'.
MY COMMENTS:
I can verify Ivica's results on Paradox 'slovene' 852.
On a Win95 PC, I get anczech
On a Win2000 PC, I get ansislov.
My guess is, getlanguagedriver() is transforming/translating the langaugedriver with help of CodePage information, but I haven't been able to verify this. On my Win95 PC, I have OEM Codepage 850. I would guess the CodePage on a Win2000 PC is 1252.
To index
PX0631 ObjectPAL - fileBrowserEx() - unregistered extensions
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 10.0 P2 | 11 Build 302 | True |
SUMMARY:
If two files with names of the form X.Y and X.Y.Z are in the same directory, fileBrowserEx() will return an incorrect string when selecting the X.Y file.
SETUP:
Environment:
Paradox 10.0.0.663
Windows 2000 version 5.00.2195
1. Create a file named "ABC.DEF" in the :PRIV: directory.
2. Create a file named "ABC.DEF.GHI" in the :PRIV: directory.
3. Create the following script:
method run(var eventInfo Event)
var
fb FileBrowserInfo
fsVal String
endVar
fb.AllowableTypes = fbFiles
fb.SelectedType = fbFiles
if fileBrowserEx(fsVal, fb) then
fsVal.view("fsVal")
endIf
endMethod
4. Execute the script, choose the :PRIV: alias, and select the file "ABC.DEF.GHI". The string ":PRIV:ABC.DEF.GHI" will appear in the view() box. This is the correct path for the file.
5. Execute the script again, choose the :PRIV: alias, and select the file "ABC.DEF". The string ":WORK:*.*" will appear in the view() box. This is both the wrong alias and the wrong file name.
Notes:
1. The error does not depend on the particular alias. The problem occurs even in the :WORK: directory.
2. If the ABC.DEF.GHI file is removed or renamed, fileBrowserEx() will return correct results when the ABC.DEF file is selected.
3. The error does NOT occur if the extension (.DEF in the procedure above) is a Windows registered file type. For instance, changing "DEF" to "EXE" in both file names above will produce correct results.
Reported by:
From: Nick Pomponio
Date: 26 January 2002
To index
PX0632 ObjectPAL - report.publishTo(filename, publishToHtml)
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 10.0 P2 | 11 Build 302 | True |
SUMMARY:
report.publishTo(fileName, publishToHtml) does not work.
DESCRIPTION:
I can't find any example for publishToHTML (ObjectPAL).
var
r report
endvar
if r.open ( "cust.RSL" ) then
r.publishTo ( "thtml", publishtoHTML )
r.close ()
endif
Nothing happens.
Reported by: Ing-Marie Bäckman
Date: 26 January 2002
MY COMMENTS:
What does work is
r.open("reportname")
r.menuAction(menuHtmlPublish)
but then the user has to provide all information.
I cannot get
r.open("reportName")
r.publishTo("htmlfile", publishToHtml)
to work.
Neither can I get the example below to work
method run ()
var
r report
dyn dynarray[] Anytype
endVar
r.open ("myreport")
dyn ["ReportTitle"] = "This is my report"
dyn ["convertURLs"] = false
dyn ["CSSLevel"] = "Strict"
if not r.publishTo ("myfile.html", publishToHTML, dyn) then
errorshow()
endif
endMethod
To index
PX0633 ObjectPAL - report.print(reportPrintInfo) - SQLString
| Type of error: | First verified: | Last tested: | Verified by me: |
| Error | 9.0 P4 | 11 Build 302 | True |
SUMMARY:
In P8 or P9, reportPrintInfo structure got an element SQLString. It does not work.
DESCRIPTION AND SETUP:
I am getting the following error when trying to print a report using ReportPrintInfo.SQLString.
Cannot open test.DB
Expecting a column separator in table header
Do you want to replace test.DB in the data model?
I can successfully open the report using the same query in a ReportOpenInfo.SQLString.
The following code demonstrates the problem. I have created a simple table called test, and a report called test that has a tableframe defined to display the test table.
method pushButton(var eventInfo Event)
var
r Report
oi ReportOpenInfo
pi ReportPrintInfo
endvar
oi.Name = "test"
oi.SQLString ="SELECT * FROM test"
r.open(oi) ; this works
r.close()
pi.Name = "test"
pi.SQLString ="SELECT * FROM test"
r.print(pi) ; this fails
endMethod
Reported by: Tim Healy
Date: 10 February 2002
MY COMMENTS:
Also tested with the dynarray syntax in P10, and it still does not work. I guess it should not be there in report.print()
To index
PX0634 TableStructure dialog - Secondary index on Logical column
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 | 11 Build 302 | True |
PROBLEM:
In P7, I can create a secondary index based on a Logical field.
In P9 and P10, the Logical fields are not available in the restructure dialog, secondary index tab. I can create the index using ObjectPAL, and the index can be used e g in a tableView, but they are not shown as part of a compound index in Info Structure dialog.
To index
PX0635 Form run - Hotkey and centerlabel
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | | 11 Build 302 | True |
SUMMARY:
Paradox 10's hotkey feature throws off the label centering, the & is counted in the centering at design time, but not at run time...
Reported by: Kevin Zawicki
Date: 20 February 2002
WORKAROUND:
In the textobject's open event, post an action and in the action event add this code:
if eventInfo.id()=UserAction+1 then
disableDefault ; Prevent bubbling
container'centerlabel=True
; Order of these is two important
self'designSizing=TextSizeToFit
endif
To index
PX0636 Form run - Zoom - FitWidth / FitHeight / BestFit
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 | 11 Build 302 | True |
SUMMARY:
Scrolling a table frame using nextrecord and previousrecord in a form zoomed to FitWidth or BestFit, will cause the redrawal of the tableframe to be unacceptable after a while.
Moving the cursor over the tableframe will also cause a behaviour as if the fields had a flat look.
SETUP:
Create a form based on Customer with a tableframe showing the table. Add this code to the open event.
maximize()
menuAction(MenuPropertiesZoomFitWidth).
Run the form, Use down arrow / up arrow (or F11/F10) to scroll table a couple of pages back and forth.
Move the mouse over the tableframe to see the fields at like they had flat look property=TRUE. This behaviour can be corrected by a disableDefault in mouseExit. As this will disable cursor being restored to MouseArrow upon exit, mouseEnter should also be disabled.
COMMENTS 2003-05:
Scrolling effects could have been caused by lack of memory. I cannot recreate it now.
To index
PX0638 ObjectPAL - dataTransfer.transferData() - errorTrapOnwarnings()
| Type of error: | First verified: | Last tested: | Verified by me: |
| Error | 10.0 P2 | 11 Build 302 | True |
SUMMARY:
Importing an Excel sheet using dataTransfer.transferData() in a try block, errorTrapOnWarnings(Yes) will cause Invalid Char errors for every column on first row of data in the Excel sheet for no obvious reason.
importSpreadsheet() will also cause this error with no try block and errorTrapOnWarnings(No) specified.
SETUP:
Export Customer table from Samples directory to Excel.
Import it back using code below:
var
dt DataTransfer
endVar
dt.setSource ( getAliasPath(":work:")+"\\customer.xls" , dtExcel4)
dt.setSourceFieldNamesFromFirst(True)
dt.getSourceRange()
dt.setDest ( getAliasPath(":work:")+"\\ReturnedCustomer.db" )
dt.setProblems ( True )
dt.setKeyViol ( True)
errorTrapOnWarnings(Yes)
try
dt.transferData ( )
onFail
errorShow()
endTry
errorTrapOnwarnings(No)
One of the Invalid character errors says: "Invalid Character.: "8"08-555-0269
To index
PX0640 Paradox Runtime - Files missing for importing spreadsheet files
| Type of error: | First verified: | Last tested: | Verified by me: |
| Error | | 11 RT Build 233 | True |
SUMMARY:
Importing an Excel spreadsheet in Paradox 9 Runtime SP3 and Paradox 10 Runtime SP2 does not work. You'll get an error "Unable to get table field description."
SETUP:
Export Customer table from Samples directory to Excel.
Import it back using code below:
var
dt DataTransfer
endVar
dt.setSource ( getAliasPath(":work:")+"\\customer.xls" , dtExcel4)
dt.setSourceFieldNamesFromFirst(True)
dt.setSourceRange("< Spreadsheet >") ; remove spaces around spreadsheet
; dt.setSourceRange ("A:A1..A:I56")
dt.setDest ( getAliasPath(":work:")+"\\ReturnedCustomer.db" )
dt.setProblems ( True )
dt.setKeyViol ( True)
errorTrapOnWarnings(Yes)
try
dt.transferData ( )
onFail
errorShow()
endTry
errorTrapOnwarnings(No)
COMMENTS:
From: Ivica Kolar
Opening Paradox 10 Runtime and running given script results with errors:
#1 PerfectFit Error: "PerfectFit Resources not found: PFIT100EN.DLL"
#2 "Unable to get table field description.
Copying PFIT100EN.DLL from Standard installation (ver. 663) to
...\PARADOX 10 RUNTIME\PROGRAMSsolves #1.
Coping EXCELIMPORT100.DLL from Standard installation (ver. 663) to
...\PARADOX 10 RUNTIME\PROGRAMS\CONVERTsolves #2.
Using dt.setSourceRange ("A:A1..A:H5") I got:
#0 SmartHeap Library: MEM BAD POINTER
Is this error result of DLLs ver.663 used by RT ver.658 ? Probably not, but I can not be sure.
Just checking contents of the ...\Paradox 10 Runtime\Programs\Convert folder.
Installed contents:
--------------------------
AmiProExport100.dll
AsciiExport100.dll
ExcelExport100.dll
Lotus123Export100.dll
QuatroProExport100.dll
RTFExport100.dll
RTFImport100.dll
Word97Export100.dll
WordPerfect6Export100.dll
Missing contents could be:
---------------------------------
AmiProImport100.dll
AsciiImport100.dll
ExcelImport100.dll
Lotus123Import100.dll
QuatroProImport100.dll
Note: Convert folder of P10 Standard has above files.
Plus, also missing is PFIT100EN.DLL at ...\PARADOX 10 RUNTIME\PROGRAMS\ folder.
With Paradox 9 Runtime result is "Unable to get table field descriptions".
Workaround (this was harder to catch then for P10 RT):
1. Create folder ..\PARADOX 9 RUNTIME\Programs\Convert
2. Copy files (from P9 Convert folder) to Convert folder:
CVCTYP90.DLL
CVCORE90.DLL
Using dt.setSourceRange ("A:A1..A:H5") I got:
#0 SmartHeap Library: MEM BAD POINTER
For all import/export to work I have also included the registry content of
HKLM>Software>Corel>Conversions>10. The easiest way is, open the registry in full Paradox and save ONLY this key, it can be added to the Runtime system very easy by double-click on the .reg file exported from registry.
To import a QuattroPro spreadsheet, you'll need at least QuattroPro9Import and QuattroProImport registry entries in the Import section and acsiiExport entry in the Export section
Tests done and workarounds found by:
Ivica Kolar
"Alvaro Nunes"
"Ken Loomis"
Problem originally reported by: Robert Harder
CONCLUSION:
if not all export and import dlls are installed by default in Paradox Runtime, files needed for dataTransfer() imports should be mentioned in the Paradox Runtime help files.
WARNING:
You have to contact Corel to get the rights to distribute files from full Paradox with your Runtime. This warning may be removed when copyright issues has been researched.
To index
PX0641 Form run - Resource leakage - Field'Alignment=Center
| Type of error: | First verified: | Last tested: | Verified by me: |
| Resource | 10.0 P2 | 11 Build 302 | True |
SUMMARY
A form containing a field with Alignment=Center will cause a loss of resources in Paradox 10, but not in previous versions.
SETUP
Create two blank forms without any tables in the datamodel.
Form B does not contain anything but the page. It is used as a form to switch to and from.
On Form A, add a field and change the display type to Checkbox. Assign value TRUE when checked and FALSE when unchecked. Name the field fldCheck.
Add a second field. Change Display type to Edit. Select Define field, and make it calculated with the following formula: iif(fldCheck'value, "Yes", "No")
Change the Alignment property on the text tab in Property dialog to: Center.
Add a third field.
Let the Display type be Labeled. Change the Alignment to Right, and uncheck TabStop.
Open Resource Meter in Win9x or TaskManager in Win2000. Look at GDI resources and System resources in Resource Meter, and GDI Objects in TaskManager.
Run the forms and switch between the two forms toggling the checkbox to recalculate the formula now and then.
GDI resources and System resources drops down. GDI Objects increases by 4 for each switch of active form.
Now restart Paradox and change the Alignment to Left. The resource leakage is gone.
This has been tested on Win95B, Win98 and Win2000.
Requirements:
Three fields, or more.
Fields have to be unbound.
Reported by: Riccardo Bertoncelli
Verified by: Ivica Kolar
ANOTHER SETUP:
1. Create new form
2. Add field (labeled) object, set Properties/Text/Alignment/Right
3. Add field (edit) object, set Properties/Text/Alignment/Center
4. Add field (edit) object, set Properties/Text/Alignment/Center
5. Save the form as f1.fsl
Run form and enter values in the fields some 20-40 times.
This form also causes drop of resources.
To index
PX0642 ObjectPAL - tracer methods
| Type of error: | First verified: | Last tested: | Verified by me: |
| Error | 9.0 P3 RT | 11 RT Build 233 | True |
SUMMARY:
Using any of tracer methods except tracerOn() and tracerOff() results with error when exiting Paradox Runtime: "SmartHeap Library: MEM_BAD_POINTER."
DESCRIPTION:
According to Paradox help files: Unsupported System type procedures in Runtime:
· debug is ignored; it does not cause an error.
· The method tracerWrite is limited in Paradox Runtime; it works only when used after an instance of tracerOn.
Using any of tracer methods except tracerOn() and tracerOff() results with error exiting Runtime:
"SmartHeap Library: MEM_BAD_POINTER."
If I press OK button in error messagebox the RT closes normaly.
If I press Cancel button in error messagebox the RT closes abnormaly i.e. I got:
["MS VC++ Runtime Library" Runtime Error. Program ...PDXRWN32.EXE. Abnormal program termination.]
If tracerOff() is used or not, has no effect on final result.
Verified by:
Anders Jonsson
Ivica Kolar
Reported by: Manuele Grueff
To index
PX0643 ObjectPAL - index keyword
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 P3 | 11 Build 302 | True |
SUMMARY:
Using the index keyword in ObjectPAL, to create a secondary index, in such a way an error is created, will remove the primary index.
SETUP:
Create table "test" using the following code:
enumrtlconstants(":PRIV:test")
Table test at this point has a two-fields primary key.
Now execute (note caseInsensitive):
index ":PRIV:test"
caseInsensitive
on "ConstantName"
endindex
An error message is being generated ("Index name required"), and the *primary index* disappears!
The following code:
index ":PRIV:test" caseInsensitive on "ConstantName" to "ConstantName" endindex
generates "Trying to create a Paradox index < >, which can't be named the same as a field", but the primary index remains intact.
Reported by: Vladimir Menkin
Date: 5 March 2002
To index
PX0644 GPV on exit from Paradox
| Type of error: | First verified: | Last tested: | Verified by me: |
| GPV | 10.0 P2 | 11 Build 302 | True |
SUMMARY:
Under certain circumstances the use of tracer methods will cause a GPV on exit from Paradox.
SETUP A)
1. Create new form
2. add the code below to init() method
setQueryRestartOptions(QueryNoLock)
tracerOn()
3. Check option Program/CompileWithDebug
4. Save the form
5. Run/Close the form
6. Exit Paradox
Result: GPV
Notes:
There is no GPV if:
step 3 is omitted or
any of 2 code lines in init() is omitted or
if tracerOff() is added to, for example, close() event or
if tracerShow() is added before setQueryRestartOptions(QueryNoLock) in init event
SETUP B)
7. Open the Form
8. Uncheck option Program/CompileWithDebug
9. Add button object and code in pushbutton:
tracerHide()
; tracerSave() or tracerClear() or tracerWrite()
10. Save the form
11. Run the form
12. Push button
14. Exit Paradox
Result: GPV
Notes:
There is no GPV if:
any of 2 code lines in init() is omited or
if tracerOff() is added to, for example, close() method or
if tracerShow() is inserted before the call to setQueryRestartOptions(QueryNoLock) in init event
Remark:
I can not recreate above with P9.
Reported by: Ivica Kolar
Date: 6 March 2002
To index
PX0645 Print dialog - effects on Page Setup
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 10.0 P2 RT | 11 Build 302 | True |
SUMMARY:
Opening the Print dialog will make the papersize measurements in Page Setup dialog for a report change from centimeters/millimeters to inches.
SETUP:
When Paradox is launched the Page Setup dialog shows papersizes in centimeters / millimeters.
1. Open Print dialog for some report
2. Press Close (or Print)
3. Open report and inspect PageSetup units
Result: Units are Inches.
That stays unchanged until Paradox is restarted.
Reported by: Ivica Kolar
Date: 16 March 2002
To index
PX0646 Event model - menuAction(menuControlKeyMenu)
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | | 11 Build 302 | True |
SUMMARY
menu constant MenuControlKeyMenu should be triggered by Alt+-, but is triggered for a lot of combinations with Alt, eg Alt+z, Alt+o.
Help files says: MenuControlKeyMenu -SmallInt- Control menu was invoked by a pressing a key
SETUP:
Create a form with atextobject named txt.
Add self'text="" in the open event
In form's menuAction event add this code
var
si smallint
endvar
method menuAction(var eventInfo MenuEvent)
if eventInfo.isPreFilter() then
;// This code executes for each object on the form
else
;// This code executes only for the form
if eventInfo.id()=MenuControlKeyMenu then
if si.isAssigned() then
si=si+1
else
si=1
endif
txt'text=string(txt'text)+"hej*"+si.string()
endif
endIf
endMethod
Run form, and press Alt+z, or Alt+o
To index
PX0647 Form / Report run - effects of unchecking Standard menu
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 P4 | 11 Build 302 | True |
SUMMARY:
If a report has Standard Menu - property unchecked, the toolbar Print button and the File | Print menuchoice does not work at all. Menuchoice File | Publish As is replaced with Publish As Html. The menuchoices should be disabled, toolbar Print button too.
Problem does not show up when report is run from Design mode.
Same problem exists for a form with Standard Menu unchecked.
Tested in P9 SP4 and P10 SP2.
DESCRIPTION 1:
I'm using Paradox 9/SP4 with Windows ME.
I have a form with data and 2 buttons, one opens a form with a crosstab, and the other opens a report. Those windows remain open until I close them or I close the form which opened them.
When I try to print the crosstab form or the report, either the print button in the toolbar is greyed or it doesn't work at all. The same goes to the File/Print menu item.
After a few tests I discovered that the print button and the print menu choice are greyed until I first use the printer. I do it trying to print from design mode, which always works. Then they work as expected!
And with more tests I discovered cases that the print button and print menu are not greyed but they don't work at all.
Finally I found out that the "Standard Menu" property of the form or the report is responsible for that odd behaviour. I used to uncheck it, I didn't want to have any menus in my application.
Reported by: Manolis Christodoulou
Date: 5 March 2002
DESCRIPTION 2:
I have a report, which when run from ProjectViewer or File | Open | Report had a menuchoice File | Publish As Html instead of File | Publish As with a popupmenu. When run from design mode, File | Publish As showed up.
This was caused by Standard Menu being unchecked.
Reported by: Bertil Isberg
Date: 9 March 2002
RESEARCH BY:
Ivica Kolar
Bertil Isberg
Test results:
1. P9 SP4, P10 SP2:
Confirmed for Paradox Menu & Standard Toolbar.
Custom menu/toolbar works as expected.
2. P9 RT SP3, P10 RT SP2:
Print button and the File | Print menuchoice are disabled.
3. P8, P8 RT.
Confirmed for File | Print menuchoice only.
With RT, File | Print menuchoice is disabled.
4. P7 SP4
Confirmed for File | Print menuchoice only
Conclusion:
Runtime test result suggests the behaviour is a WAD.
The bug is that in Standard version Print button and the File | Print menuchoice are not disabled.
To index
PX0648 ObjectPAL - tcursor.enumFieldStruct()
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 10.0 P2 | 11 Build 302 | True |
SUMMARY:
enumFieldStruct() gives "TODAY" as default value instead of "NOW" for timestamp fields and for time fields.
SETUP:
Create a table with a timestamp column and a time column. For both of these columns add a Default value=NOW.
In a form add code below to a pushbutton event of a pushbutton object.
var
tc tcursor
tv tableView
endvar
tc.open(":Buggar:Px0648")
tc.enumFieldStruct(":Buggar:Qz0648")
tc.close()
tv.open(":Buggar:Qz0648")
tv.wait()
tv.close()
Look at the Default column in the Qz0648 table.Content is incorrect.
Reported by: Vladimir Menkin
Date: 11 March 2002
To index
PX0650 Report design - Page Setup dialog
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 10.0 P2 | 11 Build 302 | True |
SUMMARY:
Opening the Page Setup dialog when a report is open in design mode, will dirty the report; that is the DesignModified property will be set to True even if the Page Setup dialog is closed by the Cancel button.
SETUP:
1. Open an existing report in Design mode.
2. Open PageSetup dialog box
3. Press Cancel
4. Close report
Result is question "You have made changes to this document... ".
Reported by: Ivica Kolar
Date: 14 March 2002
To index
PX0652 Event model - mouseDouble()
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 P4 | 11 Build 302 | True |
SUMMARY:
mouseDouble in a field won't select the current word any longer.
WORKAROUND:
method mouseDouble(var eventInfo MouseEvent)
var
uiTarg uiObject
endvar
if eventInfo.isPreFilter() then
;// This code executes for each object on the form
eventInfo.getTarget(uiTarg)
try
if uiTarg.class="Text" and
((uiTarg.container'Class="EditRegion" and uiTarg.container.DisplayType="LabeledField")
or
(uiTarg.container'Class="Field" and uiTarg.container'DisplayType="EditField")) then
active.action(MoveRightWord)
active.action(SelectLeftWord)
endif
onFail
errorClear()
endtry
else
;// This code executes only for the form
endIf
endMethod
To index
PX0653 ObjectPAL - form.open(WinStyleHidden)
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 10.0 P2 | 11 Build 302 | True |
SUMMARY:
From a maximized form you can't open another form with the windowstyle constants WinStyleHidden. The called form will be shown.
Problem occurs in P10 Sp2, but not in P9 Sp4
SETUP:
Create two forms A and B,
In form A, add a pushButton with code
var
f form
endvar
f.open("formB", WinStyleDefault+WinStyleHidden)
sleep(3000)
f.show()
f.bringtotop()
Save.
Create FormB as a blank form.
Run formA. Maximixe it. Press the button. formB will show up immediately.
Run form A once again. Now let it be normal size. Press the button. form B won't show up until after the sleep(3000).
Reported by:
Joerg Schobert
Christian Chauvin
Date: 11 April 2002
To index
PX0655 Toolbars - ActiveX Toolbar
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 P3 | 11 Build 302 | True |
SUMMARY:
If you remove an ActiveX control from the toolbar and add another one, the newly added control will get the icon from the removed control.
SETUP:
Add an OCX/ActiveX control to the ActiveX toolbar. Close and restart Paradox.
Remove it.
Add another OCX/ActiveX to the ActiveX toolbar.
It keeps the same icon as the previous one ! Even if you leave and restart Paradox.
WORKAROUND:
You have to remove the OCX/ActiveX, leave Paradox, then restart it and add the new one.
Or add the new one before you remove the old one.
Reported by: Frederic G. MARAND
Date: 22 November 2001
To index
PX0656 ObjectPAL - sysInfo()
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 7.0 W95 P4 | 11 Build 302 | True |
PROBLEM:
With Bde 5.2 installed, sysInfo() reports EngineDate "5/11/1901 11:07". It should be in 21st century.
Problem has been there since P7.
Verified by: Stefan Bodingh
To index
PX0657 ObjectPAL - query.executeQbe() - columnnames in answer table
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 7.0 W95 P4 | 11 Build 302 | True |
SUMMARY:
A query created and run in ObjectPAL containing a join and CheckPlus will under certain circumstances create other columnnames than a query run from the QBE editor.
If tables joined in the query contain columns with same name, even though only one of them is included in the answer table, the column will be named with a trailing _1.
VERSION
P7 SP4, P9 SP4, P10 SP2. BDE 4.51, BDE 5.2
SETUP:
Table PX0657A
UnitNumFK - A6
AssnNumFK - A3
Table Px0657B
AssnNumFK - A3
UnitPick - A6
Query:
var
qbeHandle query
endvar
qbehandle=QUERY
ANSWER: :PRIV:ANSWER.DB
PX0657a.DB | UnitNumFK | AssnNumFK |
| CheckPlus _join1 | CheckPlus |
PX0657b.DB | UnitPick |
| _join1 |
ENDQUERY
qbeHandle.writeQbe("QZ0657")
qbehandle.executeQbe(":WORK:QZ0657")
will create an answer table with columns UnitNumFK and AssnNumFK_1.
It does not happen if CheckPlus is replaced with Check.
It does not happen when query is run from QBE Editor.
It does not happen if the two tables have two different language drivers.
Reported by: Rey
Date: May 2 2002
To index
PX0658 ObjectPAL - library.open()
| Type of error: | First verified: | Last tested: | Verified by me: |
| Error | 7.0 W95 P4 | 11 Build 302 | True |
SUMMARY:
When Paradox tries to open a library specified with no extension like library.open("MyLib"), the existence of a file containing an extra dot in the filename, like MyLib.HOLD.LSL will make Paradox confused.You'll get an error saying "The design object, LibraryA, could not be opened."
SETUP:
Create a library named LibraryA.
Add a custom method to it, named uMyMethod().
Contents of the method
var
st string
endvar
st="Hello, World"
st.view()
save the library.
Create a form with a pushButton.
Uses ObjectPAL
"LibraryA.LSL"
endUses
var
lib library
endvar
open event
lib.open("LibraryA")
close event
lib.close()
pushButton event
lib.uMyMethod()
Save the form.
Run it. Press the button. Everything OK. Close it.
Open the library and deliver it.
Rename the lsl file to LibraryA.HOLD.lsl.
Run the form.
On open, you get a warning message saying Design object could not be opened.
If you rename the lsl file to LibraryA HOLD.lsl, there is no warning.
If you specify the extension in lib.open("LibraryA.ldl"), there is no warning.
To index
PX0659 ObjectPAL - version()
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 10.0 P2 | 10.0 P3 | True |
SUMMARY:
Value returned from version() method is not consistent between different versions of Paradox.
In P7 patch 4, I get 7.00
In P8 I get 8.00 instead of 8.00.302.
In P9 SP4, I get 9.00.883, which is correct.
In P10 SP2, I get 10.00.606, which is somewhere between original release 517 and SP2 version 663.
In P11, I get 11.00.233
In P11 Build 300, I also get 11.00.233
In P11 Build 302, I also get 11.00.233
To index
PX0660 Report print - GPV - Error - #record 13 too big to fit in a report
| Type of error: | First verified: | Last tested: | Verified by me: |
| GPV | 10.0 P2 | 11 Build 302 | True |
SUMMARY:
Printing a single page of a multipage report will, under certain unknown circumstances, cause a GPV with an errormessage "#record 13 too big to fit in a report". Using the Abort button on the error dialog will show a Runtime Error 216@0000E28.
SETUP:
Create a report based on Orders table in Sample directory. Use a Tabular layout, and remove as many columns as needed to make the tableframe fit on portrait orientation.
Check breakable property for the tableframe object, and the record object and all fields in the record object.
Run the report. Print it. In the print dialog Select Pages: 2. And then Print button. GPV occurs.
POSSIBLE WORKAROUND 2003-05:
TableFrame has a property ShowAllRecords, shown on Runtime tab. Set it to By duplicating object instead of In one object.
WORKAROUND 2004-03:
Detach the header and optionally move it to the the page header. It's a better solution than changing the ShowAllRecords setting.
COMMENTS:
If all pages are selected in the print dialog, the GPV does not occcur.
If Page 1 is included in print out, the GPV does not occur.
DESCRIPTION:
From: Michael Israel, M.D.
Date: 25 May 2002
I am unable to print a single page from a multipage report in P10 with the most recent patch (I get a GPV). I can print a single page from the same reports in P9 SP4.
It happens on 2 different reports. One is a simple table, the last column is a cumulative summary. The full file prints, but I get a GPV when I try to print a single page that says "Unexpected GPV", "#record 13 too big to fit in a report". Abort button causes Runtime error 216@0000E28.
The other report is a MRO that gives the same message. I have tried other reports and they work. As I mentioned, the same reports allow me to print single pages in P9. P10 runtime gives me the same GPV's.
Printer is local (HP LaserJet4L). Win98
The report was created in P10 (with the current patch). I have been using it interactively.
1. Make a report based on a single table which has enough records to cause the report to have multiple pages.
2. Put a tableframe on the report bound to the table on which it's based. Set the record object to Breakable.
3. Run the report, tell it to print page 2 (via the interactive dialog invoked by the print button on the toolbar). GPV.
From: Liz Woodhouse
FYI, further isolation of the problem:
Paradox version: 10.0.0.663
printengine100.dll version: 10.0.0.670
BDE version: 5.1.1.1
Windows version: 5.00.2195 (Win2K SP2)
Printers tested:
Apple Color LW 12/660 PS (to PS file)
HP DeskJet 1220C Printer (to LPT1)
TI microLaser Pro 600 2013 PS23 (to PS file)
TI microLaser Pro 600 2014 PS23 (to LPT1)
Printers connected to LPT1 were connected via a parallel cable.
Tested with different reports on different tables. Some reports created via 'quick report' and some via File > New > Report; Data Model, one via File > New > Report; Blank, place a tframe, pick define table, go add table to dm, pick some fields, double check/set everything that can be as breakable and go. All behave _exactly_ the same. Some reports were saved, some just run.
Printing the entire report works. Printing just page 1 works. Printing any combination of pages that do NOT include page 1 does NOT work (printing 2-1 works, printing 2-3 doesn't work, printing 2-5 doesn't work, printing 2,4,1 works, etc.).
Just tested using Win2K's driver for "HP LaserJet 5000 Series PS" set to print to file since I don't have the printer. Same problem.
Always set it so that everything which could be breakable was breakable in the entire report.
WORKAROUND:
If you right click on the report name in the project viewer and select 'Print' from the drop down list, you can print the selected page range.
To index
PX0661 Paradox Runtime - SpellChecker
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 10.0 P2 RT | 10.0 P2 RT | False |
PROBLEM:
The runtime v10 spellchecker is not working. When I right click on a memo field and select spellcheck...., the screen flashes and then - nothing.
It works fine on my development system, but I also have regular v10 installed.
DESCRIPTION:
The form I am using has no tables associated in the data model. I populate a non-linked labeled edit field with a value from a local table (a memo field) and then perform
action(EditEnterPersistFieldView)
in the arrive method, and
self.action(editentermemoview)
in the setfocus method of the field.
It's as simple as you can get; no linked tables, one edit field, and a save button to move the changes back to the local table (via tcursor).
The form itself is a dialog set to modal, but I doubt that has anything to do with it.
The strange part is it works fine on the client's systems in paradox 9 (regular version) for about 3 years, but not in Paradox runtime V10 on the same system. My system works for all versions (I have all versions installed on my development computer). I've tried a recompile with no change.
Reported by: ChrisD
Date: 24 May 2002
Verified by: Anders Jonsson
First time I select Spell Checker, through the menus or the property menu, cursor turns into wait state for 10-15 seconds, followed by nothing. Selecting SpellChecker once more, cursor blinks and nothing happens.
Tested in Runtime on Windows XP.
COMMENTS BY: Ivica Kolar
W98/P10/P10RT.
Using Filemon and looking for file names used by P10 RT SpellCheck (..\PROGRAMS\PDXSE.DLL for example) that issue looks to me as WAD.
My speculation:
SpellCheck is available only if some other WPO2K2 component is installed. Or, maybe it's just installation issue...
To index
PX0662 Form run - dataRefresh and formatted memo
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 7.0 W95 P4 | 11 Build 302 | True |
PROBLEM:
With data on a network, editing a formatted memo, the assigned properties for the current record will be lost when a action DataRefresh is sent to all clients caused by changes being made by another user on a different record.
SETUP:
Required: a table with a formatted memo field.
Create a form based on this table. Add some records.
Running two instances of Paradox on a single machine, set LocalShare=True to see the problem.
Open two instances of Paradox. In both instances, run the form. Move to two different records. Edit record in both instances, changing the formatting in one of the instances. In the other instance, unlock the changed record, and watch the newly assigned properties in first instance be lost.
DESCRIPTION FROM NEWSGROUP:
I have had a problem in Paradox7 and now also in Paradox9 which has plagued me for some years and I wonder if anyone has a fix or any clues:
A form contains a formatted memo field (for letters etc.).
User creates a record and some code sets the font according to the users preference.
User types away happily but at some point ( they may or may not be typing at this point) the field switches the font to the system default (usually Arial 10 pt) and loses any formatting such as bold/italic.
I cant reproduce this but I've seen it happen, and I suspect it happens just after a network refresh.
Reported by: Adam Toth
Date: 5 June 2000
Verified by: winniethepooh
Date: 29 May 2002
I use a formatted memo field in one of my applications. Have found that DataRefresh will cause the all formatting in that field to be reset whilst cursor is in that field.
I have tried to stop it by creating a temporary formatted memo field in the form, filled it with the content of the memofield from the table and wrote the field back after end editing the temporary field. I have done this because I was told the problem was generated when a user was inserting a record in the database. So by making the memo field on screen detached from the main table it should stop. Unfortunately it has not worked.
WORKAROUND:
Edit in an unbound field outside any object that may get the DataRefresh, or place the unbound field in a separate form.
You can also add an eventInfo.setErrorCode(UserError) to prevent the dataRefresh. Exactly where to place the code depends on which uiObjects are used to show the formatted memo. When placed directly on a page without any multirecord or tableframe containers, use the form level action event - the else clause. Otherwise, use the mro or tableframe object's action event.
To index
PX0663 Local SQL - Delete statement corrupts the table
| Type of error: | First verified: | Last tested: | Verified by me: |
| Error | 8.0 | Bde 5.2 | True |
PROBLEM
After deleting all (or almost all) records in a table with a SQL statement, TableRepair will report errors on the table. The error message is one of
41 Empty block 3 reports records
36 Empty block(2) in used block chain
Running an empty() or Restructure - Pack (compact()) after the SQL statement, will fix the problem.
If blocksize is increased to 16KB or 32 KB, the problem does not occur.
Tested in:
P10 Sp2 - Bde 5.2 on Win95B
P8 - Bde 5.01 on Win 98 and Win XP
SETUP:
The langdriver is ANSIINTL
Format : Paradox 7
Block Size 2k
No password
Code page : 1252
The SQL Statement is :
DELETE FROM IMPBATCH
The table has the following structure:
CREATE TABLE IMPBATCH
(
NUM_LOT CHAR(10),
NUM_DOCUMENT CHAR(10) ,
ID_SCANNER INTEGER ,
IMPORT_DATE_DOC DATE ,
IMPORT_ID_DOCUMENT CHAR(10) ,
IMPORT_NIP CHAR(10) ,
IMPORT_NSP CHAR(10) ,
IMPORT_ID_SERVICE CHAR(10) ,
IMPORT_ID_TYPE_DOC CHAR(10) ,
IMPORT_A_TRAITER CHAR(1) ,
IMPORT_LOG CHAR(255) ,
DATE_CRE TIMESTAMP ,
DATE_MAJ TIMESTAMP ,
UTIL_MAJ CHAR(30) ,
DESTINATION_ID_DOC NUMERIC,
PRIMARY KEY (NUM_LOT, NUM_DOCUMENT)
)
There is no secondary index.
Table used during tests have these characteristics.
-1699 records,
-record size 388 bytes,
-15 fields
-and a total size : 682Kb
Before running the SQL statement, the table is rebuilt using TableRepair, and Verify does not report any errors.
After the SQL statement is run, Verify button in TableRepair reports one of the errors
41 Empty block 3 reports records
36 Empty block(2) in used block chain
After a table.empty() or table.compact(), Verify does not report any errors.
After changing blocksize to 16KB or 32KB, and running the SQL DELETE statement, Verify does not report any errors.
Originally reported by: Nicolas Delattre
Date: 30 May 2002
To index
PX0667 Form print - multipage form
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 10.0 | 11 Build 302 | True |
SUMMARY:
When I print a multi-page form, only the first page is printed.
In previous versions all pages were printed.
SETUP
Create a form with two pages. Run it. Select File | Print, and print it. Only page 1 is printed.
To index
PX0669 ObjectPAL - Resource leakage - report.print()
| Type of error: | First verified: | Last tested: | Verified by me: |
| Resource | 10.0 P2 | 11 Build 302 | True |
SUMMARY:
Printing using dynarray syntax will cause a resource leakage in Paradox.
I haven't tested using old reportprintInfo structure syntax.
SETUP:
Create a dummy report, named dummy.rsl, with a text object in the record band. No table is used.
Run the code shown below from a script or a form.
While printing, look at the Memory usage on Processes tab in TaskManager (Win2000).
It's increasing for each print. And it is not released until Paradox is closed down.
var
daratPrintinfo Dynarray[] Anytype
rOrders Report
li longint
endvar
; Here, I use printerSetCurrent to a printer that is set to a LPT port
; with no printer installed, so that I don't waste paper.
; this code can be removed if you accept wasting paper
if not printerSetCurrent("FAKE1") then
msgStop("Error","Cannot set printer.")
errorshow()
return
endif
; end of code removal
for li from 1 to 90
message("Working on loop " + strval(li))
daratPrintinfo["Name"] = "dummy.rsl"
rOrders.print(daratPrintinfo)
sleep()
sleep()
endfor
THREAD FROM THE NEWSGROUPS (Edited by me)
From: Shaun Daigle
Date: 4 January 2002
When I print a report multiple times in a row using Paradox 10 SP2, my RAM gets eaten by Paradox. (Tested on Windows NT4 and Windows 2000 Pro)
When running the report, take a look at your memory usage by Paradox. On my machine, the RAM usage get's very high very quickly (especially when we print our invoices... which is about 2400 print jobs in a row!!!). When I print my invoices, I get a message saying "Insufficient memory for this operation". I've increased the SHAREDMEMSIZE in the BDE without any effect.
Paradox eats 5Mb of RAM and never releases it unless I close Paradox.... but if I open the reports instead, the RAM stays the same...
I was looking in the task manager (in the Processes tab). While the print jobs were printing, pdxwin32.exe was increasing it's memory usage each time that a print job was sent to the printer. When the 60 print jobs were sent, 5Mb (Megabytes) of RAM were used and not released ever again, until I closed Paradox.
From: Bertil Isberg
Shaun
This is what I see:
Running a loop to 10 on Win2000.
Before first print Mem Usage is 27,736 KB. After 10th print it is 29,172 KB. Minimizing Paradox, Mem Usage is 3,000 KB. (It's not a typo). Launching Paradox and minimizing it, Task Manager reports 1,500 KB. Maybe this indicates a resource leakage.
I ran your form version in a loop to 90 without such a message.
To index
PX0671 ObjectPAL - sql.executeSql() - prompted for connection
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 P4 | 11 Build 302 | True |
PROBLEM:
In ObjectPAL, you cannot run a SQL statement like Select * from :MYALIAS:Mytable, where MYALIAS is a remote database, without being prompted for the password.
DESCRIPTION:
For the example above, you can open a database variable on MYALIAS and use that database as the database variable in the executeSql() method, but if your SQL statement is
INSERT INTO :REMOTEALIAS:Mytable
SELECT ....
FROM :LOCALALIAS:Localtable
there is no other workaround than to stay away from SQL.
executeSql() will ignore an open database variable and also ignore an alias opened from AliasManager.
This didn't happen in Paradox 7 for Win95/WinNT.
Workaround: Use a QBE query
To index
PX0672 ObjectPAL - scope of library variables
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 | 11 Build 302 | True |
SUMMARY:
Loading a library using an array of libraries will cause the library to close when the variable goes out of scope. Using a library variable instead, the library will stay open.
Loading a form using an array of form, the form will stay open when the variable goes out of scope.
SETUP:
Consider the following code in two variations (tested under P9/P10):
1.
method pushButton(var eventInfo Event)
var
Lib library
endvar
Lib.load("libname")
endMethod
When the method finishes, the Lib variable is automatically being released, but the library window remains open. Normal behaviour for me.
2.
method pushButton(var eventInfo Event)
var
lib array[1] library
endvar
lib[1].load("libname")
endMethod
In this case the library window is being closed when the method finishes. The same behaviour when using dynarray of libraries.
Reported by: Vladimir Menkin
Date: 9 July 2002
To index
PX0673 Form / Report design - FontStyle Bold Italic in a tableFrame
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 P4 | 10.0 P3 | True |
SUMMARY:
In a form or report, when you are selecting Font Style properties for a tablecolumn in a tableframe, the Bold Italic property, causes some funny behaviour. When applied using the Apply button, you cannot change it to Bold or Italic. When Apply button is pressed, BoldItalic is restored. You have to set it to Regular. Apply it. Then select Bold and Apply it.
For a bound labeled field outside the table frame, the behaviour is slightly different. When BoldItalic has been set, changing it to Bold will set it to Italic. Changing to Italic, will set it to Bold.
SETUP:
Create a form using any table. Select tabular in Design layout. Place of a field outside of the tableframe, and define it on one of the columns. Remove that column from the tableframe.
Now use the property dialog, not the ObjectExplorer to change the Font property for one of the columns in the tableframe, and for the edit region of the labeled field.
Set the font style to Bold Italic. Press Apply. Set it to Bold. Press Apply. (BoldItalic restored for the column in the tableframe. Italic is set for the labeled field). Set it to Italic. Press Apply. (Bold Italic is restored for the tableframe column. Bold for the labeled field). Set it to Regular. Press Apply. (Ok). Set it to Bold. Press Apply. (OK)
This description is slightly different than what was reported on the newsgroups, see below.
Originally reported by: Bill Lane
Date: 5 June 2002
Working in Paradox 10, I am unable (in a Report) to bold or italic the text on a field within a Table Frame, no matter the font or font size selected. Oddly enough, reports already defined in Paradox 9 and opened in V10 still retain their bold/italic properties until modified.
It gets better - bold and italic are available together, but not alone. I can selct bold & italic, Apply, and it's cool. Then I select Italic only, and the text loses the italic, but retains the bold !!! Conversely, once bold &italic are applied together, if I then apply bold only, the text loses bold and retains italic.
I've had to use some cumbersome work-arounds, but this is VERY annoying. This happens on all the machines I've tried it on. All were running either 98 SE or Win 2K, the same copy of Paradox 10 (quick install/uninstalls, just to see if it was machine dependent).
COMMENT:
It could be related to the Paradox toolbars. Once the problem disappeared after the toolbar files had been deleted.
To index
PX0675 ObjectPAL - form.open(WinStyleHidden)
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 10.0 P2 | 11 Build 302 | True |
SUMMARY:
When a form is maximized, opening other forms with WinStyle constant WinStyleHidden will make the zorder of the forms be incorrect.
SETUP:
A main form with code in a button
f1.open("Px0675A1", winstylehidden+winstyledefault)
f1.show()
f1.bringtoTop()
f2.open("Px0675A2", winstylehidden+winstyledefault)
f2.show()
f2.bringtoTop()
f3.open("Px0675A3", winstylehidden+winstyledefault)
f3.show()
f3.bringtoTop()
f3.maximize()
The 3 other form contains nothing but a pushbutton with code close().
When main form is at normal size, closing form 3 will activate form 2 . Closing form 2 will activate form 1.
When main form is maximized, closing form 3 will activate main form. Form1,2 and 3 are not shown on Paradox application bar.
WORKAROUND:
Open the forms with code like this:
var
f1, f2, f3 form
endvar
f1.open("Px0675B1",winstyledefault + winstylehidden)
f2.open("Px0675B2",winstyledefault + winstylehidden)
f3.open("Px0675B3",winstyledefault + winstylehidden)
and add code in each form's arrive event:
method arrive(var eventInfo MoveEvent)
var
f1 form
endvar
if eventInfo.isPreFilter() then
;// This code executes for each object on the form
else
;// This code executes only for the form
f1.attach()
f1.show()
f1.bringtoTop()
f1.maximize()
endIf
endMethod
COMMENTS:
This problem is related to problem described in Px0653.
To index
PX0676 ObjectPAL - string.advmatch() - ignoreCaseInStringCompares(True)
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 P4 | 11 Build 302 | True |
SUMMARY:
When ignoreCaseInStringCompares(True) is applied, advmatch() will give incorrect values in the returned strings if value searched for contains a negation, like [^A-Z]
SETUP:
A form with a pushButton
var
stTGT string ; string to be converted
st1, st2 string ; temps
endvar
;code should strip non-alphas and non-numbers
ignorecaseInStringCompares(false)
; ranges won't work with ignore case
stTGT = upper("xy-123:4z")
while stTGT.advmatch( "^(..)[^A-Z0-9](..)$", st1, st2 )
stTGT = st1+st2
endwhile
When ignoreCase is set to false, ; and - is stripped from the string.
When ignoreCase is set to true, advmatch returns true but puts the complete string in st1. An infinite loop will occur.
Removing the negation, that is [A-Z0-9], will give correct result, letters and digits are removed.
WORKAROUND:
Add a + (one or more occurrences) after between []and (..)
while stTGT.advmatch( "^(..)[^A-Z0-9]+(..)$", st1, st2 )
Originally reported by: Mark Bannister
Date: 22 August 2002
To index
PX0678 Form run - setting a range on a locked record
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 7.0 W95 P4 | 11 Build 302 | True |
SUMMARY:
Interactively setting a range in a form while the current record is locked puts the range value into the key of the current record thus destroying the current key.
Problem occurs only if the Set Range check box is unchecked, and the range is specified with a single value.
It does not happen in a tableview.
SETUP:
Here's a way to reproduce this bug using the Vendors.fsl form in the sample database.
1) Open the vendors.fsl form.
2) Go to the Vendor Name field and press F9.
3) Change vendor name (e.g. add an X to the end of existing name).
4) Click on the Record, Filter option to open the Filter Tables dialog.
5) Click the Range Button. With the set range box unchecked, enter a Vendor No value (e.g. 1).
6) Press OK, Press OK.
7) The key field on the current record has CHANGED to match your range value.
Possible WorkAround :
Trap the DataFilter action and make sure that a DataUnlock is issued (if the current record is locked) before allowing the DataFilter to proceed on EVERY form you created.
Put code like this in the tableFrame or MRO or at form level.
if eventInfo.id()=DataFilter then
if active.locked then
active.unlockrecord()
endif
endif
Reported by: Bruce R. Brunk
Date: 30 August 2002
To index
PX0679 ObjectPAL - floating point calculations
| Type of error: | First verified: | Last tested: | Verified by me: |
| Error | 8.0 P1 | 11 Build 302 | True |
SUMMARY:
This is a description of some floating point calculation problems in Paradox.
a) Pow() overflow (i.e result > 1e308) ruins floating point arithmetics.
b) Under certain circumstances cSamStd() can return a value that equals -0.0
c) Print dialog (or some printer drivers) has effect on floating point calculations when running under Win95B or Win98.
SETUP B: (cSamStd() problem)
Run the script below.
It creates a table with N column.
Adds 6 records where all have 2.80 in the N column.
It peforms a cSamStd() on the N column.
Value returned is -1.#J or -1.IND
Calculations with this value will always return the same value.
Returned value equals -0.0
var
tc TCursor
nSamStd, nVar Number
tbl Table
si SmallInt
endVar
errorTrapOnwarnings(No)
tbl=Create "Qz0679" with
"PPY":"N"
endCreate
errorShow(tc.open("Qz0679"))
tc.edit()
for si from 1 to 6
tc.insertRecord()
tc.ppy=2.80
tc.unlockrecord()
endFor
tc.endEdit()
nSamStd=0
errorTrapOnWarnings(Yes)
try
nSamStd=tc.cSamStd("PPY")
onFail
errorshow()
endtry
view(format("w12.8",nSamStd))
errorTrapOnwarnings(Yes)
try
nSamStd=nSamStd.round(2)
view(format("w12.8",nSamStd))
onfail
errorshow()
endtry
tc.close()
errorTrapOnwarnings(No)
COMMENTS:
When executing code first time, I get an error: Unexpected: Floating point error was generated.
Running on Win95B with BDE 5.2, I get
in Paradox 7 Patch 4
cSamStd=4,45998832485774444e-8
cVar=1,65762465482228233e-15
Paradox 10 SP2
cVar=-1,578983857244667e-15
cSamStd=-1,#IND
Paradox 9 SP4
same as P10
cSamStd() involves sqrt() and sqrt() is not supported on negative values.
What you have got returned from cSamStd is a value =-0.0
A workaround is:
if n=-0.0 then
n=0
endif
A consequence of the cSamStd() problem is that method sqrt() won't work afterwards. Add a nSamStd=sqrt(6) as last line of the code and you'll get an error "An arithmetic error occured during 'SQRT' execution. Reason: 'The value of an argument is not in an acceptable range for this function.'
Comments by: Ivica Kolar
Win98,
P8:
cVar= 1,65762465482228233e-15 ;i.e same as you with P7
But if P8 Floating Point issue is present:
cVar=-1,578983857244667e-15 ;i.e same as with P10
It's interesting, Workaround for P8:
Your famous workaround for P8 floating point issue, see PX0050, works in this case too.
P10:
cVar=-1,578983857244667e-15
Executing cSamStd (or cStd) in P8 I got "SQRT:Domain error".
P10 should, but doesn't report that error.
Seems that sqrt(<0) inside cSamStd etc. is not properly trapped under P10.
Problem reported by: Jim Shedden
Date: 30 August 2002
SETUP A pow() overflow and effects on floating point arithmetics
Description of a generic floating point issue: By Ivica Kolar
P10 floating point Issue:
Pow() overflow (i.e result > 1e308) ruins floating point system.
Notes:
#1
That doesn't happens by pow() underflow (< 1e-308).
#2
floating point functions +, * have no range check for results approaching zero (underflow).
ObjectPAL compiler has that range check, compiling aNumVar=1e-308 results with error "Number is too small."
Examples:
1e-307 * 1e-16 gives ~9.88e-324
1e-307 * 1e-17 gives 0.
#3
For similar floating point issue (sqrt(<0) inside cSam & cSamStd)
#4
Also affected by pow() issue are ObjectPAL functions using pow() inside, for example cVar().
That can be easily checked using table with 2 records and values, for example:
1.
1e155 ;1e-155 also produces sideffect!
For test, in example below replace r1=pow(..) with r1=aTable.cVar(aField)
Example:
;---------------------------------------------------------
;this recovers P10 floating point system from sideffects of unproperly
;processed domain/range exceptions
proc p10fp_clear_domain_err_flag()
try
exp(0.) ;or other floating point function using domain check
onfail
errorclear()
endtry
endproc
;-----------
;Test script
method run(var eventInfo Event)
var
r1, r2 number
endvar
try
r1 = pow( 1.4e154, 2. ) ;fails due to overflow, expected
onfail
errorshow("domain/range error")
; p10fp_clear_domain_err_flag() ; this removes pow sideffect
endtry
; floating point function using domain/range check fails as a sideffect of pow() issue
r2 = exp(1.) ;an example of unexpected failure
endMethod
More comments:
Exp() behaves like pow(), i.e:
var
r1 number
endvar
r1 = exp( 1e3 ) ;fails with floating point sideeffect
r1 = exp( -1e3 ) ;fails without floating point sideeffect
r1=1.
r1 = r1.pv( 1., 1e4 ) ;do not fails, has floating point sideeffect
r1 = r1.fv( 1., 1e4 ) ;fails & has floating point sideeffect
r1 = r1.pmt( 1., 1e4 ) ;do not fails, has floating point sideeffect
From: Ivica Kolar
Subject: P10FP issue: Summarizing
Date: 8 September 2002
I'm reporting here P10 behaviour only. (Although roots of this issues have to be looked for in P8 or even earlier version.)
Summary of P10 floating point issues:
1. Pow() issue (Ruined floating point system):
If absolute value of a result exceeds 1e308 pow should fail with the error "An arithmetic error occured during POW execution...", but ignoring that exception and returning the value, pow fails with the error "Overflow. The source data is numericaly too large...".
Ignored exception causes failure "An arithmetic error occured..." of the following floating point function.
Issue also exhibits in other ObjectPAL functions depending on pow:
exp(), and further sinh and cosh.
cVar() and further cSamVar, cStd, cSamStd.
pv() and further cNpv.
fv().
pmt().
Some of the functions above fails, leaving floating point system ruined and other (pv, pmt, c..) does not fail but leaves floating point system ruined.
2. Table c.. functions issue:
2.1 cVar() (and consequently cSamVar) issue:
result value < 0.
Note: Result value is sum of squares (pow(x, 2)) and the cause of a result < 0 is not clear to me.
2.2 cStd, cSamStd issue:
if cVar... returns < 0 execution of above functiones exhibits pow issue (ruined floating point system).
3. Pow10() issue:
3.1 Lack of the range check when exponent > ~1e18.
Note: Pow10 do not exhibits pow() issue.
Note:
I'm not aware of any issue due to "+-*/" inconsistency of range checking, except one: Users staring at a result like 1.#INF00000000000e+0.
SETUP C Print dialog and floating points arithmetics
Reported by: Ivica Kolar
Subject: P10FP & print issue
Date: 5 December 2002
Issue shows inproper initializated and/or ruined P10 floating point subsystem.
All sideffects are not (and can not be) known.
AFAIK, P8 has no such issue, P7 and P9 are not tested.
Part I
------
Preparing for tests:
1. Create FP10_Blue.SSL:
method run(var eventInfo Event)
var
r1 number
endvar
r1 = 9e307 + 9e307
endMethod
2. Create FP10_Blue_WAR.SSL:
method run(var eventInfo Event)
var
r1 number
endvar
r1 = 1. * 1.
endMethod
3. Close Paradox
Test 1 - not consistent test results:
1. Launch Paradox
2. Run the FP10_Blue.SSL once, if nothing happens run again...
Result:
Win2K: no malfunctions encountered
Win98: "Pdxwin32", "Floating point overflow"
or BlueScreen
or no malfunctions encountered
Test 2 (suggested by Bertil Isberg) - consistent test results:
1. Launch Paradox
2. Open the FP10_Blue.SSL in Design mode
3. Press F8 (run the script)
Result:
Win2K: Overflow error...
Win98: BlueScreen.
Note:
No malfunctions encountered if you run FP10_Blue_WAR.SSL first.
Comments by Bertil Isberg:
FP10_BLUE:
Running on Win95B in P9 SP4 and P10 SP3 , I get an overflow error.
Running on Win2000 SP2, in P10 SP3. FP10_BLUE in design mode. Run with F8, I get an Overflow error. Run with button on toolbar, I don't get the overflow.
Part II
------
Above Issue as a sideffect of the print engine (and/or driver) malfunction, uncovered today.
To do the test you will need a report, say aReport.RSL.
Test 3 - I did the test under Win98 only:
1. Launch Paradox
2. Run the FP10_Blue_WAR.SSL
Optionaly, you can check that there is no issue now.
2.1. Open the FP10_Blue.SSL in Design mode
2.2. Press F8 (run the script)
Result: no malfunctions encountered
2.3. Close the script
3. Invoke Print dialog for aReport.RSL
3.1 Select Printer other than default one.
Use Net2fax printer driver from Net2Phone.exe on WPO2002 CD
3.2 Close Print dialog
4. Do the steps 2.1, 2.2
My result:
Win98: BlueScreen i.e. issue strikes again!
COMMENTS:
This problem cannot be verified on Win2000, only on Win95B and Win98.
WORKAROUND:
On Win95B and Win98, run the code like one in FP10_Blue_WAR.SSL not just after launching Paradox, do that after using Print dialog too .
To index
PX0680 ObjectPAL - number.pow10()
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 5.04 | 11 Build 302 | True |
SUMMARY
pow10() method can only handle integer exponents.
SETUP:
var
nExp, nResult number
endvar
nExp=0.1
nResult=nExp.pow10(); gives 1.
nResult.view()
nExp=0.9
nResult=nExp.pow10(); gives 1.
nResult.view()
nExp=1.1
nResult=nExp.pow10(); gives 10.
nResult.view()
nExp=1.9
nResult=nExp.pow10(); gives 10.
nResult.view()
WORKAROUND:
Use pow() instead
Reported by: Ivica Kolar
To index
PX0682 ObjectPAL - memo(m1, m2) when m2 is blank
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 P3 | 11 Build 302 | True |
Summary:
Concatenating two memo variables where the second one is blank will cause the resulting memo to be blank
Description:
Help files says:
You can also use the (=) operator to assign the value of a memo field to a Memo variable or a String variable. Note that there are no arithmetic or comparison operators for Memo variables.
Anyway, memo(m1,m2) should be equal to memo(m2,m1) when m1 is blank, shouldn't it?
var
m1, m2, m3, m4 memo
endvar
m1=memo("")
m2=memo("bertil")
m3=memo(m1,m2)
; will result in bertil
m4=memo(m2,m1)
; will result in a blank value
When a blank memo is appended to a nonblank memo, the result is blank!
Originally reported by: Rex B Hamilton
To index
PX0686 ObjectPAL - enumPrinters(tcursor)
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | | 11 Build 302 | True |
SUMMARY
enumPrinters(tcursor) will interfere with queries run later in same session. executeQbe() will cause error: Database not opened.
SETUP:
A form with three buttons
button 1 - enumprinters
var
tcA tcursor
endvar
enumPrinters(tcA)
tcA.close()
button 2 - query
var
q query
endvar
q=Query
ANSWER: :PRIV:ANSWER.DB
:SAMPLE:customer.db | Customer No | Name | Street |
| Check | Check | Check |
EndQuery
q.executeQbe(":PRIV:C")
button 3 - alternate query
var
q query
db database
endvar
db.open(":SAMPLE:")
q=Query
ANSWER: :PRIV:ANSWER.DB
customer.db | Customer No | Name | Street |
| Check | Check | Check |
EndQuery
executeQbe(db, q, ":PRIV:C")
db.close()
Run the form.
Press enumPrinters button and then Query button.
Query fails.
Exit Paradox.
Run form. Press enumPrinters button and then Alternate query button.
This time the query runs Ok.
Originally reported by: rjkolegraff
Date: 11 November 2002
To index
PX0688 Paradox Runtime - Printer names
| Type of error: | First verified: | Last tested: | Verified by me: |
| GPV | 9.0 RT | 11 RT Build 233 | True |
This is same bug as PX0372 which was fixed in Paradox 9, but it still exists in Paradox Runtime. Reported for P10 RT running on Win 2000 Terminal Server (Citrix), Win2000, and Win NT4.
SUMMARY:
A too-long or otherwise inappropriate path to a network printer causes Paradox to crash when a report is opened.
The length of the path name was the problem. The NT Server help file had a section saying path names longer than 31 characters could not be handled by some programs. Paradox seems to be one of them.
SETUP:
I just did some quick checks and if the printer name has 32 characters or more the printing will hang. It does not happen in full version, only in runtime.
What I did was on my test machine with Windows 2000 and Runtime 10 only:
1) Install a new printer (I chosed HP Laserjet 5000 PS) on LPT1.
2) Rename the printer to SKRIVARE123456789012345678901234 which is 32 characters and put it in "Use offline" (as I had no physical printer attached).
3) Use code to print r.print(":REPORT:Testrapport")
It brings up the small box "preparing report" but after that nothing happens and Paradox hangs. If I remove one character from the printer name it works fine.
On my development machine I run full version under XP and then I had no problem with long names.
Reported by: Anders Jonsson
Date: 28 November 2002
COMMENTS: P9 P9RT
From: Alex Baumeister
26 December 2001
In my environment it seems fixed with P9, but NOT fixed with P9 Runtime.
COMMENTS: P10 RT
From: Torsten Parck
As a matter of fact, I don't think this is a specific Citrix problem. The GPV crash occurs only in Paradox 10 Runtime and not in Developer's Edition.
I have verified the problem when running on stand alone PC:s in one case with Windows 2000 and in another with NT4.
COMMENTS: P10 RT - Terminal Server
From: Shaun Daigle
I found a problem with Paradox 10 Runtime running on Windows 2000 Terminal Servers (Citrix). Everytime a user tries to print a report to a printer where the printer name is more than 31 characters, Paradox crashes (GPV).
the problem occurs only in the Runtime version (Paradox Developper's Edition works fine). The printer is shared from an NT Workstation machine. The client (using Windows 98SE) can print to the printer using the share from the NT Workstation (port name=share from Workstation). When the client connects to the Citrix server, the printer get auto-created and is given a long name. For example, a printer called "HP LaserJet 4100 Series PCL 6" (29 characters) on the client gets auto-created on the Citrix server and given the name "Client\CLIENTNAME#\HP LaserJet 4100 Series PCL 6" (48 Characters).
When renaming the printer name from within Citrix itself (not the client nor the NT Workstation), to a name less than 32 char long, it works fine. When I rename the printer, I don't change the printer configuration, driver name, port name, etc. The printer name on the client and on the NT Workstation stay the same... I only change it on the Citrix server (where Paradox Runtime runs). I checked out Citrix' site to find out if there's a way to have the printer name truncate to 31 char (or not to include "Client\CLIENT1#\" in the printer name) but they say that it's not possible.
To index
PX0689 Tables - Table Corruption
| Type of error: | First verified: | Last tested: | Verified by me: |
| Error | 7.0 W95 P4 | 11 Build 302 | True |
SUMMARY:
Viewing a newly created table after adding 1 000 000 records, I get a "Corrupt file - other than header." error message.
SETUP:
A table with a single long integer column , which also is primary key. Table is created with blocksize 4KB. Table is filled with 1 000 000 records. Table level is 7.
tc.open("Mytable")
tc.edit()
for li from 1 to 1000000
tc.insertrecord()
tc.id=li
tc.unlockrecord()
endfor
tc,endedit()
tc.close()
Open the table to view it. Move to the last record, and use the scrollbar to slowly move towards the first record. You will get a table corrupt message.
Now create exactly the same table with 2, 16, and 32KB blocksize. Fill them the same way or add data from 4KB table.
The only blocksize not showing the table corrupt message is the 32KB.
Next step:
Restructure the tables and change the long integer to number.
Now, the 2KB and 4KB tables are OK, but not the 16KB table. (I did not test the 32KB)
IMO, the tables are not corrupt. The problem has to be caused by something else, e g calculating which record to show when thumb on scrollbar is moved.
I changed table level on the 16KB table to 5, to be able to open it in Paradox 5. No signs of corruption in Paradox 5 - BDE 2.51. Opened in P10, corruption is still there also for level 5 table.
Running TableRepair, the error is: "BTree record number mismatch from block < > record < > to block< >."
To index
PX0690 Printer names
| Type of error: | First verified: | Last tested: | Verified by me: |
| Error | 10.0 P2 | 11 Build 302 | True |
PROBLEM:
If the printer name has 32 characters or more, interactive printing will cause the often discussed error "Report layout settings has been changed..."
With a shorter name, the error does not occur.
Tested on: Win2000 and WinXP
Problem was reported by Ivica Kolar
Verified by Anders Jonsson
To index
PX0693 ObjectPAL - Resource leakage - execute()
| Type of error: | First verified: | Last tested: | Verified by me: |
| Resource | 7.0 W95 P4 | 11 Build 302 | True |
SUMMARY:
Paradox is not releasing handles when running the "execute" command
SETUP:
Create a form with a pushbutton with code:
execute("notepad.exe", Yes, ExeShowNormal)
execute("notepad.exe", Yes, ExeShowNormal)
execute("notepad.exe", Yes, ExeShowNormal)
execute("notepad.exe", Yes, ExeShowNormal)
execute("notepad.exe", Yes, ExeShowNormal)
execute("notepad.exe", Yes, ExeShowNormal)
execute("notepad.exe", Yes, ExeShowNormal)
execute("notepad.exe", Yes, ExeShowNormal)
execute("notepad.exe", Yes, ExeShowNormal)
execute("notepad.exe", Yes, ExeShowNormal)
execute("notepad.exe", Yes, ExeShowNormal)
execute("notepad.exe", Yes, ExeShowNormal)
execute("notepad.exe", Yes, ExeShowNormal)
execute("notepad.exe", Yes, ExeShowNormal)
execute("notepad.exe", Yes, ExeShowNormal)
execute("notepad.exe", Yes, ExeShowNormal)
execute("notepad.exe", Yes, ExeShowNormal)
execute("notepad.exe", Yes, ExeShowNormal)
execute("notepad.exe", Yes, ExeShowNormal)
execute("notepad.exe", Yes, ExeShowNormal)
All this does is open up 20 instances of notepad.
Open Task Manager in Win2000. Add Resources to the list of what to be monitored.
Watch the value.
Run the code in pushbutton method.
Close all instances of Notepad and note that task manager shows file handles increase from pre to post run.
Reported by: RobbK
Date: 05 February 2003
My comments:
I can see a small leakage of filehandles, two more handles used for each call to execute.
To index
PX0694 Form run - Cut, and copy
| Type of error: | First verified: | Last tested: | Verified by me: |
| Minor | 10.0 P3 | 11 Build 302 | True |
SUMMARY:
When running a form, and cursor is in a field in FieldView mode, and when no text is selected, Cut, and Copy is still available when you right click the field and also in the Edit menu.
In a table view window, in same situation, Cut, and Copy is not available.
To index
PX0695 Form design - Notebook object - property Scrolling Tabs
| Type of error: | First verified: | Last tested: | Verified by me: |
| Minor | 10.0 P3 | 11 Build 302 | True |
SUMMARY:
Notebook object has a property "scrolling tabs". Changing this property as the only change made to a form, won't dirty the form, and you won't get the "Do you want to save it?" dialog when form is closed. So the change is not saved.
SETUP:
Open a form having a notebook object on it.
Open notebook properties dialog box.
Change the state of ScrollingTabs property.
Press OK (or Apply and OK).
Close the form.
You will not be asked "Do you want to save it?"
Reported by: Ivica Kolar
Date: 11 February 2003
To index
PX0696 Form run - Notebook object - Ctrl+R
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 10.0 P3 | 11 Build 302 | True |
SUMMARY
Using Ctrl+R to rotate notebook pages is an undocumented feature, maybe introduced in Paradox 9 SP4. Using Ctrl+R is rotating the pages, but it doesn't change focus. I'm not sure the behaviour described below is what to expect or not.
SETUP:
Create a form based on a table, just any will do. Let the design layout be blank.
Add a notebook object.
On first page, add a field and a button with TabStop checked. Do not define the field.
On second page, add a tableFrame, put it a little bit lower than the field on first page. Bind the tableframe to your table.
Let third page be blank.
Run form.
Activate first page, the one with a field and button.
Activate the field. Enter fieldview, (F2)
Press Ctrl+R.
Top page is now page 2 with tableframe, but cursor in field on page 1 is still visible and blinks.
Type something, cursor moves to the rignt, content is not visible.
Press Tab key. Focus is moved to the button on page 1.
Page 2 is still top one.
Press Tab key. Focus is returned to field on page 1.
Page 2 is still top one.
Use mouse go to page 1 by clicking the tab.
You can not (although page 2 is top one, page 1 has focus).
You can move to page 3 but not page 1.
Activate a column in a tableframe on page 2, and you will be able to click the page 1 tab, to activate it.
Reported by: Ivica Kolar
Date: 12 February 2003
Workaround when no table frame or Mro is involved:
Put this code in the notebook's action event
if eventInfo.id()=FieldRotate then
eventInfo.setErrorcode(UserError)
if not active.Action(FieldNextPage) then
active.action(FieldPriorPage)
endif
endif
Now the focus problem is solved.
multirecord objects and tableframes have to be handled separately.
To index
PX0698 Report print - tables in use afterwards
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 10.0 P2 | 11 Build 233 | False |
SUMMARY:
Printing a report with more than one table in the datamodel, when the report contains a group band, and when interactive printing will cause the infamous warning, "Report layout setting have been changed...", will leave a lock on the detail tables in the datamodel. Tables cannot be renamed or deleted.
DESCRIPTION AND SETUP:
I reported this odd behavior several weeks back, but now can speak more confidently of the root of the problem -- having tested and tested. I have created reports from scratch in P10 that exhibit this bug.
The bug: Under certain circumstances, Paradox10 leaves a table locked after printing a report that uses it. The problem does not occur if you open (view) the report and close it. It only occurs when you print the report. The bug occurs either when printing from OPAL or interactively.
The problem occurs under the following condition:
The report is based on a data model has three temporary tables linked 1-1 and 1-M. For example:
:PRIV:Prime.db -------> -:PRIV:OneToOne.db
|
|-------------------->> :PRIV:OneToMany.db
Use unbound fields in the record band (no tableframes). Add a group record band based on any Field in the OneToOne.db. (Adding the group band seems to trigger the behavior described below. Without the group band, the table lock is released.)
Behavior: Print the report and close it. Try to delete the temporary tables. Paradox will let you delete Prime.db and OneToOne.db. But if you try to delete the OneToMany.db, the operation will be denied with a "Table In Use" message. The only way I've found to unlock the table is to exit Paradox altogether and delete lock files in PRIV dir. Bad news.
I'm running Paradox 10 SP2.
My environment: Win98 SE. Novell 4.11 network, but private directory is local, so shouldn't be affected by the network OS.
Reported by: Erik Wogstad
Date: 14 March 2002
Comments and further analysis:
From: Bertil Isberg
I cannot recreate your errormessages for any of the three reports. I'm using P10 SP2 on a standalone PC running on Win95B.
I printed the report from ProjectViewer. And deleted the table in PRIV. No errormessages.
Printer Driver: HP LaserJet 5P/5MP PostScript
No printer.
From: Anders Jonsson
I can verify your problem.
I get an error "Cannot perform this operation with table open" when trying to delete the table after report is printed.
After report is printed and closed, and Paradox is closed down, PDOXUSRS.LCK and PARADOX.LCK is in PRIV. There is also a file __RExxx.out.
When printing the report I get the "Report layout has changed...." message, which made me look closer at the report and change the paper format to A4. I also made some minor changes to the report to make it adjust to A4 format. After saving the report, I can print it and delete the tables involved.
So far the testing is done on P10 SP2 on Win2000, HP5000 postscript printer connected to a Win2000 server, reports on a network drive. Priv on local disk. BDE setting LocalShare=True. Also tested with LocalShare=False, and then no LCK files is created in PRIV.
On a different printer, PCL (OKI C7200 PCL), the problem cannot be recreated.
So far - two ways to make the problem disappear
Redesigning the report for A4 papersize.
Changing printer.
From: Erik Wogstad
Here's what I discovered.
I have an NEC Superscript 860 printer. (Default Letter paper format.)
When I print interactively, I ALWAYS get the "Warning: Print orientation..." message. That's the key. When this message appears and I go on to print the report, the table locking problem occurs.
If I use an alternate print driver (HP IIIP) the Warning message does not appear. Nor does the locking problem occur.
Furthermore, if I stick with the NEC driver and print from code using the new rpi dynarray syntax, taking care to specify "PrintClipToWidth", the problem does NOT occur.
Conclusion: The "Warning..." message is the culprit, or perhaps more accurately the tip-off to something deeper going wrong with the Paradox10 print engine.
From: Ivica Kolar.
Please, treat all this as preliminary test results, more work should be done.
Test done with Win98/P10 SP2.
1. I can recreate the problem under following (minimal) conditions:
1. Local Share = False
2. Paper Format = A4
3. Print done to networked printer (HP 5L PCL)
What is important here is that with that printer I got warning A.
Printing to other printer (local one) I'm not getting A and B.
A) Doing Print I got warning:
"Report layout setting have been changed..."
B) When print is done, attempting to delete XFLINK.DB I got error:
"Can not perform this operation with table open."
Using another format, A4 Small, there is no A and B issues.
2. Testing with Local Share = True
Note:
Lock files in PRIV are created during Paradox startup.
After A and B I got:
C) Existing Paradox Lock files are not deleted.
From: Erik Wogstad
Subject: Table Locks After Print?
Date: 14 June 2002
Report DM has 1-M relationship between tables
Includes a group band
If "WARNING Report Layout Settings..." appears, the table locks will NOT be released properly.
Just as with printing from code, a group band IS needed for the bug to occur with interactive printing.
Without the record band, even if the WARNING message appears, the tables are released properly. No bug.
From: Shaun Daigle
I've narrowed down the problem to this:
1 - report with 1:M relationship
2 - report design landscape
3 - group band on report
As soon as I have a combination of these 3 things, the detail table lock does not get released after printing the report.
PROBLEM 2:
A report with a 1-m datamodel and a group band on a column in the master table, detail table shown as tableframe, will when printed using the new (Paradox 10) print(dynarray) syntax leave the detail table busy if papersize element in the dynarray is specified.
SETUP:
Create a report based on Customer and Orders. Accept the default layout. Add a group band on Customer.Country. Remove as many columns as needed for report to fit in portrait mode.
Save the report with a name.
Create a blank form.
Add a pushbutton with this code in the pushButton event.
var
dyReportPrintInfo dynArray[] anyType
rHandle report
endVar
try
dyReportPrintInfo["name"] = ":Buggar:Px0664" ; Use your reportname
; dyReportPrintInfo["orient"] = printPortrait
; dyReportPrintInfo["panelOptions"] = PrintClipToWidth
; dyReportPrintInfo["duplex"] = prnSimplex
dyReportPrintInfo["paperSize"] = prnA4 ; use your default papersize
rHandle.print(dyReportPrintInfo)
onFail
errorShow("printing report.")
endTry
Run the form. Press the button.
Close it.
Try to rename Orders table.
You will get an error: table is busy.
Remove the papersize element from the dynarray, and repeat the process after Paradox is relaunched to release the busy table. Problem does not occur.
Add the papersize element once again, but remove the group band, and repeat the process. As table wasn't busy, you don't have to relaunch Paradox. Once again, the problem does not occur.
Originally reported by: Tom Krieg
Date: 2 June 2002
Problem also reported by: "Peter Kelly"
Date: 18 September 2003
Datamodel contains three unlinked tables. Only the master table is used in the record band. Report contains a group band. Page band contains two fields based on the other two tables. Fields are defined with summary operator First. Report orientation is landscape. Printing the report interactively causes the Warning Report layout changed. A similar report with portrait orientation does not cause the warning message, and does not leave locks on the detail tables.
To index
PX0703 ObjectPAL - ProjectViewerClose() and exit()
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 10.0 P3 | 11 Build 302 | True |
SUMMARY:
projectViewerClose() will make Paradox not eliminate the two .LCK files created in the session's private directory upon closing, while another session is still running. Neither will the INMEMxxx.REM file be deleted. Trying to launch a second instance of Paradox one more time, will result in a "Could not initialize BDE" error.
Problem occurs on Win2000, but not Win98 FE.
SETUP:
1) Open first instance of Paradox, and create a blank form. Put a pushButton on it and in the button´s pushButton method put:
method pushButton(var eventInfo Event)
formReturn()
endmethod
Save the form as PX0703 and close it.
2)Create a script and write the code below in the run event:
method run(var eventInfo Event)
var
f1 Form
endvar
hideToolbar()
projectViewerClose()
f1.open("PX0703")
f1.wait()
f1.close()
showToolbar()
exit()
endmethod
Save the script as PX0703. Close it but leave the actual session open (do not exit Paradox)
3) Bring up another session of Paradox.
4) Run the script, when the form comes up, click on the button, the form will close and the session will close down.
5) If you now try to bring up that same session(second) you won´t be allowed to do so.
6) Now go to the first session, edit the script and comment out the following line: "projectViewerClose()". Save and exit first session.
7) Using Windows Explorer, remove all (.LCK) files.
8) Start session 1 and session 2. Run the script from the second session. When the form comes up click the button, the form will close and the session will too.
9) Now try bringing up the second session again and this time you will be able to do so.
Reported by: Air Sea Carga J.M., C.A.
Date: 25 February 2003
MY COMMENTS.
I can recreate this on Win2000, but not Win98 FE.
It does not happen when script is run from the Toolbar.
Two sessions have to be opened at the same time for the problem to show up,
INMEMxxx.REM is not deleted when Paradox is closed down, so when there is only one Paradox session open, there are two INMEMxxx.REM files in the temp folder.
I have tested this with BDE setting LocalShare=TRUE only. Maybe, LocalShare=FALSE will make Paradox behave differently.
To index
PX0704 Form / Report design - dependent properties
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 10.0 P3 | 11 Build 302 | True |
SUMMARY:
Under certain cirumstances, Property dialog and Object Explorer does not show the current property settings for dependent properties.
DESCRIPTION:
Some properties for an object depends on another property.
Example1: for a tableframe object, Horizontal Scrollbar and Design.SizeToFit are mutually exclusive. You can't have Horizontal Scrollbar checked and Design.SizeToFit checked at the same time. With Horizontal Scrollbar unchecked, Design.SizeToFit can be checked or unchecked, though.
Neither the property dialog nor ObjectExplorer handles this in a proper way for all situations.
Example 2: For a field with WordWrap property set to True, FitWidth property is gray, and can't be changed. Changing WordWrap to False, won't make Fit Width available until you reopen the Property dialog.
Use ObjectExplorer property tab instead.
SETUP Horizontal Scrollbar:
Create a form with a tableframe object on it. Make sure it has a horizontal scrollbar. Close Property dialog and Object Explorer.
A) Property dialog
Test A1:
Let Horizontal Scroll bar be Checked.
Open Properties dialog box, uncheck SizeToFit, press Apply.
Result: Horizontal bar disappeared.
Move to General tab, state of Horizontal Scroll bar property is still, wrongly, Checked.
Unchecking it, won't activate the the Apply button, though.
Properties dialog box has to be reopened to show the state properly.
Test A2:
Let SizeToFit be Checked.
Open Properties dialog box, check Horizontal Scroll bar, press Apply.
Result: Horizontal bar appears.
Move to Design tab, state of SizeToFit property is still, wrongly, Checked.
Unchecking it, won't activate the the Apply button, though.
Properties dialog box has to be reopened to show the state properly.
B) Object Explorer is correctly updating the properties for test A1, but not for A2.
Reported by: Ivica Kolar
To index
PX0705 QBE run - tables in Non standard driver databases
| Type of error: | First verified: | Last tested: | Verified by me: |
| Error | 7.0 W95 P3 | 11 Build 302 | True |
Running a QBE file with remote tables based on native drivers for Sybase ASE or MS SQL Server, where two tablenames begin with same letter but with different case, like dbo.uppgkod and dbo.Underlag, will cause a "General SQL Error" when executed with setting Run query remotely, but not with setting Query may be local or remote. The error is caused by Paradox' translation of QBE to SQL, where the first letter in the tablename is used as tablealias in the SQL statement.
select ...
from dbo.uppgkod u, dbo.Underlag U
This translation is not accepted by the remote database.
If the query is translated to SQL using SQL button on the toolbar, same tablealiases are created, and the SQL statement will also cause a GeneralSQL Error.
Using ODBC driver for MS SQL Server instead, the problem does not occur.
WORKAROUND:
Editing the QBE file, using Notepad, and changing the case of dbo.Underlag to dbo.underlag will make the QBE file execute remotely. When the tablenames begin with the same first letter and same case, Paradox will translate QBE into SQL as
select ...
from dbo.uppgkod u, dbo.underlag u1
DESCRIPTION:
Query that fails
Query
ANSWER: :PRIV:ANSWER.DB
OPTIONS: SERVER
:barnomsorg:dbo.UppgKod_LopNr | UppgKod | Lopnr |
| _join1 | _join2, 1 |
:barnomsorg:dbo.arsarben | UppgKod | Lopnr | ArsFritLedDh |
| _join3, _join1 | _join4, _join2 | calc sum all as a |
:barnomsorg:dbo.uppg_7bf | UppgKod | Lopnr | ArsFlerFritFkl |
| _join3 | _join4 | calc sum all as b |
EndQuery
SQL generated by Paradox, that fails
SELECT SUM(a.ArsFritLedDh), SUM(u.ArsFlerFritFkl)
FROM dbo.UppgKod_LopNr U, dbo.arsarben a, dbo.uppg_7bf u
WHERE
(U.Lopnr = 1.0)
AND (a.UppgKod = U.UppgKod)
AND (a.Lopnr = U.Lopnr)
AND (u.UppgKod = a.UppgKod)
AND (u.Lopnr = a.Lopnr)
Manually edited SQL that works:
SELECT SUM(a.ArsFritLedDh), SUM(u1.ArsFlerFritFkl)
FROM dbo.UppgKod_LopNr U, dbo.arsarben a, dbo.uppg_7bf u1
WHERE
(U.Lopnr = 1.0)
AND (a.UppgKod = U.UppgKod)
AND (a.Lopnr = U.Lopnr)
AND (u1.UppgKod = a.UppgKod)
AND (u1.Lopnr = a.Lopnr)
Query that works, manually edited in a text editor. Tablename Uppgkod_Lopnr changed to uppgkod_Lopnr.
Query
ANSWER: :PRIV:ANSWER.DB
OPTIONS: SERVER
:barnomsorg:dbo.uppgKod_LopNr | UppgKod | Lopnr |
| _join1 | _join2, 1 |
:barnomsorg:dbo.arsarben | UppgKod | Lopnr | ArsFritLedDh |
| _join3, _join1 | _join4, _join2 | calc sum all as a |
:barnomsorg:dbo.uppg_7bf | UppgKod | Lopnr | ArsFlerFritFkl |
| _join3 | _join4 | calc sum all as b |
EndQuery
Tested with P7 W95 P3, P7 W95 P4, P10 SP4, Bde 3.50, Bde 4.51, and Bde 5.2.
Sybase ASE 12.0. MS SQL Server 2000.
To index
PX0707 Chart - LabelFormat y in percent
| Type of error: | First verified: | Last tested: | Verified by me: |
| Minor | 9.0 P4 | 11 Build 302 | True |
A pie chart, and a column chart, in Paradox 8 shows segment labels such as (23.8%). The same chart using Paradox 9 and later versions shows (23.8), leaving out the % sign.
Trying to change the property Label.NumberFormat has no effect when Chart property Label | Label Format | y in percent is selected. Changing this property to y-value instead, you can change the format to W.2,E(%)L1PB,S+4-5 and get a proper display.
Reported by: "Robert Bowser"
Date: 16 April 2003
Verified by:
"Peter Zevenaar"
"Dmitry Vulis"
To index
PX0708 Paradox Runtime - Alt key
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 10.0 P2 RT | 11 RT Build 233 | True |
The Alt key does not activate the menus in Paradox 10 Runtime.
Description:
With any form open, press Alt. Menus are not activated.
Open ProjectViewer. Press Alt. Now menus are activated.
Tested on:
Win 98, Win NT 4.0, Win2000 Pro
Reported by: "Markus Komm"
Date: 23 April 2003
To index
PX0709 About Paradox - System Info dialog
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 11 Build 233 | 11 Build 302 | True |
Help | About Paradox - System Info button produces a funny looking screen
To index
PX0710 New From Project - example databases
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 11 Build 233 | 11 Build 302 | True |
Neither the Ocean Life nor the Office Equipment examples work. There are no tables included in the datamodels.
Neither does vendors.fsl in the Classic sample database work.
To index
PX0711 ObjectPAL - GPV - dataTransfer.enumSourcePageList()
| Type of error: | First verified: | Last tested: | Verified by me: |
| GPV | 9.0 | 11 Build 302 | True |
Summary:
dataTransfer type contains two methods for analyzing spreadsheets, enumSourcePageList() and enumSourceRangeList(). They stopped working for Excel spreadsheets in Paradox 9. When a dataTransfer type is specified in dataTransfer.setSource("filename", dtExcel5), enumSourcePageList() will cause a GPV.
Description:
Create an Excel spreadsheet containing two tabs named Daily, and Monthly. And save it as Excel 5/95 workbook.
Try to import it and analyzing it using dataTransfer type methods:
var
dt datatransfer
stFile string
stRange string
arPage, arRange array[] String
endvar
stFile=getAliasPath(":Buggar:")
stFile=stFile+ "\\Wad\\Di0233TabName.xls"
dt.setSource(stFile, dtExcel5)
dt.enumSourcePageList(arPage)
arPage.view()
dt.enumSourceRangeList(arRange)
arRange.view()
{
dt.setDest(getAliasPath(":Buggar:")+"\\Wad\\Qz0233A.db")
try
dt.transferData()
onfail
errorshow()
endtry
}
I have added a custom defined named range, MyRange, too. This range may cause a different output from the metods, than you will see.
In Paradox 7, the code works, and I get
PageList:
1: Monthly
2: Daily
RangeList:
1: < all >
2: [Page]Monthly
3: [Page]Daily
4: MyRange
In Paradox 9 and later versions I get a GPV caused by sourceType dtExcel5. When removed, I get
PageList:
blank
RangeList::
1: < Spreadsheet >
2: blank
3: < Spreadsheet A >
4: < Spreadsheet B >
5: blank
To index
PX0712 Form run - GPV - assigning blank memofield to textobject
| Type of error: | First verified: | Last tested: | Verified by me: |
| GPV | 10.0 P2 | 11 Build 302 | True |
Summary:
Assigning contents from a blank memofield to a textobject's text property will cause a GPV.
Description:
I get a Unexpected GPV in 10 SP2 XP:
1. Create a form
2. Put a table with a memo field in the datamodel.
3. Define that memofield in an MRO
4. Put a text object on the form with name txtObject
5. Put following code in a pushbutton's pushbutton event
txtObject.text=MemoField'value
Move to a record where memofield is blank. Then press the button.
Workarounds:
1)
txtObject'value=MemoField'value
2)
txtObject.text=memo(MemoField'value)
It seems Paradox doesn't appreciate the combination of trying to write an empty memo value to a text object's text property.
Originally reported by "Peter Zevenaar"
Date: 5 May 2003
To index
PX0717 Report run - Summary field in Page Header
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 P4 | 11 Build 302 | True |
A summary field with summary operator First will show an incorrect result when placed in a report's page header and the table contains only one record. As soon as a second record is added, the result is correct.
When placed in report header, the value is correct.
If you, in a report, set a filter on a table with multiple records, and the filter results in only one record, you'll get the same incorrect results for summary First when the field is placed in PageHeader.
Reported by: "Mark Weimer"
Date: 11 June 2003
To index
PX0722 Toolbars - Reset Status Bar
| Type of error: | First verified: | Last tested: | Verified by me: |
| GPV | 9.0 P4 | 11 Build 302 | True |
Summary:
You can drag the document switcher from the second line of the statusbar to the first line, when in Customize statusbar mode. If you do, and afterwards want to reset the statusbar, you will get a Unexpected General Protection Violation error.
Setup:
On Win2000, set your statusbar to show two lines. Enter Customize mode. Drag the document switcher from the second line to the first line. Exit Customize mode. Right click the statusbar and select Reset Statusbar.
To index
PX0724 Paradox Runtime - Preferences - Script Font
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 10.0 RT | 11 RT Build 233 | True |
Problem:
When changing the Script font under Tools | Settings | Preferences from Western to something else eg CentralEuropean, the registry key
HKEY_CURRENT_USER\Software\Corel\Paradox Runtime\11.0\Pdoxwin\Properties
"ScriptFont"="238"
is not saved to registry.
And the script font will be Western when Paradox Runtime is relaunched.
Workaround:
Edit registry manually
To index
PX0725 ObjectExplorer - Pin Explorer
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 P4 | 11 Build 302 | True |
SUMMARY: Pin Explorer setting shown in menus does not reflect the setting.
SETUP:
Open a form in design mode.
Is ObjectExplorer opened by default?
Yes: The look at the View - Pin Explorer setting.
Is it checked ?
No: Check View | Pin Explorer. Close form.
Open another form in design mode.
Object Explorer is shown. But Pin Explorer is unchecked.
Reported by:
"Kyle Norman"
"Robert Wiltshire"
Date: 13 August 2003
To index
PX0726 Table Repair - Rebuild
| Type of error: | First verified: | Last tested: | Verified by me: |
| WindowsError | 10.0 P4 | 11 Build 302 | True |
Problem:
When running Table repair on a table in Paradox 11, SP1 installed, the Rebuilding table ... progressbar will be left on the desktop after the message titled Tutility Notice - saying original table backuped to... has been shown.
Closing the TableRepair dialog in this situation will close down Paradox with a Windows error handled by DrWatson.exe with a nationalized error message saying: pdxwin32.exe has generated an error and will be closed down by Windows.
Workaround:
Use tuwwr32.dll from WP Office 2002 / Paradox 10 instead of the one from WPO11.
Verified by: "Rick Kelly"
Date: 21 September 2003
Verified on W2K/SP4.
To index
PX0727 ObjectPAL - Resource leakage - memo.readfromFile()
| Type of error: | First verified: | Last tested: | Verified by me: |
| Resource | 7.0 W95 P4 | 11 Build 302 | True |
SUMMARY:
memo type method readFromFile() doesn't release the file handle.
Tested under WinXP, Paradox 9-11.
Also tested on Win2000, Paradox 7 SP4, and Paradox 11 SP1.
SETUP:
Open Task Manager (Crtl-Alt-Del) in WinXP or Win2000, and click Performance tab. Note the number of "Handles" in the "Total" section. Then execute the following code:
method pushButton(var eventInfo Event)
var
m memo
i smallint
endvar
for i from 1 to 1000
m.readFromFile("somefile")
endfor
endMethod
Now the number of open handles in the Task manager is 1000 more. These handles will be released only at Paradox closing.
readFromFile for string (P10/P11), query, binary and graphic types doesn't cause resource leakage.
This leakage is especially serious if you use readFromFile in Paradox-WEB applications to read HTML templates from files.
Workaround:
method readMemoFromFile(fileName string, var m memo) logical
var
ts textstream
m memo
s string
endvar
m=""
if not ts.open(fileName ,"r") then return false endif
while not ts.eof() ts.readchars(s,32000) m=m+memo(s) endwhile
ts.close()
endmethod
Reported by: "Vladimir Menkin"
Date: 10 November 2003
To index
PX0728 Form run - unsynchronized toolbar buttons
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 P4 | 11 Build 302 | True |
SUMMARY:
Specifiying a menu for a form, can make the Edit button on the Property toolbar go out of sync with the real edit mode status.
SETUP:
Use the example code from the ObjectPAL Reference help file: index - menuChoice - example button.
Help file describes the example as:
"The following example assumes a form contains at least one memo field, named thisMemoField. When the user arrives on thisMemoField, the built-in arrive method displays a menu that lets the user perform basic cut and paste operations. The built-in menuAction method attached to thisMemoField uses menuChoice to evaluate the user's selection and to take appropriate action. Although this example mimics the behavior of the default menus, this technique is necessary when the default menus are replaced by custom menus."
When the memofield gets focus, the Edit button on the toolbar becomes pressed even though statusbar indicates View mode.
This happens in Paradox 9 and later versions, but not in Paradox 7.
Workaround:
Add
if not isEdit() then
edit()
endEdit()
endif
after editMenu.show() in the memofield's arrive event.
To index
PX0729 ObjectPAL - query.isExecuteQBELocal()
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | | 11 Build 302 | True |
isExecuteQBELocal() should report whether a query was run locally or on a remote database server. I get TRUE returned even when OPTIONS: SERVER is specified in the query.
To index
PX0730 Non standard database drivers - MSSQL driver - NUMERIC datatype
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 11 Build 300 | 11 Build 302 | True |
SUMMARY:
Paradox has problem with MS SQL SERVER datatype NUMERIC specified with no precision. The default precision is 18,0 and Paradox will transform values in such a way that last digit becomes incorrect. A value 733059700985 is stored as 733059700984 on the server.
The problem only occurs when database is updated through a tcursor. When inserted using SQL, values will be correct on the server.
SETUP:
Create a table on MS SQL Server 2000,
create table PX0730 (
MyId int not null primary key,
Col1 numeric not null,
Col2 numeric(15,0) not null,
Col3 numeric(12,0) not null)
Create an ODBC datasource to the database, and an alias.
Use code below to insert data in the table.
var
db database
tc tcursor
endvar
db.open("MSODBC")
tc.open("dbo.PX0730", db)
errortraponwarnings(Yes)
try
tc.edit()
tc.insertrecord()
tc.setFieldValue("MyId",9)
tc.setFieldValue("col1", number(733059700985))
tc.setFieldValue("col2", number(733059700987))
tc.setFieldValue("col3", number(733059700989))
tc.unlockrecord()
tc.endedit()
onfail
errorshow()
endtry
errortraponwarnings(no)
tc.close()
db.close()
Look at the table using MS SQL Server Query Analyzer. value in Col1=733059700985
Some values are transformed in a correct way.
733059700986 OK
733059700987 OK
733059700988 OK
733059700989 as 733059700988
Replacing NUMERIC with float, the result is Ok.
This issue is tested with MS SQL SERVER ODBC driver 2000.80.528.00
BDE 4.51 and BDE 5.2
ENABLE BCD = TRUE and FALSE
Reported by: "Anders Jonsson"
Date: 16 December 2003
To index
PX0731 ObjectPAL - Error - OLE object is not a collection object - oleAuto.first() and oleAuto.next()
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | | 11 Build 302 | True |
SUMMARY:
oleAuto type methods first() and next() does not work. It looks like they can't recognize a collection object. You can get an error: OLE object is not a collection object.
At least the example in the ObjectPAL reference help file contains invalid syntax when showing how the methods are to be used.
SETUP:
Trying to run the example, I get a syntax error:
< Quote >
method GetContents ( var collectnObj oleAuto )
Var
anElement LongInt
i SmallInt
endVar
collectnObj = OA.first(anElement)
processObject(anElement) ; call a custom method which
; processes the current element
; and pass the element reference
for i = 1 to collectnObj^count() ; call the OleAuto object's count
; method to determine loop max
collectnObj = OA.next(anElement) ; get the next item in the
; collection object
processObject(anElement)
endFor
endMethod
< /Quote >
Issue 1:
collectnObj = OA.first(anElement)
is incorrect.
collectnObj.first(anElement)
is accepted.
Same applies to
collectnObj = OA.next(anElement)
Issue 2:
for i = 1 to collectnObj^count()
is incorrect
for i from 1 to collectnObj^count()
is correct
Issue 3:
Description says:
< Quote >
collectnObj is passed as a parameter to first. This example assumes that collectnObj is attached to an OleAuto collection object and is declared at the form level.
< /Quote >
As collectnobj is passed as a parameter, it should not be declared at form level.
Another example using MS Outlook:
var
MAPI,
fl1 OLEAuto
n longint
endvar
try
MAPI.open("Outlook.Application")
MAPI=MAPI.GetNameSpace("MAPI")
fl1=MAPI.getDefaultFolder(6) ; this gives access to the Inbox
fl1=fl1.Folders() ; this gives the list of folders _inside_ Inbox
fl1.first(n)
onFail
errorshow()
endtry
To index
PX0732 Form / Report design - Format percent
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | | 11 Build 302 | True |
Problem:
Numeric fields can be formatted as percent using the builtin percent format. When applied to a value 0, the formatted result is 00.0 %.
Format percent is using the following formatting string: W.1,E(%)L1PB+2,S+4-5
This happens in Paradox 9 SP4 and later versions, but not in Paradox 7 Patch 4.
Reported by: "Jean Friedberg"
Date: 23 January 2004
To index
PX0733 ObjectPAL - GPV - popupMenu.show()
| Type of error: | First verified: | Last tested: | Verified by me: |
| GPV | 7.0 W95 P4 | 11 Build 302 | True |
SUMMARY
Showing a popupmenu after a library has been opened and closed, will cause a GPV.
SETUP:
Code like this will cause a GPV in P9 Sp4 and later versions of Paradox. In Paradox 7 patch 4, Paradox is closed down.
Fix is to make sleep(10) part of the code after lib.close().
Library named execute.lsl contains a custom method, which is never called in this case.
Uses ObjectPAL
uExec()
endUses
Code in a pushButton event
var
stAno string
dAno1,dAno2 date
arstTipoExt array[2] String
pop popupmenu
stChoice String
lib library
endvar
message("Impressao de Extracto")
lib.open("execute")
lib.close()
;;;;;sleep(10)
arstTipoExt[1]="Anual"
arstTipoExt[2]="Vigencia"
pop.addstatictext("Tipo Extracto")
pop.addseparator()
pop.addarray(arstTipoExt)
stChoice=pop.show()
;;; PROBLEM OCCURS HERE
switch
case stChoice="Anual":
stAno=string(year(today()))
stAno.view("Qual o Ano...?")
if stAno="" then
dAno1=blank()
dAno2=blank()
else
dAno1=date(01,01,smallint(stAno))
dAno2=date(12,31,smallint(stAno))
endif
msgInfo(dAno1, dAno2)
otherwise:
endswitch
endMethod
Originally reported by: "Alvaro Nunes"
Date: 18 February 2004
To index
PX0734 Form run - refresh of 1-1 linked tables
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 7.0 W95 P4 | 11 Build 302 | True |
SUMMARY:
Under certain circumstances data in a form, where tables are linked as M-1, is not refreshed correctly when data in the Master table is changed by another user.
SETUP:
Two tables
PX0734Master.Db contains two columns: Idx (primary key) and InfoId (long integer)
Px0734Lkp.Db contains two columns: InfoId (primary key) and InfoName (ASCII string)
Px0734Lkp works as a lookup table for InfoId column in Px0734Master.
Data:
Master contains:
1 1
2 2
3 3
Lkp contains
1 One
2 Two
3 Three
4 Four
Create a form where Master is linked to Lkp on InfoId column. No code needed. Make it Tabular design to get a tableframe showing the data. Save the form.
Open two instances of Paradox.
In instance one, open the form, and move to first record. Idx column.
In instance two, open the Master table, and change Infoid for first record from 1 to 3. And move off the record to unlock it.
Activate instance one by clicking on the title bar to keep first record as active record . Record is changed and InfoCol shows Three.
Activate instance two. Restore InfoId in first record to 1. Unlock the record.
Activate instance one the same way as above. Infoid is changed to 1 but InfoCol is blank!
This problem is most easily seen when record 1 in the form is active and when record 1 in Master is changed to be linked to record 1 in Lkp table. It can occur for other records too, and also when record 1 in Master is changed to be linked to second or third record in Lkp. Problem is easier to recreate when columns in Master is active rather than the column from Lkp table.
Defining Table Lookup from Master to Lkp table does not help to get rid of the problem.
Problem is verified with refresh rate 60 as well as refresh rate 3.
A workaround:
Add this code to the record object in the table frame
method arrive(var eventInfo MoveEvent)
self.setTimer(1500)
endMethod
method depart(var eventInfo MoveEvent)
self.killtimer()
endMethod
method timer(var eventInfo TimerEvent)
var
ui1, ui2 uiobject
endvar
; Have to attach to current record's InfoName
ui1.attach(InfoName)
; Is InfoName already active
; No. attach to active field
if active'name<>ui1'Name then
ui2.attach(active'name)
endif
if not self'locked then
; moveto InfoName
ui1.moveto()
; refresh the record
ui1.container.forceRefresh()
; Do I have to return somewhere else?
if ui2.isassigned() then
ui2.moveto()
endif
endif
endMethod
Originally reported by: From: "Luc Kumps"
Date: 1 March 2004
To index
PX0735 ObjectPAL - GPV - table.empty()
| Type of error: | First verified: | Last tested: | Verified by me: |
| GPV | 11 Build 300 | 11 Build 302 | True |
Summary:
Under certain circumstances table.empty() can cause a GPV when executed.
Setup:
Create a table containing Customer No from Customer table. Name the table PX0735XY and move it to a networked drive. Create an alias PX0735 pointing to that directory.
Now create a blank form with this table in the datamodel. Add code to a pushbutton event in the form.
method pushButton(var eventInfo Event)
var
qryHandle query
stQuery string
stTableName string
tbl table
endVar
stQuery ="query\n\n" +
":SAMPLE:CUSTOMER |Customer No |\n" +
" |Check |\n\n" +
"endQuery"
stTableName = ":PX0735:PX0735xy"
qryHandle.readFromString(stQuery)
; Answertable will be named :PX0735: PX0735xyP
if NOT qryHandle.executeQBE(stTableName+"P") then
msgInfo ("ERROR", "QUERY FAILED")
errorShow ()
return
endif
tbl.attach(stTableName)
tbl.empty()
tbl.unattach()
endMethod
When the above code is executed, a GPV occurs on the call to tbl.empty().
1. Paradox version on the system running the test isn't of any influence
2. stTableName is definitely of influence. It has to be 8 characters, otherwise GPV doesn't occur. The filename passed to executeQBE() must have the same 8 characters
3.Contents of Query is of no influence
4. When :PX0735:PX0735xy is not in Data Model, problem doesn't occur Adding the table to the data model of an empty form, adding a single button and pasting the above code in a pushbutton() handler reproduces the GPV on the first push. PX0735xy is an empty table, no index, the directory contains only this table (and PX0735xyp after executing the test of course)
5. The bug only occurs when the :PX0735: folder is shared.
The work-around is easy: use another table name. Or replace table.empty() with
tc.open(stTableName)
tc.edit()
while not tc.eot() and not tc.isEmpty()
tc.deleterecord()
endwhile
tc.close()
Originally reported by: "Luc Kumps"
Date: 22 March 2004
To index
PX0737 ObjectPAL Editor - pdxwin32.exe has generated an error - Developer Preferences - Cursor beyond EOL
| Type of error: | First verified: | Last tested: | Verified by me: |
| WindowsError | 9.0 P4 | 11 Build 302 | True |
Summary:
When Developer Preferences - Editor setting Cursor beyond EOL is unchecked, you can get a Program error "pdxwin32.exe has generated an error" error in ObjectPAL Editor when cursor is moved to the endmethod line.
SETUP:
1. Go to Tools, Settings, Developer Preferences.
In General, select "Advanced", "Enable debug() statement, Show developer menus
In Editor, check all 12 checkboxes EXCEPT the following 3: Undo after save, Persistent blocks and Cursor beyond EOL.
Click "OK" button
2. File, New, Form, press "Blank"
3. Right-click form, choose open() method of the form (#FormData1)
4. Press UP arrow twice (cursor is then on line before "else")
5. Type single 'a' character
6. Use DOWN arrow to move towards endmethod. When you cross endmethod, Paradox crashes.
Reproduced on 3 separate systems (both Win2000 and Xp) with Paradox 9, with and without SP3 installed.
Problem does NOT occur when "Cursor beyond EOL" is checked. I don't know if the other settings have any influence.
Reported by: "Luc Kumps"
Date: 22 June 2004
To index
PX0738 Form design - GPV - saving a form
| Type of error: | First verified: | Last tested: | Verified by me: |
| GPV | 9.0 P3 | 11 Build 302 | True |
Summary:
Under certain circumstances, you can get a GPV when trying to save a form in Paradox 9 SP3 or later versions.
Setup:
When compiling or saving a form containing code like
var
currentDate date
endvar
while currentDate.month().mod(3)<>0
endwhile
you will get a GPV.
Paradox 7 will treat the form correctly. You get a syntax error, but the form is saved, and can be reopened.
Reported by: "Luc Kumps"
Date: 27 June 2004
To index
PX0739 Form / Report design - GPV - Calculated fields
| Type of error: | First verified: | Last tested: | Verified by me: |
| GPV | 10.0 P4 | 11 Build 410 | True |
Summary:
Changing the definition of a calculated field in a form with a tabular layout can cause a GPV when form is to be saved in Paradox 10 build 990 and 11 build 302.
Setup:
Use Orders to create a form where Orders is shown in a tableframe. Insert a new column and define the field as
[Orders.Ship date] - [Orders.Sale date]
Save and run.
Change the definition to
longint([Orders.Ship date] - [Orders.Sale date])
Save and run.
Change the definition to
iif([Orders.Ship date]<>blank(),longint([Orders.Ship date] - [Orders.Sale date]),blank())
Save and run.
Change the definition to:
iif([Orders.Ship date]<>blank(),longint(today()-[Orders.Ship date]),blank()).
I get a GPV or if the form can be saved, I get a Access Violation in NTDLL.DLL when I try to open a form from ProjectViewer.
Problem does not occur in Paradox 9 SP4.
Problem seems to relate to reports too.
Workaround:
Remove the definition, save the form, and add the changed definition.
As reported by: "Ken McHugh"
Date: 14 June 2004
About 8 weeks ago I began to receive a GPV on saving a report after making modifications. Have reloaded WPO2002 several times. Even did a new install on a new box with W2K Pro.
The GPV seems to only occur when editing a calculated field on a report. New calculated fields on reports do not trigger it. Timing may be related to WPO sp4 install about 3 months ago. Does not effect calculated fields on forms.
As reported by: "Ed Dickerson"
Date: 12 July 2004
I have the following formula for a calculated field:
iif([SUBMISSIONS.OUTCOME_DATE] ="", Number(date()-[SUBMISSIONS.SUBMIT_DATE]), "")
Basically, I want it to check and see if an outcome date has been recorded. If not, it should calculate the number of days since the item was submitted, otherwise, leave it blank.
I keep getting a General Protection fault, and Paradox freezes up.
Originally, this field just calculated elapsed time, thusly:
Number(date ()-[SUBMISSIONS.SUBMIT_DATE])
I'm just trying to change it so that it doesn't give elapsed times for submissions that have been dealt with.
Paradox 10.0.0.990
I have two tables, PUBLICATIONS and SUBMISSIONS. They are linked on the Periodical field, one-to-many. PUBLICATIONS is the parent.
The form has all the fields of Publications, and then Submissions as a Table object. ResponseTime field of Submissions will calculate the difference between SubmissionDate and OutcomeDate when double-clicked. There's another field that calculates the average response time.
To index
PX0741 ObjectPAL - oleAuto.executeString()
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 P4 | 11 Build 302 | True |
Summary:
Paradox as an oleautomation server has a method executeString(). Since Paradox 9 SP4, it does not work.
Setup:
The following script works in Paradox 7 Patch 4.
var
ol oleauto
stScript string
ay anytype
endvar
stScript="var
i longint
endvar
for i from 1 to 10
sleep()
message(i)
sleep(1000)
endfor"
ol.open("paradox.application")
ay=ol.executeString(stScript,"")
ay.view() ; ay is a BLANK string
sleep()
sleep(2000)
ol.close()
msginfo("done","done")
When run, statusbar shows the counter 1 to 10 on the statusbar. Since Paradox 9 SP4, nothing happens.
Originally reported by: "Tony McGuire"
Date: 4 August 2004
To index
PX0742 ObjectPAL - GPV - oleAuto()
| Type of error: | First verified: | Last tested: | Verified by me: |
| GPV | 7.0 W95 P4 | 11 Build 302 | True |
PROBLEM:
Using a string literal that happens to be equal to the uppercase name of an OLE auto property accessed in the same script/library causes a Unexpected: General Protection Violation. Note that the code with the property reference need not be called - its presence is sufficient.
SETUP:
Create a script with code
;; PX0742.ssl
proc badmeth(var o OLEAuto)
o.FOOBAR = "hihi"
endProc
method run(var eventInfo Event)
var
s String
endVar
s = "FOOBAR"
s.view()
endMethod
;; end PX0742.ssl
Placing badmeth() in a separate method window, does not cause a GPV
Making badmeth() a proc and placing it in a proc window will cause a GPV.
Originally Reported by : "gfk"
Date: 26 October 2004
To index
PX0743 Import - QPW9 files
| Type of error: | First verified: | Last tested: | Verified by me: |
| Functionality | 9.0 P1 | 11 Build 302 | True |
Problem:
Importing QPW9 files, .qpw, with dates into Paradox 9 or later, results in wrong data. Furthermore, only mm/dd/yyyy format will be accepted as dates.
Steps to reproduce:
1. Launch QPW 9
2. In A:A1 type 9/22/2000 and press Enter.
3. Save the file as QP9PD9Date.QPW and exit QPW
4. Launch Paradox
5. File, Import, Import, From file type - QPW 9 and From name (navigate to and select QP9PD9Date.QPW), click Import
//Expected result -- Field001 should show 9/22/2000
//Actual result -- 9/22/0000
My settings for Four Digit Year and YearBiased in Bde Admin are both True.
Reported by: Jim Latham
Date: 14 October 2000
Verified by: Stephen Inkpen - Corel
Yes, I was able to duplicate the problem.
Here's my findings thus far (All with default Regional US date and BDE settings) using Bde versions 5.0.1.22, 5.01.04, & 5.1.1.1:
1. Creating and Saving a file in QuattroPro containing all the different date formats as a Paradox database and then viewing the table in Paradox.
- The structure of the fields in the table are all Date
- The values in the table are all formatted the same
- Long date format follows the year biased formats for years between 1 & 100 (i.e. 1949 and less appears as 1949, 1948 ,etc.; 1950 and up or 2050 and up appear in short format - 2051 is just 51, 1951 is just 51).
2. Importing the file with Paradox
- The structure of the fields are all Alpha ex