![]() |
![]() |
|
![]() |
Subject: FAQ: PdoxWin: Text Full FAQ 1999.06.30 Version 1.0 (1999.06.30) first collected by Laurie McIntosh edited by Mike Irwin, Laurie McIntosh, Lance Leonard, and Kasey Chang Repost by Mike Irwin; 2000.06.09 Repost by Mike Irwin; 2001.02.05 Please note: this is the first release of the FAQ. Mistakes are expected, and some sections are still missing. Please send in all the corrections or additions you feel like! Also, if any comments here are yours, please tell us so we can properly attribute them. thanks! --the editors --BEGIN TABLE OF CONTENTS-- 0 Introduction 1 What is Paradox for Windows? 2 Top X Questions 3 General Paradox Questions 4 Table and BDE Questions 5 Forms and Reports Question 6 ObjectPAL Questions 7 Network and Multi-user Questions 8 Query and Misc. Questions 9 Troubleshooting Appendix A: Y2K issues --END TABLE OF CONTENTS-- ==================== 0. Introduction ==================== Welcome to the Paradox FAQ. This FAQ addresses the most frequent questions asked by new members of Paradox Newsgroups and USENET fora. ------------------------------- 0.1 Legal Info and Disclaimers ------------------------------- Paradox is a trademark of Corel. Borland Database Engine (BDE) is a trademark of Inprise. This FAQ is intended to inform the public about the Paradox relational database. The information provided in this FAQ is provided "as is" and is not warranted in any way. The information provided in this FAQ is not endorsed or authorized by Corel or Inprise in any shape, form, or manner. The editors claim NO responsibility for ANY illegal activity regarding this file, or as a result of someone reading this file. You may distribute this file, as long as the copies are complete, unaltered, and are in electronic form only. ------------- 0.2 Feedback ------------- Please send feedback in a Corel Paradox newsgroup or the comp.databases.Paradox newsgroup to any of the FAQ Team mentioned at the head of this document. Please preface the subject of your post with the string "PdxWin FAQ" to alert Team members to the function of the message. Please specify the section number the comment applies to, if any. If it's a correction or addition, your name will be noted as a contributor unless you wish otherwise. ---------- 0.3 Misc. ---------- Official Paradox website: Drill down through www.corel.ca to find a number of Paradox areas Other Paradox-supporting websites: www.prestwood.com www.kallista.com sheep.east.ru:8100/~menkin/paradox.htm ==================== 1 What is Paradox for Windows? ==================== Paradox for Windows is one of the most powerful and yet affordable relational databases you can buy. Its chief competitors on the 32-bit Windows platform are Microsoft Access, Microsoft Visual FoxPro, Borland Visual dBase, Lotus Approach, Alpha Five, and Apple/Claris Filemaker Pro. Of all of these, only Paradox is also available on Linux. -------------------- 1.1 Paradox History -------------------- Paradox started out as a DOS program by Ansa Corporation. They designed Paradox 1.0 and 2.0. Later, Ansa was absorbed by Borland, who produced 3.0, 3.5, 4.0, and 4.5, steadily adding more and more powerful features. When Windows 3.0 and 3.1 became popular, Paradox for Windows 1.0 was released in 1993. Versions 4.5 and 5.0 followed; version 7.0 was released both as a 16-bit app and a 32-bit app for Win9X and WinNT. At this point Paradox was sold to Corel, who published versions 8.0 and, in 1999, 9.0 as 32-bit only versions. ------------------------ 1.2 System Requirements ------------------------ For the 16-bit versions of Paradox for Windows, Windows 3.1 with 4 MB of RAM and a lot of HD space is a bare minimum. An 80386/33-based system with 16 MB of RAM was usable for release 5, but barely adequate at the time of release of 7.0. For the 32-bit versions of Paradox for Windows, an 80486 machine with Windows 9X or Windows NT, with 8 Megs of RAM and a lot of HD space is again a very bare minimum. Acceptable performance can be obtained with a Pentium/90 and 24 MB of RAM; additional memory rather than processor speed will better improve performance. You will need to install a printer driver to generate reports. You do not need to physically have a printer attached, as you can print to file as an intermediate format. -------------------- 1.3 Version History -------------------- 1.0 - March 1993. No patch ever released. 4.5 -- one patch released 5.0 -- Patch release, dated December 12, 1995, is best version 7.0/16 -- ??? 7.0/32 -- four patches released. SP 4 is on Corel FTP site. 7.0 Enterprise Edition -- 16- & 32-bit versions of standalone and runtime programs all on one CD 8.0 -- one patch, upgrades to 8.302. Includes ODBC 3.00.005 8.0 Runtime 9.0 -- released May 1999. Includes ODBC 3.11.000 9.0 Developers’ Edition (includes 9.0 Runtime) 9.0 SP1 August 1999 9.0 SP2 December 1999 (installs over SP1. May need extra file - see FAQ) 9.0 Runtime SP2 January 2000. Needs extra file - see FAQ 9.0 SP3 May 2000 (includes SP1 & SP2; may need use of registry patch - see FAQ) 9.0 Runtime SP3 May 2000 (includes SP1 & SP2) ==================== 2 Top X Questions ==================== These questions have been asked more often than others. Q: Are there any Y2K issues with PDOXWIN? A: Not with Paradox date storage itself. See [3.1] Q: Can I convert PDOXDOS applications to PDOXWIN? A: Not really. See [3.2] Q: What is "Cannot Initialize BDE: Directory is Busy" error? A: Your Paradox has previously crashed. Restart Windows. See [4.1] Q: What is "Cannot Initialize BDE: Directory controlled by a different .NET file" error? A: You have incorrect network setup. See [4.2] Q: Why are my form fields "read-only"? A: It's the data model default with certain links. See [5.1] Q: How do I print landscape consistently in NT? A: Two workarounds available. See [5.2]. Version 9 SP3 should have cured this problem Q: Where do I find ODBC drivers for Paradox tables? A: Free? Depends on which version. See [8.1] Q: How do I compile an EXE with Paradox so I can distribute my app? A: You don't. See [3.4B] Q: How do I use barcodes with Paradox? A: Input or output? See [3.3] Q: I can't install Paradox 5/7? Says something is missing. A: Your HD's too big. Partition it or temporarily "consume" some space. =================== 3 General Questions =================== -------------------- 3.1 Are there any Y2K issues with PDOXWIN? -------------------- There are no issues with the way Paradox stores DATE values. In that sense, Paradox has ALWAYS BEEN Y2K compliant (not bad for a program that's more than 10 years old!). Individual versions have some input quirks that you need to watch out for. Some of these can be controlled by the BDE, others require you to upgrade your Windows as well. Be aware that your applications are just ONE part of the Y2K puzzle. Your hardware and your operating system must be Y2K compliant as well. The 16-bit versions of Paradox (1.0, 4.5, 5.0, and 7.0/16) should be upgraded to the latest version of 16-bit BDE (2.52), available at http://www.borland.com/devsupport/bde/oldver.html The 32-bit versions of Paradox (7.0/32, 8.0, and 9.0) should be upgraded to the latest version of the 32-bit BDE (5.01) if they have not been upgraded yet; address: http://www.borland.com/devsupport/bde/ For more information on the Paradox and Y2K discussion, see appendix A: Paradox and Y2K. -------------------- 3.2 Can I convert PDOXDOS apps to PDOXWIN? -------------------- The tables will be compatible. The rest you will have to rewrite from scratch. There are NO conversion utilities available. There is an old "Object Converter" for Paradox 5 that was supposed to convert DOS Forms and Reports. However, it is generally agreed that the result looks horrendous, and it does not convert scripts. The result is really more trouble than it is worth. You should analyse your scripts for general business rules and implementation-independent techniques and then write a new program from scratch. The benefit that using Paradox for Windows brings to this process is that you can run both Windows- and DOS-based systems from the same set of tables at the same time, if you so wish, making migration an easier process. -------------------- 3.3 How do I use barcodes with Paradox? -------------------- On the input side, the "keyboard emulator" barcode scanners work with just about ANY application, DOS or Windows. These fit between your keyboard and the computer. Barcodes scanned are sent as keystrokes and the computer will not know the difference. On the output side, you can use barcode fonts (other Corel applications come with several, and there is a huge number available on the InterNet), though the exact format will depend on the symbology you choose. There are other possibilities including DLL's that generate DIBs, ActiveX objects, and so on. -------------------- 3.4 How do I use Paradox tables without Paradox? -------------------- There are two ways to take this question. A) You want to use Paradox tables in OTHER applications, probably through ODBC, and you want to know where are the ODBC drivers. Microsoft's MDAC drivers (http://www.microsoft.com/data) can handle versions 5 or lower, and they’re free. Borland’s Delphi, Visual dBase, C++Builder, and J++Builder can all use the BDE and thus access Paradox tables natively. You can purchase the ODBC drivers from Intersolv (http://www.intersolv.com) for Paradox versions 7, 8, and 9. The Intersolv ODBC drivers are included on the Corel Paradox 8 and 9 CD's. However, read the user license before you distribute them ! InterSolv driver 3.00.000 comes with WordPerfect Office 8, and is a limited-functionality version. 3.00.005 is packaged with Paradox 8; 3.11.000 with Paradox 9. Paradox 9 comes with a JDBC driver. B) You want to distribute Paradox applications without purchasing a copy of Paradox for each user. You need to purchase the "Paradox Runtime" that matches the version of Paradox you are using. The Runtime allows you to create install disks of your application as well as the "runtime" to run your apps, and it also gives you rights to distribute unlimited copies of the runtime in conjunction with your apps. -------------------- 3.5 Can I convert PDOXWIN X to PDOXWIN Y? -------------------- In general, yes. The SOURCE CODE file (fsl, rsl, lsl, and ssl) is compatible throughout the PDOXWIN versions, unless you used somefeatures that only exist in certain versions. An example is the Tabbed Notebook, which only exists in V7 or later. The DELIVERED CODE file (fdl, rdl, ldl, and sdl) however, is not compatible across versions. You will always need to find the original SOURCE CODE, and redeliver, as delivery physically removes the source code from the file. If you are making the switch from 16-bit to 32-bit, you will want to check if any of your forms call 16-bit DLLs which may no longer exist in 32-bit Windows, or have modified API calls. -------------------- 3.6 How do I play a sound in PDOXWIN? -------------------- [snipped from Corel newsletter] Use the PLAYSOUND function on WIN9X. The 32-bit counterpart to Mmsystem.dll is WINMM.DLL, and the function is PlaySound. Here is an example: Uses WINMM PlaySound(WavFileName CPTR, how CWORD, Flag CWORD) endUses methodPushButton(var eventInfo Event) playSound("C:\\yourDir\\yourFile.wav",0,0) endMethod There are several values for Flag. Some of the parameters are: 0 play synchronously 1 play asynchronously 2 silence 4 points to memory file 8 loop the sound until next 16 don't stop any currently playing sounds Put the playSound code in the open method rather than a pushButton method. This calls an external DLL, and the DLL should be loaded early instead of when needed. Note: Case matters in this code, so I'd copy, paste and alter the necessary parts. -------------------- 3.7 How do I turn off the splash screen? -------------------- Add -q (that’s "minus que") to the command-line that starts Paradox. For other command-line parameters, see [9.1] -------------------- 3.8 How do I install Paradox 5/7 when I get an error during install about a missing LIB file? -------------------- Your hard drive has more than 2 gigabytes of free space. This was not possible with older DOS and the "free space check" routine overflowed. You have to somehow decrease the free space below 2 gigs before you can install, or deceive the computer. If you are on a Novell network, there is a program called LESSPACE that can help you. Otherwise, create some large files on the HD. You can delete them later. ==================== 4 Table and BDE Questions ==================== -------------------- 4.1 The "Cannot Initialize BDE: Directory is busy" error -------------------- Usually this occurs when you are running the 16-bit version of Paradox and Paradox has crashed, and you are trying to start Paradox again. This happens because Paradox loads and initializes the BDE (Borland Database Engine). As a copy is already loaded into memory (left over from the crash), the second copy will not load. It is possible to force BDE to unload using a program called PDOXSAVE, however, it is recommended that you simply restart Windows. -------------------- 4.2 What is the "Cannot Initialize BDE: Directory controlled by a different .NET file" error? -------------------- Paradox writes *.LCK files to ensure that file access rights and locking are maintained. Each LCK file refers to a *.NET control file. Multiple LCK files can have the same NET file, but a LCK file cannot belong to multiple NET files. Each instance of Paradox uses the BDE, which reads in a configuration file when it is loaded If you have one machine where the configuration file is set to use NET file A and a second machine with it set to use NET file B, then problems will occur when Paradox instances running on these two machines attempt to use tables in the same directory. An instance of Paradox running on the first machine will write a LCK file in a directory where that instance wishes to access tables. This LCK file will refer to NET file A. An instance of Paradox running on the second machine now tries to operate in the same directory, sees the LCK file, and finds that it references NET file A. However, this second instance of Paradox is using a BDE configuration specifying NET file B, and it is at this point that you get the error. The fix is to make sure ALL Paradox users use the SAME network control directory. Paradox will create the appropriate NET file. See [7.1]'s first part on how to change BDE settings. After that's done, delete the LCK file and try again. -------------------- 4.3 Why do my tables keep getting corrupted? (Also see [7.1]) -------------------- This is usually a multi-user problem, though it can happen to single users as well. See [7.2] for some tips. -------------------- 4.4 How do I repair tables? -------------------- In general, you should keep a good backup for occasions like this. At a minimum, keep a set of empty copies of the tables you use. If you did not have a copy, you can try Tools | Utility | Table Repair. While the repair is supposed to make a backup for you, you really SHOULD make a backup of the table BEFORE you attempt the repair, just in case the repair ruins the original as well. To backup a table, you’ll need to copy ALL the files that belong to the table. Essentially, that’s <TABLENAME>.*. For example, if your table is called MYTABLE, you’ll need to copy MYTABLE.*. Missing any one of the files may render the table unusable without table repairs. The Verify option in Table Repair may not detect all errors. When in doubt, use the Rebuild option. Occasionally, not even Rebuild will fix all the errors. If the table can still be opened, consider using a query to select all the records out into a different table, then DELETE the original table, then change that "copy" (which contains all the readable records from the original) to the original’s specs. In case of SEVERE table damage, Table Repair may not be able to rebuild it. In this case, you should attempt to only retrieve the data. The indices can be added later. As explained above, the tables are composed of several files. The main data is in the <TABLE>.DB. The indices are in <TABLE>.PX, <TABLE>.XG?, and <TABLE>.YG?, where ? is a single digit number. By removing the indices, table repair should be able to repair the <TABLE>.DB itself and pull out the readable data. You can then add the indices back (easy if you kept empty copies, as suggested in the first paragraph). Another commonly-used technique is to export all your data to a delimited, separated, text file and then re-import it again into a new table. Then you have to redefine all your indices and constraints for the table. -------------------- 4.5 How do I use Paradox tables without Paradox? -------------------- See [3.4] -------------------- 4.6 Where can I find the latest BDE? -------------------- Try http://www.borland.com/devsupport/bde -------------------- 4.7 Where can I find the file structures of Paradox tables? -------------------- Inprise considers that proprietary information and has never released it. Use BDE or ODBC to access the tables. ==================== 5 Forms and Reports Questions ==================== -------------------- 5.1 Why are my form fields "read-only"? -------------------- When you build a form in Paradox for Windows and link tables together, and they end up as a one-to-one relationship, the "child" table(s) default to "read-only". Why? Because in a case like that, the "child" is essentially a lookup table. You will need to go into the "data model" screen and manually take off the read-only property by right-clicking the table and deselecting "read-only". -------------------- 5.2 How do I print landscape consistently in NT? -------------------- Printing reports in Windows NT, especially in Paradox 8, has problems because NT's printer drivers are not WIN9X compatible. There are two workarounds: 1) Try installing the same printer twice, once defaulted to Portrait and once to Landscape paper, and give them slightly different names. You should be able to select the printer to print from in ObjectPAL or interactively and switch orientation that way. 2) Assuming your report is being called from a pushbutton, add this code to the button's pushbutton() method: Var myRpt Report rptInfo reportPrintInfo prnOptions printerOptionInfo printInfo dynArray[] anyType endVar ;the name of your report goes in the following line rptInfo.name = "someRptNamef.rsl" prnOptions.orientation = printLandscape ; or printPortrait ;the next line gets your printer's current settings printerGetOptions(printInfo) ;the next line sets your printer up to print landscape printerSetOptions(prnOptions) myRpt.print(rptInfo) ;the next line restores your printer's settings printerSetOptions(printInfo) ;returns printer settings 3) With version 9, obtain SP3. Prior to this Paradox 9 had the unfortunate habit of printing its first copy in landscape, no matter what orientation was requested. -------------------- 5.3 How do I send a report via e-mail? -------------------- Currently there's no direct capability in Paradox. With Paradox 8, you can try publish the report as an HTML file, then use the MAIL object to attach that file and send it. On the other hand the output is not very good. Paradox 9 has also WPD (WordPerfect) and RTF capabilities, if the HTML output is not good enough. If that is still not good enough, you can always buy Adobe's Acrobat. Their Acrobat Distiller can be called successfully from within Paradox and files can be attached to e-mail. Another alternative is to obtain a stand-alone email program such as SPIMail (see TuCows.com) that you can manipulate using Paradox’ text output and execute commands. -------------------- 5.4 How do I get a pure ASCII report from PDOXWIN? -------------------- In general, you can't. Windows is GUI, not a text environment. You can TRY the Generic/Text driver and set the output to a file, but the output is not good and you must manually enter a file name every time. There's no way to automate that. You can "fake it" with textstream method, but it can be a tedious process. Paradox 8 and later has a WRITETOTEXT method, though the output is quite ugly. There’s just no reliable way of converting a report built in GUI mode into ASCII text. -------------------- 5.5 In Paradox 8, some fields seems to disappear in report preview, but they print just fine. Any ideas? -------------------- 1. Try turning OFF "word wrap" and "fit height" properties for those fields. 2. In File | Page Layout, specify that the page is to be designed for the screen, not the printer. 3. Move the fields in towards the left of the column they are in, if they are in the right-most column. Give them a visible box frame to show where the clipping is occurring. ==================== 6 ObjectPAL Questions ==================== -------------------- 6.1 How can I get FORMAT("cc") to work correctly? -------------------- FORMAT("cc"), which is supposed to capitalize the first letter of each word in a string, does not work properly. This is a bug of the BDE, and can affect Paradox for Windows version 8 and below. You will need to use this custom method instead: method formatCC(strInput string) string var arWords array[] string strWord string strOutput string endVar strOutput = "" ; if nothing is passed, return nothing if not strInput.isassigned() then return strOutput endif ;break into individual words strInput.breakApart(arWords) ;if no words are passed, return nothing if arWords.size() = 0 then return strOutput endif for i from 1 to arWords.size() strWord = upper(arWords[i].substr(1,1)) ;get the first letter, and make it uppercase if arWords[i].size() > 1 then ; get the remaining characters strWord = strWord + lower(arWords[i].substr(2, arWords[i].size())) endif strOutput = strOutput + strWord + " " endfor return strOutput endMethod Format("cc") works correctly in Paradox 9, as the function is now incorporated into Paradox. It remains "broken" in BDE 5.01. -------------------- 6.2 Why does SCAN seem to skip records? -------------------- You probably tried to insert or delete records inside a SCAN loop. That is a BAD idea. SCAN "caches" entries to increase speed, and if you change the record count inside the SCAN loop, you will end up skipping records or processing some records twice. For example, when deleting records, a deletion will be followed by a logical repositioning of all the records in the table, followed by a positional increment of the scan pointer to the "next" record. However, the record which was initially "next" will have moved up one in case of a deletion, and so be skipped. Use WHILE loops for these instances. Here’s an example: while True if <condition to satisfy in order to delete> then tcTableName.deleteRecord() else if not tcTableName.nextRecord() then quitLoop endif endif endWhile ==================== 7 Network and Multi-user Questions ==================== -------------------- 7.1 Why do my tables keep getting corrupted on NT server? -------------------- First, check your BDE setup. Using the BDE Config utility, set up the following: Configuration | System | Init | Local Share = TRUE Make sure all workstations accessing the database are using the same netfile, as follows: 1. Using mapped drive letters, make the Configuration | Drivers | Native | Paradox NET DIR setting: DriveLetter:\Path 2. A better alternative, using UNC, is: \\SomeMachine\DriveLetter\Path All machines should have this pointing to exactly the same directory. In the first instance, the Path MUST be identical in every case. The drive letter may vary in order to accommodate differences in mapping because of hardware differences between machines. Save the BDE file. NT Server has a "lazy write" (or "opportunistic write") option that seems to conflict with Paradox more often than not. You will need to turn this feature off with regedit. Warning - Incorrect use of REGEDIT can stop your system from starting up, or cause other problems. Advanced users only! Find the following key: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\ LanmanWorkstation\Parameters Change the UseOpportunisticLocking section from a 1 to a 0. If you don't see this key, add it. You should then restart your system for the change to take effect. -------------------- 7.2 Why do my tables get corrupted on Win9X machines? -------------------- First, check your BDE setup. Using the BDE Config utility, set up the following: Configuration | System | Init | Local Share = TRUE Make sure all workstations accessing the database are using the same netfile, as follows: 1. Using mapped drive letters, make the Configuration | Drivers | Native | Paradox NET DIR setting: DriveLetter:\Path 2. A better alternative, using UNC, is: \\SomeMachine\DriveLetter\Path All machines should have this pointing to exactly the same directory. In the first instance, the Path MUST be identical in every case. The drive letter may vary in order to accommodate differences in mapping because of hardware differences between machines. Save the BDE file. Next, Control Panel | System | Performance | Advanced Settings | File System | Troubleshooting. Turn on "Disable new file sharing and locking semantics" and turn on "Disable write-behind caching for all drives" You will now be asked to restart your system. Do so. ==================== 8 Query and Misc. Questions ==================== -------------------- 8.1 What ODBC drivers are available for Paradox? -------------------- Microsoft's MDAC (http://www.microsoft.com/data) can handle table versions up to and including 5.0. For higher versions of Paradox (7, 8, and 9) you will need to get ODBC drivers from Intersolv (http://www.intersolv.com). If you own Corel Paradox 8 and 9, it should be on your Paradox CD. In either case, you can perform a custom installation of Paradox, installing only the BDE and ODBC options, to install Paradox ODBC onto a machine. -------------------- 8.2 Can I use ObjectPAL functions in QBE queries? -------------------- Unfortunately, the answer is no. ObjectPAL functions are not supported in queries. Most are supported in CALCULATED FIELDS in forms and reports though. If you need SUBSTR, consider using SUBSTRING with a SQL query instead of a QBE query. See LOCALSQL.HLP file in your IDAPI directory for more details. SQL also supports some date functions. ==================== 9 Troubleshooting ==================== -------------------- 9.1 Command line parameters -------------------- Command-line parameters vary from version to version, but most of the options have stayed the same. This is a list from version 9's help file. Multiple parameters can be combined. -b Prevents multiple instances of Paradox from being loaded. If Paradox is already running, the Paradox window is brought to the front. If you try to load Paradox more than once without changing the private directory, an error message tells you that the BDE could not be initialized. This parameter is included in the base shortcut for Paradox 9. -c Starts Paradox with a clear desktop. -d Filename Specifies an alternate PDOXWORK.INI, which contains folder definitions for use with the Project Viewer. By default, Paradox does not use a .INI file to store settings, but you can create a file named PDOXWORK.INI in your working directory, and Paradox will read settings from it automatically. -e Prevents writes to the system registry. -f Forces writes to the system registry. -i Filename Specifies an alternate PDOXWIN.INI file, which contains desktop settings. By default, Paradox does not use a .INI file to store settings, but you can create a file named PDOXWIN.INI and Paradox will read settings from it automatically. -m Loads Paradox as a minimized application. This is useful if you want to load Paradox but not work with it immediately, or if you wish to show a login screen before the rest of the application. -n Prevents saving work and private directories on exit. -o Filename Alternate BDE configuration file. (All BDE-based applications one a machine must use the same BDE configuration file when running concurrently. All BDE applications running concurrently on a network should use the same NET directory.) -p Directory Start with a different Private directory than the one set in the system registry (32-bit Paradox) or PdoxWin.ini file (16-bit Paradox). Paradox stores its temporary tables in the directory you indicate with this parameter. Each Paradox instance must have its own Private directory; however, multiple Paradox instances can run concurrently on one machine. If no directory is specified at all, a default directory in the Paradox Samples area is selected. If you do not indicate a full directory path (one with a drive letter), Paradox looks for the new directory with respect to the Paradox system directory. -q Suppresses the Paradox splash screen while it is loading. -s Prevents resizing of the Paradox window. -t Allows resizing of the Paradox window. -w Directory Starts Paradox with the specified working directory instead of the one saved in the system registry (32-bit Paradox) or PdoxWin.ini file (16-bit Paradox). If no directory is specified at all, a default directory in the Paradox Samples area is selected. -y Forces saving work and private directories on exit. StartFile Opens the specified document and performs its default action. Paradox looks in the current working directory (see "-w" above) for the specified file unless you include the full directory reference to that file. You can tell Paradox to open a file when starting (for example, a form or report) by typing the name of the file, along with any necessary directory information. This does not require a special option, but does require the file extension. After loading, Paradox opens the file and performs its default action. For example, Tables are displayed in a table window, forms are displayed in a Form window, scripts are run, and so on. ----END---- ======================== Appendix A: Y2K and Paradox ======================== How will Paradox react to the year 2000? Will it still work? The short answer is, Yes. All versions of Paradox for Windows and Paradox for DOS are Y2K compliant in the sense that they store dates with all digits of the year. HOWEVER, your application may NOT be Y2K compliant. It is possible to write applications that will not function properly in the 21st Century. For those just arriving, here's the scoop on what Y2K compliance means. There are a number of issues, most of them nothing to do with Paradox <g>. When business computer systems were first written, dates were stored not as four digits (1999), but as two (99). This was for a number of reasons: it saved space on primitive computers where saving two bytes per record was a saving worth making; but also, because the end of the century was a long way away. What this means is that ambiguity exists as to whether a date is a 20th or 21st century date. So, the problems to be addressed for Y2K compliance are: Hardware Operating System Application System (Paradox and BDE, the Borland Database Engine, in this case) Application First - your computer (hardware) must be Y2K compliant. Here's a simple test - but first a warning: Some computers have been known to crash and burn when their clocks roll over at midnight on the evening of December 31st 1999 with major, unrecoverable hard disk errors. Backup your system first before trying this. We take no responsibility for any damage done to your system trying this test. Having said that, you might as well find out now, rather than ruin your New Year<g>. To test this, set the date to December 31st, 1999, and set the time to 11:59pm. Watch what happens. If your computer, after midnight, rolls over to Jan 1st 2000, then your computer probably is okay. Now try restarting the computer. If your computer still shows the date to be 1/1/2000, that's a good sign. More strenuous tests exist, and if you are in any doubt, you should consult an expert in the field. Next, your operating system. Microsoft insists that Win95, Win98, and WinNT4 are compliant. But see the Microsoft site http://www.microsoft.com for details. Next, your application system. As has been stated, all versions of Paradox store years as four digits (strictly speaking, Paradox stores dates as type LongInt, a long integer, assigning every day since the year dot a unique number, and then converts this number into a [corresponding, user readable] date). But that's only half the story. Paradox's database functions are driven by the Borland Database Engine. All versions of BDE are compliant. With caveats (see below). But here's the catch. Your application itself may NOT be compliant. There are a number of possible reasons for this. Here are three examples which apply mainly to Windows versions of Paradox: 1/ The BDE does not FORCE you to enter four digit years. It lets you enter two digit years. What happens to a two-digit year? How does the BDE interpret a year entered as two digits? There's the rub. It varies. One set of assumptions used is that if you enter a number from 0-50, the year is assumed to be in the 21st Century. From 51-99, the year is assumed to be in the 20th Century. These may be valid assumptions for your application - they may not be. The point is that you shouldn't ever allow the system to make assumptions about dates. With PdoxDOS, however, a two-digit year is always assumed to be in the 20th Century. This will STILL be true in the 21st Century. If you can enter a two-digit date into any of your fields, your system MAY not behave as you expect it to in the year 2000. Then again, it might. To help get rid of these assumptions (in PdoxWin) set the FOURDIGITYEAR setting in the BDE setup to TRUE. This forces dates to display as four digits (1999) instead of two digits (99). You can still enter them as two, but at least then you can see if things are going wrong. So much for data entry. But things can go wrong behind the scenes, and this is where the trouble really starts. 2/ Your system may have fields that appear to be dates, but are in fact (for example) alphanumeric. This would mean that your system may store 5th of May 1999 as a string "05/05/99", for example. You may not even be able to see it in your forms, as the form may adjust it to read "05/05/1999". Clearly, here is Y2K ambiguity. It may be simple to fix (convert the field to type date, which in itself may be a mission), or it may be impossible without an entire rewrite. Why? Because a programmer who casts a date as type string in a table will assume in all code that the field in question is a string. Consequently, to get the year from a date, the string will be parsed for just the seventh and eighth characters (the "9" and the "9", in "05/05/99"). This will not work properly if the field is converted to type date. This is a classic Y2K situation. 3/ Some versions of BDE (prior to v5.01) will choke when running a query which uses a two digit year. This will only show up after your system date rolls over to 1/1/2000. Obviously, you can do something about this with interactive queries (just use four digits), but your application may be running two digit year queries behind the scene. You can upgrade BDE to5.01, of course, and the crashes will cease. But then you're back in the situation of letting the BDE make decisions about what century the date is referring to. Maybe it'll still work. Maybe it won't. So, while Paradox is compliant, your application might not be. It's a very difficult question to answer without seeing a lot of code. --end of Paradox for Windows FAQ-- Paradox Community Newsgroups |
![]() Feedback | Paradox Day | Who Uses Paradox | I Use Paradox | Downloads ![]() |
|
![]() The information provided on this Web site is not in any way sponsored or endorsed by Corel Corporation. Paradox is a registered trademark of Corel Corporation. ![]() |
|
![]() Modified: 15 May 2003 Terms of Use / Legal Disclaimer ![]() |
![]() Copyright © 2001- 2003 Paradox Community. All rights reserved. Company and product names are trademarks or registered trademarks of their respective companies. Authors hold the copyrights to their own works. Please contact the author of any article for details. ![]() |
![]() |
|