A DataStore is a nonvisual DataWindow control. DataStores act just like DataWindow controls except that they do not have many of the visual characteristics associated with DataWindow controls. Like a DataWindow control, a DataStore has a DataWindow object associated with it.
DataStores are useful when you need to access data but do not need the visual presentation of a DataWindow control. DataStores allow you to:
Perform background processing against the database without having to hide DataWindow controls in a window
Suppose that the DataWindow object displayed in a DataWindow control is suitable for online display but not for saving to a file. In this case, you could define a second DataWindow object for saving that has the same result set description and assign this object to a DataStore. You could then share data between the DataStore and the DataWindow control. Whenever the user asked to save the data in the window, you could save the contents of the DataStore.
Hold data used to show multiple views of the same information
When a window shows multiple views of the same information, you can use a DataStore to hold the result set. By sharing data between a DataStore and one or more DataWindow controls, you can provide different views of the same information without retrieving the data more than once.
Manipulate table rows without using embedded SQL statements
In places where an application calls for row manipulation without the need for display, you can use DataStores instead of embedded SQL statements to handle the database processing. DataStores typically perform faster at runtime than embedded SQL statements. Also, because the SQL is stored with the DataWindow object when you use a DataStore, you can easily reuse the SQL.
Most of the methods and events available for DataWindows are also available for DataStores. However, some of the methods that handle online interaction with the user are not available. For example, DataStores support the Retrieve, Update, InsertRow, and DeleteRow methods, but not GetClickedRow and SetRowFocusIndicator.
When you are working with DataStores, you cannot prompt the user for more information by using functionality that causes a dialog box to display. Here are some examples of ways to manage information entry with DataStores:
SetSort and SetFilter You can use the SetSort and SetFilter methods to specify sort and filter criteria for a DataStore object, just as you would with a DataWindow control. However, when you are working with a DataWindow control, if you pass a null value to either SetSort or SetFilter, the DataWindow prompts the user to enter information.
When you are working with a DataStore, you must supply a valid value with the method call. You must also supply a valid value when you share data between a DataStore and a DataWindow control; you can pass a null value to the DataWindow control, but not the DataStore.
Prompt for Criteria You can define your DataWindow objects so that the user is prompted for retrieval criteria before the DataWindow retrieves data. This feature works with DataWindow controls only. It is not supported with DataStores.
SaveAs If you are working with a DataStore, you must supply the filename argument when you use the SaveAs method. With a DataWindow object, you can pass an empty string for the filename argument so that the user is prompted for a file name to save to.
Prompt for Printing For DataWindow controls, you can specify that a print setup dialog box display at execution time, either by checking the Prompt Before Printing check box on the DataWindow object’s Print Specifications property page, or by setting the DataWindow object’s Print.Prompt property in a script. This is not supported with DataStores.
Retrieval arguments If you call the Retrieve method for a DataWindow control that has a DataWindow object that expects an argument, but do not specify the argument in the method call, the DataWindow prompts the user for a retrieval argument. This behavior is not supported with DataStores.
Many of the methods and events that pertain to the visual presentation of the data in a DataWindow do not apply to DataStores. However, because you can print the contents of a DataStore and also import data into a DataStore, DataStores have some visually oriented events and methods. For example, DataStores support the SetBorderStyle and SetSeriesStyle methods so that you can control the presentation of the data at print time. Similarly, DataStores support the ItemError event, because data imported from a string or file that does not pass the validation rules for a column triggers this event.
For a complete list of the methods and events for the DataStore object and information about each method, see the DataWindow Reference in the online Help.
Unlike DataWindow controls, DataStores do not require any visual overhead in a window. Using a DataStore is therefore more efficient than hiding a DataWindow control in a window.