Fequently Asked Questions and Answers: ====================================== Q: When I try to install the components, I get an error message stating that "a required library file does not exist". Why? A: The most common cause of this error is that you have not installed the C4DLL.DLL correctly in the Windows\System directory, Although you may deploy your application with this file in only your application's directory, you must develop with this DLL file in your Windows/System directory. See the CodeBase "Getting Started" manual for details. Q: When I attempt to compile my application, I get an error claiming that a particular DCU file could not be found. Why? A: Most likely, you have not included the \CBComps4\Lib\Delphix or \CBComps4\Lib\CBuildx directory into you Library Search Path on the Environment Options page in your IDE. Please see the "Installation" section of the "Getting Started" chapter of the manual. Q: When should I use the CBTableSet component, and when should I use the CBQuerySet or CBDynaSet components? A: The CBTableSet component is mostly used to implement the user interface portion of your application. This would include routines to search, add and edit records. The CBQuerySet and CBDynaSet components are best used for querying data that have already been entered, For example, the generation of reports is best done with the CBDynaSet component. Q: How can I create a Master/Detail relationship with the CB Components? A: You may use the "AfterScroll" event handler of the master table to set up a relationship to your detail tables. For example, you might wish to set the scope of a detail table so that only records related to the master table would be visible. Every time the master table's record pointer moved, an AfterScroll event would be fired, re-setting the scope of the detail table, An example of such an application is available for download from my web-site at www.softsand.com. This file is called MastDet.ZIP and can be found on the "Downloads" page. Q: How can I use filtering in the CBTableSet? A: To set up a filter in the CBTableSet component, you should place an xBASE expression that evaluates to a boolean result in the "Filter" property of the component. Set the "Filtered" property to true, and issue a "First" or "GoTop". Q: How are errors handled in CB Components IV? A: Errors are handled with the use of exceptions. When an error is detected, an exception is raised that is derived from the ECBError class. Along with the error object is a message indicating the nature of the error. This message may be displayed in a message box or handled another way. If no explicit error handlers are found, your compiler's default error handler will handle the exception. This is the same process used by the other VCL components. Q: If my company has more than one developer working with the CB Components, does every developer need to license the product? A: No. The standard license covers a site license for your company. If, however, your other developers are sub-contractors that work off-site, or could be working on projects for other companies with the CB Components, each of them should license a separate copy. Q: I am using C++ Builder and get an error claiming that it cannot find the header files associated with the components. Why? A: Most likely, you forgot to include the library directory in your "include path" in the project options. Unlike the library search path, the include file search path must be added for each project in the Directories/Conditionals page of the Project|Options dialog. Q: What are the limitations if I wish to use InfoPower with these components? A: The InfoPower dialogs that perform searches or set filters will not work properly due to the expression-based nature of CodeBase indexes and filters. (There was, in the past, an issue of design-time data access, however, this issue has been resolved beginning with version 2.53). Q: I am using C++ Builder and when I attempt to run my projects, I get an "Access Violation in VCLxx.BPL", or a "Class not found" error. Why? A: This component package is designed to become part of your resulting EXE, not requiring any run-time package distribution. The most likely cause of this error is that you have "Build with run-time packages" checked in the Projects|Options|Packages dialog. If you de-select this option, and rebuild your application, this error should go away. Q: My application works properly, however, I would like to improve its speed. What can I do? A: There is a file called "Optimize.txt" that contains several tips on optimizing your code for speed. This file may be downloaded from my web-site at www.softsand.com, or may have been included in your component installation directory. Q: I am using an index tag with the "Unique" attribute set to TRUE. This works fine until I try to re-add a record that has previously been deleted. Then, I get a "Unique Key Violation" error. How can I prevent this error from occuring when adding previously deleted keys to the index? A: Make sure that when you create the index tag that you include a ".NOT. DELETED()" clause in the "Filter" attribute of the index tag. This will make sure that deleted records do not show up when CodeBase determines whether a new record key is "Unique". Q: I am experiencing file and record locking errors when using Large File Support under Windows 9x. What is going on? A: The Windows 9x locking code (internal to the operating system) simply does not support large file support. You must either make sure the target machine is running Win 2000 or Win XP, turn "Large File Support" off, or open your files exclusively. -- More to Come --