SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Data Report Designer allows you to create reports. The reports generated through Data Report Designer take data from
data sources such as Data Environment. Using Data Report Designer you can do the following:

     Export report to HTML file or text file
     Create report with groups and aggregates
     Create a hierarchical report


Components of Data Report Designer
The following are the various parts of Data Report Designer.

DataReport object
This is like a Visual Basic form. It contains the visible designer and code. Code is used to control report at runtime by
responding to the events generated by the data report. Visible designer allows you to design the layout of the report.

Sections Collection
This is a collection of section objects. A section object represents a section of the report. You can use section objects at
runtime to reconfigure the section. At design time each section is represented by a header, which is used to select the
section.

Data Report Controls
Data report can contain only a set of special controls. When you are in Data Report Designer, a different toolbox is
displayed with controls that are specific to Data Report.

Note: You cannot use Visual Basic's intrinsic controls, or any ActiveX controls, on the Data Report designer.


Sections of the Data Report Designer
The following are the sections in Data Report Designer. Each section contains a set of values to be displayed.

 Section               Description
 Report Header         Contains the text that appears at the very beginning of a report, such as
                       the report title, author name, or database name. If you want the Report
                       Header to be the first page in the report, set its ForcePageBreak property
                       to rptPageBreakAfter.
 Page Header           Contains information that goes at the top of each printed page, such as
                       the report's title.
 Group                 Contains a repeating section of the data report. Each group header is
 Header/Footer         matched with a group footer. The header and footer pair is associated
                       with a single Command object in the Data Environment designer.
 Detail                Contains the innermost repeating part (the records) of the report. The
                       detail section is associated with the lowest-level Command object in a
                       Data Environment hierarchy.
 Page Footer           Contains the information that goes at the bottom of each printed page,
                       such as the page number.
 Report Footer         Contains the text that appears at the very end of the report, such as
                       summary information, or an address or contact name. The Report Footer
                       appears between the last Page Header and Page Footer

Creating a Simple Report
Now, let us create a sample report to understand the steps involved in creating a simple report. For any report that is
generated using Data Report Designer, you have a few important steps.


    Add Data Report Designer to project
    Establish a connection to database and create a command using Data Environment designer.
    Change DataSource and DataMember properties of Data Report object.
    Place fields on the Data Report Designer in the required sections.
    Invoking the report using Show method.
The following steps illustrate how to create a simple report using Data Report Designer and Data Environment.


The report displays the list of products from Products table of Products.mdb.

1. Start a new project by selecting File menu and New Project option.
2. Select Data Project in New Project dialog box.
3. Visual Basic creates a new project with a form, Data Environment and Data Report. As shown in figure 21.1
4. Invoke Data Environment Designer and select Connection object.
5. Click on right button and invoke Properties of the Connection object.
6. Select Microsoft Jet 3.51 OLE DB Provider as the provider.
7. Select Connection tab and select “D:VBBOOKPRODUCTS.MDB” as the database. Please note that in your system
   the path may be different. So choose whichever path is appropriate to your system.
8. Rename Connection object to cnnProducts.
9. Select popup menu of cnnProducts and select Add Command to add a command object.
    A Command object with the name command1 will be created.
10. Select properties of command object and change the following properties.
Command Name                     comProducts

Database Object                  Table

Object Name                      Products




Figure 21.1: Data Project's project explorer.

Placing fields on Data Report Designer
After command object is created, place the fields in the command object on Data Report Designer. The following are
the required steps to do that:



1. Open Data Report Designer by double clicking on DataReport1 in Project Explorer.




                                                            2
2. Invoke properties window using F4 when you are in Report Designer
3. Change the following properties of Data Report Designer.
    DataSource                   DataEnvironment1

    DataMember                   comProducts

4. Arrange Data Report Designer and Data Environment Designer in such a way that you can see both of them. See
   figure 21.2.
5. Drag fields from comProducts command object into Detail section Data Report Designer.
    Or Drag comProducts command object from Data Environment into Detail section of Data Report Designer.
1. In Data Environment Designer, select Data Environment object.
2. Click on right button and select Option menu from popup menu.
3. Select Field Mapping tab in Options dialog, then uncheck Drag and Drop Field Captions.



Arranging fields in Data Report Designer
1. If field headings are also placed in Data Report Designer then we have to move them to Page Header section.
2. If field headings are not copied then create labels in Page Header section using RptLabel control.
3. When you are dealing with Data Report Designer you get DataReport toolbox. RptLabel is a control available in
   DataReport toolbox.
4. Whether you got labels (headings) automatically or you manually added, change the caption property of each label
   as follows.
 Field       Heading
 Prodno      Product Number
 Prodesc     Product Description
 Qoh         Quantity On Hand
 Rpu         Rate Per Unit
 Ptype       Product Type



5. Select all labels and change Font Name to Arial, Bold to True, and Size to 10.
6. Change Alignment property of all heading labels to 2-rptJustifyCenter.
7. Increase the Height of all the labels to 450 units. This is done to ensure that the heading will wrap to next line if it
   cannot be accommodated in one line.
8. Reduce the size of Detail section to eliminate extra space below fields.
9. Change Alignment property of QOH and RPU fields to 1-rptJustifyRight.
10. Change Alignment property of PRODNO and PTYPE to 2-rptJustifyCenter.


Running the Report
To invoke report you can make either the report the startup object or you can invoke report using Show method of the
data report object.
Making report the startup object will be easier while you are designing report. But final reports are always invoked
either by user selecting an option in menu or by clicking on a command button.

Let us see how to invoke report using a command button. As you have seen, when you selected Data Project, Visual
Basic has created a Form, Data Environment, and Data Report. So invoke Form designer and place a command button.
Change the following properties of command button.

Name            cmdProductlist

Caption         &Products List

And write code to invoke report in click event of the command button.

Private Sub cmdproductlist_Click()
  DataReport1.Show
End Sub
Listing 21.1: Code to invoke data report.




Figure 21.2: Placing fields from data environment to data report object.

Note: You can also make DataReport the Start up object of the project to start project with Data Report.

1. Run the project using F5.
2. When form is displayed, click on command button to invoke report.




3. At runtime the report should look like figure 21.3.




                                                           4
Figure 21.3: Data Report at runtime.




Improving Appearance of the report
The report shown in figure 21.3 is O.K but not good. We can modify the report to make it more readable. Also observe,
it wastes a lot of space at the top and on the left. So let us see how to modify the report.



1. Invoke Properties window from Data Report Designer and select properties for DataReport1.
2. Change the following properties.
    Left Margin                  100

    Right Margin                 100

    Top Margin                   100

    Bottom Margin                100


3. Place a line control at the bottom of the headings to separate heading from details.
4. Change BorderStyle property to 1- vbFixedSingle.


Adding Report Title and Report Footer
A report can contain a title, which is printed at the top of the report and a report footer, which is printed at the bottom
of the report.

To add report title and report footer sections to Data Report Designer:



1. Click right button of mouse on Data Report Designer.
2. Check Show Report Header/Footer option on popup menu.
3. Data Report Designer adds two more sections – Report Header and Report Footer.



To add a title to the report:



1. Select Report Header section and place a label control in it.
2. Change the Caption of the label to “Products List”
3. Change Font related properties to increase the size of the title.



To add current date and page number:



1. Select Report Header section and click on right button.
2. From popup menu select Insert controls -> Current Date(long format)
   A label is placed with Caption property set to %D (which stands for date long format).
3. Place a label on the left of it and change it’s Caption property to “Date:”
4. Click right button on the data report again and select Insert Controls -> Current Page Number.
    Another label is placed with caption %p (which means current page number). You can also select Total Number of
    Pages; which means a label with caption %P (capital P).
5. Place a label on the left and change caption to “Page:”
6. Change Font Bold setting of “Date:” and “Page:” labels to True.

Arrange all labels and fields in a neat format and then run the report (click on Products List command button). Your
report should look like the one shown in figure 21.4.




Figure 21.4: Data Report after formatting.



Introduction to data reports

Reports are important and useful in many respects because they provide useful and meaningful information concerning a
set of data. In this chapter, we will show you how to create a report in Visual Basic 6.

In previous versions of Visual Basic 6, there is no primary reporting . Previous versions of Visual basic 6 uses Crystal
Reports tool, a software from Seagate. Fortunately, Microsoft has integrated a good report writer into Visual Basic 6, so
you no longer need to use Crystal Report.

Steps in building your report in Visual Basic 6
Visual Basic 6 provides you with a data report designer to create your report, it is somewhat similar to data report
designer in Microsoft Access. The data report designer has its own set of controls which allow you to customize your
report seamlessly. The steps in creating the report in VB6 are listed below:

Step 1: Adding Data Report

Start Visual Basic as a Standard EXE project. From the Projectmenu in the VBE, select Add Data Report in the
dropdown menu. Now, you will be presented with the data report environment, as shown in Figure 40.1. The data report
environment contains 6 controls, they are RptTextBox, RptLine, RptFunction, RptLabel, RptImage and RptShape.

You can customize your report here by adding a title to the page header using the report label RptLabel. Simply drag
and draw the RptLabel control on the data report designer window and use the Caption property to change the text that
should be displayed. You can also add graphics to the report using the RptImage control.




                                                             6
Figure 40.1: The Data Report Environment

Step 2: Connecting the report to database using Data Environment Designer

Click the Project menu, then select Data Environment. from the drop-down menu. The default data environment will
appear, as shown in figure 40.2




Figure 40.2: Data Environment

Now, to connect to the database, right-click connection1 and select Microsoft Jet 3.51 OLE DB Provider (as we are
using MS Access database) from the Data Link Properties dialog (as shown in Figure 40.3), then click next.
Figure 40.3

Now, you need to connect to the database by selecting a database file from your hard disk. For demonstration purpose,
we will use the database BIBLIO.MDB that comes with Visual Basic, as shown in Figure 40.4. The path to this database
file is C:Program FilesMicrosoft Visual StudioVB98BIBLIO.MDB. This path varies from computers to computers,
depending on where you install the file. After selecting the file, you need to test the connection by clicking the Test
Connection button at the right bottom of the Data Link Properties dialog. If the connection is successful, a message that
says 'Test Connection Succeeded' will appear. Click the OK button on the message box to return to the data
environment. Now you can rename connection1 to any name you like by right-clicking it. For example, you can change it
to MyConnection. You may also change the name of DataEnvironment1 to MyDataEnvironment using the Properties
window.




                                                           8
Figure 40.4

Step 3: Retrieving Information from the Database

In order to use the database in your report, you need to create query to retrieve the information from the database. Here ,
we will use SQL command to create the query. First of all, right click on MyConnection to add a command to the data
environment. The default command is Command1, you can rename it as MyCommand, as shown in Figure 40.5.
Figure 40.5: MyCommand

In order to use SQL command, right-click MyCommand and you can see its properties dialog. At the General tab, select
SQL statement and key in the following SQL statement:

SELECT                                                    Au_ID,                                                  Author
FROM Authors ORDER BY Author

This command is to select all the fields from the Authors table in the Biblio.Mdb database. The command ORDER BY
Author is to arrange the list in ascending order according to the Authors' Names.

Now, you need to customize a few properties of your data report so that it can connect to the database. The first property
to set is the DataSource, set it to MyDataEnvironment. Next, you need to set the DataMember property to
MyCommand,as shown in Figure 40.6




Figure 40.6: Properties of

To add data to your report, you need to drag the fields from MyCommand in MyDataEnvironment into MyDataReport, as
shown in Figure 40.7.Visual Basic 6 will automatically draw a RptTextBox, along with a RptLabel control for each field on
the report. You can customize the look of the labels as well as the TextBoxes from the properties window of
MyDataReport.




Figure 40.7

The Final step is to set MydataReport as the Startup form from the Project menu, then run the program. You will see your
report as shown in Figure 40.8. You can print out your report.




                                                           10
Figure 40.8: The Final Report.


Creating VB database applications using ADO control
we have learned how to build VB database applications using data control. However, data control is not a
very flexible tool as it could only work with limited kinds of data and must work strictly in the Visual
Basic environment.

 To overcome these limitations, we can use a much more powerful data control in Visual Basic, known
as ADO control. ADO stands for ActiveX data objects. As ADO is ActiveX-based, it can work in different
platforms (different computer systems) and different programming languages. Besides, it can access
many different kinds of data such as data displayed in the Internet browsers, email text and even
graphics other than the usual relational and non relational database information.

To be able to use ADO data control, you need to insert it into the toolbox. To do this, simply press Ctrl+T
to open the components dialog box and select Microsoft ActiveX Data Control 6. After this, you can
proceed to build your ADO-based VB database applications.


Data Environment
 Data Environment, which was introduced in Visual Basic 6.0, how to use DataCombo, which is a data-bound ActiveX
control, and how to use DataGrid, which is also a data-bound ActiveX control.

Let us understand each of them first. Then we will develop a data-entry screen using all these three.

Data Environment
Data Environment object is created and managed using Data Environment designer. A Data Environment object can
accomplish any of the following tasks.

    Can contain connection and command objects
    Can establish relationship between command object to represent hierarchies
Can group data and get aggregates
    Allows fields to be dragged and dropped on to a Data Report, for report, and a Form for data entry screen
    Can work as source for Databound control such as DataCombo controls and Hierarchical Flexgrid control.
In order to work with Data Environment object, you have to add Data Environment Designer to your project. Data
Environment Designer allows programmer to accomplish any of the tasks mentioned above. Data Environment
Designer is invoked when you double click on Data Environment object in Project Explorer.



To add Data Environment object to the project:



1. Select Project-> Add Data Environment. If Add Data Environment option is not found then select More ActiveX
   Designers and then select Data Environment.

Note: Visual Basic adds Data Environment Designer to your project and also creates a connection object.(See figure
20.1)




Figure 20.1: Data Environment Designer

Working with Connection Object
Whenever you create a Data Environment object a Connection object is added to Data Environment object. But that
Connection object is not connected to any database. So first we have to establish a connection with the Connection
object. Now, let us see how to connect to database through Connection object.

To connect to Biblio.mdb using connection object:

1. Select Connection object (Connection1) and click on right button.
2. From popup menu select Properties option
    Data Environment designer displays Data Link properties dialog.
3. Select the required OLEDB provider (Microsoft Jet 3.51 OLE DB Provider)
4. Select Connection tab and select the name of the database ( BIBLIO.MDB)
5. Click on Ok
To rename connection object:




                                                          12
1. Invoke popup menu by click on Connection object with right button.
2. Select Rename option.
3. Enter new name and press enter key to confirm it.



Creating Command Object
After connection is established using Connection object, now we have to create a command object to access the data of
the database. A connection object can contain any number of command objects. In fact, a command object can contain
another command object, which is called as child command object.

To create command object to get data from Authors table:


1. Invoke popup menu of Connection object and select Add Command option
    Data Environment Designer creates a command object with name Command1.
2. Invoke Popup menu of command object by clicking on right button and select Properties option.
    Properties dialog is displayed (see figure 20.2)
3. Change the Name of the command object to Authors
4. Select Table as Database Object
5. Invoke the list of tables by clicking on down arrow of Object Name drop down and select Authors as the name of
   the table.
6. For the time being, ignore remaining tabs and click on OK.




                                                                A command object is created with the default name
                                                                (command1). If you expand the command object by
                                                                clicking on + sign, you get the columns of AUTHORS
                                                                table. (See figure 20.3).




Figure 20.2 : Properties of Command object.



Figure 20.3: Data Environment designer after a command object is created.


To create master-detail relationship:
One of the interesting features of Data Environment object is, it allows you to create hierarchy of objects.



To understand how to create hierarchy of command objects, let us create two command objects. One for Publishers
table and another for Titles table.



Publishers command object becomes parent command and Titles command object becomes child command object.
These hierarchies can be used straightaway in Hierarchical FlexGrid control and Data Report object.



To create command object for Publishers:



1. Select connection object, Biblio, and click on right button to invoke popup menu and select Add Command option
   of popup menu.
2. After a command object is created invoke its properties by selecting Properties option from Popup menu.
3. Change Name of the command object to Publishers
4. Choose Table as the Database Object and select Publishers as the name of the object.
5. Click on Ok.


To create child command object for Titles:



1. Select Publishers command object and invoke popup menu.
2. Select Add Child Command option.
3. A new command object is created and placed along with fields of Publishers command object.
4. Select Child command object and invoke its properties
5. Change name to Titles.
6. Choose Table as Database Object and Titles as the name of the database object.
7. Click on Relation tab (see figure 20.4) to set relationship between Publishers and Titles command object.
8. Make sure Parent Fields and Child Fields are set to PubID and click on Add button to establish relationship
   between Publishers and Titles based on PubId field.
9. Click on Ok.

After child object is created, Data Environment Designer has three command objects – Authors, Publishers, and Titles.
Where Authors and Publishers are at the same level (Parent objects), Titles is a child command object of Publishers
command object. When you expand all command objects, Data Environment Designer should look like figure 20.5.




                                                            14
Figure 20.4: Relation tab of command properties
dialog.




Figure 20.5: Data Environment Designer after three
command objects are added.
Data Combo and Data List controls
DataCombo and DataList controls are used to present a list of values to users from which user can select one. The list of
values to be displayed to user will come from one recordset and the selected value goes into another recordset.



Note: Whenever I refer to DataCombo, it also refers to DataList, unless the difference is explicitly specified.


As DataCombo is an ActiveX control, it is to be loaded into its project explicitly. And DataCombo is based on OLEDB
interface. So it can be used with either Data Environment or ActiveX data control, because they are also based on OLEDB
(use ADO).



To load Data List controls:



1. Select Project->Components
2. Visual Basic displays a list of available ActiveX controls.
3. Turn on check box on the left of Microsoft DataList Controls 6.0 (OLEDB)
4. Click on OK.

Two ActiveX controls are loaded into project – DataList and DataCombo.


Note: You also have Microsoft Data Bound List Controls 6.0 ActiveX control. It contains DBList and DBCombo, which
work with Data Control and not with OLEDB. If you are developing a project with only DAOs or RDOs, then you can use
these controls.


The following are the important properties that are specific to Data List controls (Data Combo and Data List).




 Property              Meaning

 BoundColumn           Contains the name of the source field in the Recordset object that is used to
                       supply a data value to another Recordset to which control is bound.
 ListField             Returns or sets the name of the field in the Recordset object, specified by
                       the RowSource property, used to fill the DataCombo or DataList control's
                       list portion.
 RowSource             Sets a value that specifies the source from which the control’s list is filled.
                       The source is either an ActiveX Data control or Data Environment.
 RowMember             Returns or sets the data member to be used to display list text. Used when
                       RowSource is a Data Environment.



                                                                 16
DataGrid Control
Allows you to display and manipulate a set of records and columns taken from the specified recordset. You can specify
whether you want to allow user to modify displayed data, add new records, and delete existing records.



The following are a few features supported by DataGrid control.



It supports the following features:



    Each cell contains a value. The value of the cell can be edited interactively by user or programmatically.
    Provides Columns collection using which you can access columns of the grid. When you select a column ColIndex
    property is set to enable you to access the columns selected by the user.
    Data in the current row can be accessed through Bookmark property, which provides access to underlying recordset
    object’s record.
    Each column can have its own display attributes
    The DataGrid control functions similarly to the DBGrid (which is based on DAO & RDO) control except that it doesn't
    support an unbound mode.



The following are the important methods, properties and events of DataGrid control.


Methods of DataGrid control
The following are the methods that are specific to DataGrid.



 Method              Meaning

 CaptureImage        Returns a captured image of the grid's display in its current state.
 ClearFields         Clears all fields and restores grid to two columns and two rows.
 ClearselCols        Deselects all the columns that are currently selected.
 HoldFields          Sets the current column/field layout as the customized layout.
 ColContaining       Returns the ColIndex value of the DataGrid control column containing the
                     specified coordinate (X) value.
 GetBookmark         Takes a relative row and returns the bookmark of the relative row. If
                     GetBookmark 1 is given then the bookmark of next row of the current row
                     is given.




                                                               17
Working with
Data Access Objects (DAO)

So far, we have used a few objects of Data Access Objects (DAO). In this chapter, we will understand what are the other
objects in DAO.




What is Jet Engine?
Jet Engine is the database engine that accesses the data. Jet Engine is a collection of programs that work together. Jet
Engine makes use of some other translators to access various types of databases. Each type of database such as dBase,
FoxPro, and Paradox etc has its own translator. These translators are to be available to access the particular type of
database.



Jet Engine can also access ODBC data sources using ODBC drivers.



Jet Engine also has its own query engine, which is used to search, order and filter the data without using the query engine of
the database. This may be an advantage with small databases such as MS-Access and FoxPro, but for large databases such as
Oracle database, using Jet query engine may be inefficient.



Also remember DAO and Jet Engine are not designed for Internet or Intranet. To access data in either Internet or Intranet
use ADO (ActiveX data objects) with OLE DB.




Objects in DAO object model
The following are the various objects in DAO object model. Here is the object model’s hierarchy (figure 17.1). Later we will
understand each object’s properties and methods.



Each object contains collections, methods and properties.



A collection is a collection of objects of the same type.


A method performs an operation on the object.



A property contains a single attribute of the object.



                                                             18
DBEngine object
This object is at the top level of the hierarchy. This object is automatically made available to your program. You do not have
to create this object. The following are collections, methods and properties of this object.



 Type    Name       Meaning                                                  ype        Jet or ODBC Direct) will be used
                                                                                        by the next workspace object
 Colle   Worksp     A collection of workspaces defined
                                                                                        created.
 ction   aces       currently.
                                                                             InitPath   Returns information about the
 s
                                                                                        Windows Registry key that contains
         Errors     Contains list of most recently                                      values for the Jet Engine.
                    occurred errors in the current
                                                                             LoginTi    representing the number of
                    session.
                                                                             meout      seconds before a login timeout
         Properti   Collection of properties of                                         error occurs. Default value is 20.
         es         DBEngine object.
                                                                             Systemd    Specifies the location for
 Meth    RepairD    Is used to fix a corrupted Jet                           b          workgroup information file, which
 ods     atabase    database file (.MDB).                                               allows you to define different
         Compac Is used to remove empty space and                                       workgroups and set permission to
         tDatabas perform other operations that will                                    each object in the database for
         e
                  improve performance. It can also                                      each user in workgroup.
                  be used to convert old version’s                           DefaultP Sets the password to be used when
                  database to current version.                               assword creating default workspace.
         Register   Registers an ODBC data source for                        Default    Sets the name of the user to be
         Databas    Jet access.                                              User       used when creating default
         e                                                                              workspace.
         Idle       The Idle method allows the                     Table 17.1 : Members of DB Engine object.
                    Microsoft Jet database engine to
                    perform background tasks that may
                    not be up-to-date because of
                    intense data processing.
         SetOpti    Used to change registry settings of
         on         Jet. These changes are in effect
                    only during runtime. They do not
                    change registry or INI file
                    permanently.
         Create     Creates a workspace for accessing
         Worksp     one or more databases.
         ace
 Prop    Version    Returns the version of DAO that is
 erty               currently in use.
         DefaultT   Sets or returns a value that indicates
                    what type of workspace (Microsoft




                                                              19
Workspace Object
Workspace object creates a session for the user. By default, a workspace object is automatically created. If you want you can
use that workspace object without creating any other workspace objects. But if you want the database to be accessed as a
different user from default workspace object or create a separate session for transaction processing, you have to create a
workspace object explicitly.

Database Object
This object is used to access a particular database. This object has the collections, methods and properties using which we
can access database and its structure and modify it. The following are the collections, methods and properties:


QueryDef object
This object is used to store an SQL query in the database. SQL query that is stored using this object can be used as the
source for recordset object later. Queries stored using QueryDef object are stored in processed format and as a result they
are executed faster than ordinary query.

TableDef Object
Contains details of a table in the database. The table may be a linked table also. TableDefs collection contains the list of
TableDef objects. Each TableDef object represent one table. The following are the collections, methods and properties of
the TableDef object.



Field object
A Field object represents a single field of a table, recordset, index or querydef. Fields collection contains a list of field
objects.

Index Object
Represents an index of a table. Indexes collection contains a list of index objects.The following are the collections, methods
and properties of the index object.

Relation Object
Relation object represents relationship between two fields in two tables. This is used to enforce referential integrity. The
following are the collections, methods and properties of relation object.

Connection Object
A connection object represents a connection to ODBC data source. This is used only in ODBCDirect workspace.

ODBCDirect workspace
ODBCDirect workspace was introduced in Visual Basic 5.0. When you establish a connection through ODBCDirect
workspace, you can access the database bypassing Jet Engine. This improves performance as well as flexibility.

At the time of creating workspace you have to explicitly specify the workspace as ODBCDirect workspace using
dbUseODBC as the type of the workspace. The following are the collections, methods and properties of the collection object.


Error Object
Contains the details of data access errors. Errors collection contains Error objects. The following are the properties of Error
object.




                                                                 20
ODBC and Remote Data Objects (RDO)

Remote Data Objects (RDOs) are used to access a remote database through ODBC. Accessing an ODBC data source using
RDO is faster than accessing the same using DAO.

Remote Data Control is an ActiveX control that is used to access an ODBC data source using RDOs. This is same as a Data
Control, except that the data control uses DAOs and Remote data control uses RDOs.

First let us understand RDO object model and key features of RDOs and ODBC. Then we will understand how to use Remote
Data Control and RDOs to access Oracle through ODBC.

Remote Data Object (RDO)
Object Model
RDO object model is very small compared with DAO
object model. Here is the list of objects in RDO object
model. And most of them have their counterparts in DAO.




                                                                     Figure 18.1: RDO object model
Here is a brief description about each object in the object model.

 RDO object         Description

 rdoEngine          The base object. Created automatically when you first access RDO in your
                    application.

 rdoError           Used to handle all ODBC errors and messages generated by RDO. Created
                    automatically.

 rdoEnvironment     Defines a logical set of connections and transaction scope for a particular
                    user name. Contains both open and allocated (but unopened) connections,
                    provides mechanisms for simultaneous transactions, and provides a security
                    context for data manipulation language (DML) operations on the database.
                    rdoEnvironments(0) created automatically.

 rdoConnection      Represents an open connection to a remote data source and a specific
                    database on that data source, or an allocated but as yet unconnected
                    object, which can be used to subsequently establish a connection.

 rdoTable           Represents the stored definition of a base table or an SQL view.


                                                              21
rdoResultset       Represents the rows that result from running a query.

 rdoColumn          Represents a column of data with a common data type and a common set
                    of properties.

 rdoQuery           An SQL query definition that can include zero or more parameters.

 rdoParameter       Represents a parameter associated with an rdoQuery object. Query
                    parameters can be input, output, or both.

Table 18.1: Objects in RDO object model.

Remote Data Objects (RDOs) vs. Data Access Objects (DAOs)
Fundamentally RDO is same as DAO and Remote data control is same as Data control. However, RDO was designed and
implemented strictly for relational databases that are accessed using ODBC. RDO doesn’t have a query engine like DAO,
instead it depends on the query processor of the database that it is accessing.

The following table compares RDO objects and options with DAO objects and options.

Important concepts of RDO
There are three important concepts related to RDO. When you use RDO, you have to first understand these three concepts.
These concepts are:

    Cursor Drive
    Dataset (ResultSet) Type
    Lock Type
The following section will discuss about each of these three concepts. Understanding them is important because even ADOs
use the same concept. In fact, most of the knowledge you gain with RDOs is usable with ADOs.

Cursor Drives
Cursor is the area where records are stored in memory. The process of keeping track of location of data pointer in the
dataset is called as cursor management. Which type of cursor you have to choose, it depends upon the functionality that
you want. But remember that the choice you make regarding cursor will have impact on the performance.

ResultSet Types
A Resultset is a collection of records. The following are various types of ResultSets. Remember, not all resultsets are
supported by cursor drivers.

Lock Type
This specifies the type of lock to be obtained while making changes to the ResultSet. The following are the available options.

Before we use RDOs to access an ODBC Data source, we have to understand ODBC. The following sections will discuss what
is ODBC and how to access Oracle using ODBC.

What is ODBC?
ODBC (Open Database Connectivity) is an interface through which you can access data in heterogeneous environments. For
example, using ODBC you can access data of DB2 running on Mainframe and you can access data of Oracle running on Sun
Sparc and so on. ODBC is an interface that was promoted by Microsoft. First let us understand why we need ODBC and its
importance in the industry.
                                                              22
Why do we need ODBC?
Assume you want to access data stored in Oracle from a program written in Visual Basic. For this, you use a set of functions
supplied by Oracle called as APIs (also called as Oracle Call Interface (OCI)) to access Oracle database. In the same way each
database vendor supplies a set of functions using which you can access the database. But the problem is, each set of
functions is different from others. That means if you want to access Oracle using OCI, you have to learn how to use these
functions. But tomorrow if you have to access Sybase, you have to use functions provided by Sybase to access its database.
That not only makes the life of programmer tough (as he has to learn a new set of functions again), it also necessitates great
amount of changes to your programs. In brief, each DBMS provides its own set of functions to access its database. So your
program becomes database dependent. That means a change in the type of database (say from Sybase to Oracle) needs the
program to be modified to a larger extent.

How does ODBC Function?
To understand how does ODBC function, please have a look at figure 18.2 . Each database vendor provides a program called
as ODBC driver, which takes standard ODBC calls and translates them into the language the database can understand. So the
application uses ODBC calls (called as ODBC API) either directly or indirectly (for example RDOs calling required ODBC calls)
to access the database. And these ODBC calls are translated by ODBC driver of the specific database to the required native
language. As a result the program uses the same ODBC calls irrespective of the database it is accessing and the ODBC driver
takes care of converting the standard calls to the native calls.

First of all, each database vendor, such as Oracle corporation, Microsoft , IBM and so on, provides ODBC driver for its
database. Remember if you do not have ODBC driver you cannot access the database using ODBC interface. It should also be
noted, that there are some third party ODBC drivers. There are companies that are specialized in creating ODBC drivers, for
example Intersolv.




Figure 18.2: Components related to ODBC.

You have to load ODBC drivers for database that you need to access. For example, if you want to access Oracle, you need to
load ODBC driver for Oracle. When you load ODBC driver, Windows OS stores the details of the driver in System Registry (a
part of Windows where important information is stored).

ODBC driver manager which is a part of Windows OS loads the required ODBC driver and passes the calls to driver and takes
results from driver and pass the result to Application.

ODBC driver manager comes to know about the driver to be used and the database to be accessed through using Data
source name (DSN) used by the application program.




                                                              23
ActiveX Data Objects(ADO)
DO is another data access method. ADO data model has a collection of objects using which you can access and manipulate
any database that is based on OLEDB interface (more about it later). ADO model is simple. It has fewest objects in its object
model. ADO is the data model for databases that are accessed using OLEDB interface, where as RDO is the data model for
databases that are accessed using ODBC interface.




What is OLEDB (OLE Database)?
OLEDB is an entirely new method to connect to databases. OLEDB is replacing ODBC. OLEDB provides flexibility and ease of
use than ODBC. OLEDB was designed to allow access to data of various formats. That means the data need not be in the
form of a relation database and accessed using SQL.

OLEDB needs a provider, which is a program that can sit between the application and the database (something like an ODBC
driver). So when you want to access a database using OLEDB interface, you have to make sure that you have OLEDB provider
for that database. Microsoft has provided the following OLEDB providers.

    Microsoft OLE DB provider for ODBC drivers
    Microsoft Jet 3.51 OLEDB provider
    Microsoft OLE DB provider for Oracle
    Microsoft OLE DB provider for SQL Server
    Microsoft OLE DB provider for Directory Services




Figure 19.1: OLEDB interface.

ActiveX Data Object Model
This is a collection of objects that is used to access the database using OLEDB as the underlying interface. ADOs are simple
compared with DAO and RDO.

ActiveX Data Objects allow you to access only data and not the schema (table definitions, column definitions etc). As the
result it has very few objects in it object model.

The following are the objects in ActiveX data object model.

 Object          What it does?

                                                              24
Connection      Allows you to connect to the database.

 Command         Is used to execute commands that are supported by the
                 database.

 RecordSet       Contains the collection of records retrieved by
                 executing a query.

Table 19.1: Important objects in ADO data model.

There are some more objects in the object model of ADO. But the three objects mentioned above are the most important
objects.

Connection Object
Connection object allows the application to connect to the database. It represents an open connection to the data source.

To establish a connection with a particular database, you have to set the ConnectionString property to the required string,
which specifies the OLEDB provider to be used and the data source to be accessed.

CursorLocation Property
Determines the location where cursor is managed.

Constant          Description

AdUseNone         No cursor services are used. (This constant is obsolete and appears solely for
                  the sake of backward compatibility.)

AdUseClient       Uses client-side cursors supplied by a local cursor library. Local cursor engines
                  will often allow many features that driver-supplied cursors may not, so using
                  this setting may provide an advantage with respect to features that will be
                  enabled. For backward compatibility, the synonym adUseClientBatch is also
                  supported.




Using ActiveX Data Control
We have used data control, which is a control in standard set of controls. Now we will use an ActiveX control called as
ActiveX Data Control, which uses ADOs to access a database for which we have an OLEDB provider.

Here are the steps to display the details of publishers taken from biblio.mdb.


                                                               25
1. Start a new project using File->New Project and select Standard Exe as the type of the project.
2. Load Microsoft ADO Data Control 6.0 (OLEDB) into project using Project->Components option and check the above
   mentioned ActiveX control.
3. Place ADODC (ActiveX data objects data control) on the form.
4. Select ADODC properties options from popup menu of the ADODC control.
5. This brings up property pages of ADODC.
6. Click on Build button in Use Connection String radio button.
7. ADODC displays Data Link Properties windows.
8. Make sure Provider tab is selected and select Microsoft jet 3.51 OLEDB Provider (figure19.3)
9. Then click on Connection tab (figure 19.4)
10. Click on three dots and select the name of data file that you want to access.
11. At this stage you can test your connection to the database by clicking on Test Connection button.
12. Advanced tab mainly deals with access permissions, and All tabs displays the entire information.
13. Click on Ok in Data Link Properties window to close it and come back to property pages of activex data control.
14. At this stage you should see connect string created by Visual Basic placed in Use connection String option button.
15. Now select RecordSource tab and adCmdTable from the type of the command dropdown list box.
16. Click on down arrow for the next combo box and from the list of valid tables select Authors tables (shown in figure 19.5)
17. Click on Ok to close property pages.
18. Place three textboxes on the form and corresponding labels. Change the properties of these controls as follows.



 Control     Property        Value

 Text1       Datasource      Adodc1

             Datafield       Au_id

             Name            txtauid

 Text2       Datasource      Adodc1

             Datafield       Author

             Name            txtauthor

 Text3       Datasource      Adodc1

             Datafield       Year born

             Name            Txtyb

19. Change remaining properties as required.
20. Run the project to get the details of authors into three textboxes.
Note: This application is same as the application we developed in “Accessing Data using Data Control” section of chapter 15.
But instead of using data control, we have used an ADODC to access the data. And there the underlying objects are Data
access object and here the objects are ActiveX Data Objects.

                                                              26
Acti

veX Data Control does the same job as the standard Data
Control but in a different way. The fundamental
difference is; standard data control is based on ADO and
ADODC is based on ADO & OLEDB. And there are
different set of events and properties for ADODC.




Figure 19.2: General Property Page of ADODC.
                                                                 Figure 19.3: List of Providers.



Properties of ADODC
The following are properties that are specific to ADODC.



 Property              Meaning

 BOFAction             Specifies the action to be taken when record pointer reaches beginning
                       of the underlying Recordset.

 CacheSize             Specifies the number of records to be kept in the memory.

 Caption               The message to be displayed on the control.

 Commandtimeout        Specifies the amount of time to wait for the command to return. Time is
                       specified in seconds. Default is 30.

 Commandtype           Specifies the type of command. Valid options are, adcmdUnKnown,
                       adCmdText, adCmdTable, and adCmdStoredProc.

 ConnectionString      Contains the information required to connect to the database.

 ConnectionTimeou      The number of seconds to wait before aborting connection. This is

                                                            27
t                    specified in seconds. Default is 15.

 CursorLocation       Sepecifies whether client-side or server-side cursors are used. Default is
                      adUseClient – client side cursor.

 CursorType           Specifies which type of cursor is to be used. Default is adOpenStatic.

 EOFAction            Indicates the action to be taken when record pointer reaches end of the
                      recordset.

 LockType             Specifies the type of lock to be used. The default is adLockOptimistic.

 Maxrecords           Specifies the number of records retrieved at the time of opening the
                      underlying recordset.
 Mode                 Specifies in which mode the recordset is to be opened. The mode of
                      recordset determines what operations other users can perform on the
                      Recordset.

 Orientation          Whether to display recordset vertically or horizontally.

 Password             Password of the user currently connected.

 RecordSource         The name of the table or stored procedure or SELECT command that
                      supplies data.

 Username             Name of the user currently connected.



Table 19.6: Properties of ADODC.

                                                                  Figure 19.4: Connection attributes.




                                                                  Figure 19.5: Record Source attributes.



Events of ADODC

                                                             28
The events of ADODC can be divided into two main groups. One group contains events that occur before the operation is
performed (WillMove) and another group contains events, which occur after the operation is completed (MoveComplete).



Will events which will occur before the action takes place and gives you an opportunity to cancel the operation that is about
to take place using cancel parameter. See the example later.



The following are the events that are specific to ADODC.



 Event                         When it occurs?

 Fetchprogress                 Periodically during a lengthy fetch operation.

 FetchComplete                 After all records of the recordset are fetched.

 WillMove                      Before record pointer moves from one record to another record.

 Movecomplete                  After record pointer has moved from one row to another.

 EndOfRecordset                When record pointer has moved past the last record.

 WillchangeRecordset           Before a change is made to recordset.

 RecordsetChangeComplete       After change is made to recordset.

 WillchangeRecord              Before the changes of the current record are sent to database.

 RecordChangeComplete          After the record in the data source is modified with the data in
                               the recordset.

 WillChangeField               Before the current fields in the recordset is updated.

 FieldChangeComplete           After the current field is updated.

Table 19.7: Events of ADODC.




                                                              29
What is difference between ActiveX DLL and ActiveX EXE

ActiveX DLLs and ActiveX EXEs are almost exactly the same in the ways they are built and used. In both
cases, you build one or more classes that applications can use to do something. The big difference lies in
where they are used.

An ActiveX DLL's code is executed within the main program's address space. It behaves as if the class was
created within the main program's code. Because the code lies inside the program's address space, calling
methods is very fast.

An ActiveX EXE's code is run in a separate process. When the main program calls an ActiveX EXE's method,
the system marshalls the call to translate the parameters into the ActiveX EXE's address space, calls the
method, translates the results back into the main program's address space, and returns the result. This is
slower than running an ActiveX DLL's method inside the main program's address space.

Because of the difference in speed, an ActiveX DLL is almost always preferable. The reason ActiveX EXEs are
useful is they can run on a different computer than the main program while an ActiveX DLL must run on the
same computer as the main program.


What is ActiveX and Types of ActiveX Components in VB?


The main term here is ActiveX component. The remaining things i.e. ActiveX control, ActiveX Exe and ActiveX
Dll are three different kinds of ActiveX components.
ActiveX Dll and ActiveX Exe are code components that are not integrated in the VB IDE like the ActiveX
control, so that u cant put any instances of those code components by double clicking or drag-dropping those
on ur form. Rather these code components expose their functionality by methods and properties, that u can
change/access through only ur code. More precisely code components are classes that must be accessed
through a properly declared object variable and they dont have a visible interface.
Now ActiveX Exe and ActiveX dll are different from each other in how they get instantiated with the client
application.


1.Standard EXE.
2.ActiveX EXE.
3.ActiveX DLL.
4.ActiveX document.
5.ActiveX Control.
6.Project Group.




                                                         30

Weitere ähnliche Inhalte

Was ist angesagt?

Basic controls of Visual Basic 6.0
Basic controls of Visual Basic 6.0Basic controls of Visual Basic 6.0
Basic controls of Visual Basic 6.0
Salim M
 
Control Structures in Visual Basic
Control Structures in  Visual BasicControl Structures in  Visual Basic
Control Structures in Visual Basic
Tushar Jain
 

Was ist angesagt? (20)

Basic controls of Visual Basic 6.0
Basic controls of Visual Basic 6.0Basic controls of Visual Basic 6.0
Basic controls of Visual Basic 6.0
 
Entity (types, attibute types)
Entity (types, attibute types)Entity (types, attibute types)
Entity (types, attibute types)
 
SQL commands
SQL commandsSQL commands
SQL commands
 
Integrity Constraints
Integrity ConstraintsIntegrity Constraints
Integrity Constraints
 
VB net lab.pdf
VB net lab.pdfVB net lab.pdf
VB net lab.pdf
 
Javascript event handler
Javascript event handlerJavascript event handler
Javascript event handler
 
Introduction to SQL
Introduction to SQLIntroduction to SQL
Introduction to SQL
 
Vb 6.0 controls
Vb 6.0 controlsVb 6.0 controls
Vb 6.0 controls
 
SQL(DDL & DML)
SQL(DDL & DML)SQL(DDL & DML)
SQL(DDL & DML)
 
Tcp/ip server sockets
Tcp/ip server socketsTcp/ip server sockets
Tcp/ip server sockets
 
Generalization and specialization
Generalization and specializationGeneralization and specialization
Generalization and specialization
 
Unit iv
Unit ivUnit iv
Unit iv
 
ADO CONTROLS - Database usage
ADO CONTROLS - Database usageADO CONTROLS - Database usage
ADO CONTROLS - Database usage
 
Xml
XmlXml
Xml
 
Control Structures in Visual Basic
Control Structures in  Visual BasicControl Structures in  Visual Basic
Control Structures in Visual Basic
 
Relational algebra ppt
Relational algebra pptRelational algebra ppt
Relational algebra ppt
 
Components of .NET Framework
Components of .NET FrameworkComponents of .NET Framework
Components of .NET Framework
 
Android Toast.pdf
Android Toast.pdfAndroid Toast.pdf
Android Toast.pdf
 
Data independence
Data independenceData independence
Data independence
 
Acid properties
Acid propertiesAcid properties
Acid properties
 

Andere mochten auch (8)

Crystal reports seminar
Crystal reports seminarCrystal reports seminar
Crystal reports seminar
 
Crystal report
Crystal reportCrystal report
Crystal report
 
Student Information & Result Processing Sytem
Student Information & Result Processing SytemStudent Information & Result Processing Sytem
Student Information & Result Processing Sytem
 
Project for Student Result System
Project for Student Result SystemProject for Student Result System
Project for Student Result System
 
Student information-result-system
Student information-result-systemStudent information-result-system
Student information-result-system
 
Ppt on Report Writing
Ppt on  Report WritingPpt on  Report Writing
Ppt on Report Writing
 
Student result mamagement
Student result mamagementStudent result mamagement
Student result mamagement
 
Project report-on-student-information-management-system-php-mysql
Project report-on-student-information-management-system-php-mysqlProject report-on-student-information-management-system-php-mysql
Project report-on-student-information-management-system-php-mysql
 

Ähnlich wie Creating a data report in visual basic 6

Report exchange designer
Report exchange designerReport exchange designer
Report exchange designer
rlsotto
 
Report exchange designer
Report exchange designerReport exchange designer
Report exchange designer
Bhushan Rajgure
 
Create a basic performance point dashboard epc
Create a basic performance point dashboard   epcCreate a basic performance point dashboard   epc
Create a basic performance point dashboard epc
EPC Group
 
Custom Report Tutorial
Custom Report TutorialCustom Report Tutorial
Custom Report Tutorial
Piyush Ramnani
 

Ähnlich wie Creating a data report in visual basic 6 (20)

Report exchange designer
Report exchange designerReport exchange designer
Report exchange designer
 
Mca 504 dotnet_unit5
Mca 504 dotnet_unit5Mca 504 dotnet_unit5
Mca 504 dotnet_unit5
 
Report exchange designer
Report exchange designerReport exchange designer
Report exchange designer
 
Report designer
Report designerReport designer
Report designer
 
Pnbhfl training final
Pnbhfl training finalPnbhfl training final
Pnbhfl training final
 
How to design a report with fine report reporting tool
How to design a report with  fine report reporting toolHow to design a report with  fine report reporting tool
How to design a report with fine report reporting tool
 
Report painter in SAP
Report painter in SAPReport painter in SAP
Report painter in SAP
 
Fr net programmermanual-en
Fr net programmermanual-enFr net programmermanual-en
Fr net programmermanual-en
 
synopsis
synopsissynopsis
synopsis
 
Mr20 enus a-Report Design in Management Reporter 2.0 for Microsoft Dynamics® ERP
Mr20 enus a-Report Design in Management Reporter 2.0 for Microsoft Dynamics® ERPMr20 enus a-Report Design in Management Reporter 2.0 for Microsoft Dynamics® ERP
Mr20 enus a-Report Design in Management Reporter 2.0 for Microsoft Dynamics® ERP
 
Ssrs tutorial
Ssrs tutorialSsrs tutorial
Ssrs tutorial
 
My First Report slide support
My First Report slide supportMy First Report slide support
My First Report slide support
 
Oracle D2K reports
Oracle D2K reports Oracle D2K reports
Oracle D2K reports
 
Tutorial on how to load images in crystal reports dynamically using visual ba...
Tutorial on how to load images in crystal reports dynamically using visual ba...Tutorial on how to load images in crystal reports dynamically using visual ba...
Tutorial on how to load images in crystal reports dynamically using visual ba...
 
How to Create Oracle Fusion BI Publisher Report Using RTF Template
How to Create Oracle Fusion BI Publisher Report Using RTF TemplateHow to Create Oracle Fusion BI Publisher Report Using RTF Template
How to Create Oracle Fusion BI Publisher Report Using RTF Template
 
Ad basic tech_workshop
Ad basic tech_workshopAd basic tech_workshop
Ad basic tech_workshop
 
oracle-reports6i
oracle-reports6ioracle-reports6i
oracle-reports6i
 
How to embed reporting into your asp.net core web applications
How to embed reporting into your asp.net core web applications How to embed reporting into your asp.net core web applications
How to embed reporting into your asp.net core web applications
 
Create a basic performance point dashboard epc
Create a basic performance point dashboard   epcCreate a basic performance point dashboard   epc
Create a basic performance point dashboard epc
 
Custom Report Tutorial
Custom Report TutorialCustom Report Tutorial
Custom Report Tutorial
 

Kürzlich hochgeladen

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Kürzlich hochgeladen (20)

Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 

Creating a data report in visual basic 6

  • 1. Data Report Designer allows you to create reports. The reports generated through Data Report Designer take data from data sources such as Data Environment. Using Data Report Designer you can do the following: Export report to HTML file or text file Create report with groups and aggregates Create a hierarchical report Components of Data Report Designer The following are the various parts of Data Report Designer. DataReport object This is like a Visual Basic form. It contains the visible designer and code. Code is used to control report at runtime by responding to the events generated by the data report. Visible designer allows you to design the layout of the report. Sections Collection This is a collection of section objects. A section object represents a section of the report. You can use section objects at runtime to reconfigure the section. At design time each section is represented by a header, which is used to select the section. Data Report Controls Data report can contain only a set of special controls. When you are in Data Report Designer, a different toolbox is displayed with controls that are specific to Data Report. Note: You cannot use Visual Basic's intrinsic controls, or any ActiveX controls, on the Data Report designer. Sections of the Data Report Designer The following are the sections in Data Report Designer. Each section contains a set of values to be displayed. Section Description Report Header Contains the text that appears at the very beginning of a report, such as the report title, author name, or database name. If you want the Report Header to be the first page in the report, set its ForcePageBreak property to rptPageBreakAfter. Page Header Contains information that goes at the top of each printed page, such as the report's title. Group Contains a repeating section of the data report. Each group header is Header/Footer matched with a group footer. The header and footer pair is associated with a single Command object in the Data Environment designer. Detail Contains the innermost repeating part (the records) of the report. The detail section is associated with the lowest-level Command object in a Data Environment hierarchy. Page Footer Contains the information that goes at the bottom of each printed page, such as the page number. Report Footer Contains the text that appears at the very end of the report, such as summary information, or an address or contact name. The Report Footer appears between the last Page Header and Page Footer Creating a Simple Report
  • 2. Now, let us create a sample report to understand the steps involved in creating a simple report. For any report that is generated using Data Report Designer, you have a few important steps. Add Data Report Designer to project Establish a connection to database and create a command using Data Environment designer. Change DataSource and DataMember properties of Data Report object. Place fields on the Data Report Designer in the required sections. Invoking the report using Show method. The following steps illustrate how to create a simple report using Data Report Designer and Data Environment. The report displays the list of products from Products table of Products.mdb. 1. Start a new project by selecting File menu and New Project option. 2. Select Data Project in New Project dialog box. 3. Visual Basic creates a new project with a form, Data Environment and Data Report. As shown in figure 21.1 4. Invoke Data Environment Designer and select Connection object. 5. Click on right button and invoke Properties of the Connection object. 6. Select Microsoft Jet 3.51 OLE DB Provider as the provider. 7. Select Connection tab and select “D:VBBOOKPRODUCTS.MDB” as the database. Please note that in your system the path may be different. So choose whichever path is appropriate to your system. 8. Rename Connection object to cnnProducts. 9. Select popup menu of cnnProducts and select Add Command to add a command object. A Command object with the name command1 will be created. 10. Select properties of command object and change the following properties. Command Name comProducts Database Object Table Object Name Products Figure 21.1: Data Project's project explorer. Placing fields on Data Report Designer After command object is created, place the fields in the command object on Data Report Designer. The following are the required steps to do that: 1. Open Data Report Designer by double clicking on DataReport1 in Project Explorer. 2
  • 3. 2. Invoke properties window using F4 when you are in Report Designer 3. Change the following properties of Data Report Designer. DataSource DataEnvironment1 DataMember comProducts 4. Arrange Data Report Designer and Data Environment Designer in such a way that you can see both of them. See figure 21.2. 5. Drag fields from comProducts command object into Detail section Data Report Designer. Or Drag comProducts command object from Data Environment into Detail section of Data Report Designer. 1. In Data Environment Designer, select Data Environment object. 2. Click on right button and select Option menu from popup menu. 3. Select Field Mapping tab in Options dialog, then uncheck Drag and Drop Field Captions. Arranging fields in Data Report Designer 1. If field headings are also placed in Data Report Designer then we have to move them to Page Header section. 2. If field headings are not copied then create labels in Page Header section using RptLabel control. 3. When you are dealing with Data Report Designer you get DataReport toolbox. RptLabel is a control available in DataReport toolbox. 4. Whether you got labels (headings) automatically or you manually added, change the caption property of each label as follows. Field Heading Prodno Product Number Prodesc Product Description Qoh Quantity On Hand Rpu Rate Per Unit Ptype Product Type 5. Select all labels and change Font Name to Arial, Bold to True, and Size to 10. 6. Change Alignment property of all heading labels to 2-rptJustifyCenter. 7. Increase the Height of all the labels to 450 units. This is done to ensure that the heading will wrap to next line if it cannot be accommodated in one line. 8. Reduce the size of Detail section to eliminate extra space below fields. 9. Change Alignment property of QOH and RPU fields to 1-rptJustifyRight. 10. Change Alignment property of PRODNO and PTYPE to 2-rptJustifyCenter. Running the Report To invoke report you can make either the report the startup object or you can invoke report using Show method of the data report object.
  • 4. Making report the startup object will be easier while you are designing report. But final reports are always invoked either by user selecting an option in menu or by clicking on a command button. Let us see how to invoke report using a command button. As you have seen, when you selected Data Project, Visual Basic has created a Form, Data Environment, and Data Report. So invoke Form designer and place a command button. Change the following properties of command button. Name cmdProductlist Caption &Products List And write code to invoke report in click event of the command button. Private Sub cmdproductlist_Click() DataReport1.Show End Sub Listing 21.1: Code to invoke data report. Figure 21.2: Placing fields from data environment to data report object. Note: You can also make DataReport the Start up object of the project to start project with Data Report. 1. Run the project using F5. 2. When form is displayed, click on command button to invoke report. 3. At runtime the report should look like figure 21.3. 4
  • 5. Figure 21.3: Data Report at runtime. Improving Appearance of the report The report shown in figure 21.3 is O.K but not good. We can modify the report to make it more readable. Also observe, it wastes a lot of space at the top and on the left. So let us see how to modify the report. 1. Invoke Properties window from Data Report Designer and select properties for DataReport1. 2. Change the following properties. Left Margin 100 Right Margin 100 Top Margin 100 Bottom Margin 100 3. Place a line control at the bottom of the headings to separate heading from details. 4. Change BorderStyle property to 1- vbFixedSingle. Adding Report Title and Report Footer A report can contain a title, which is printed at the top of the report and a report footer, which is printed at the bottom of the report. To add report title and report footer sections to Data Report Designer: 1. Click right button of mouse on Data Report Designer. 2. Check Show Report Header/Footer option on popup menu. 3. Data Report Designer adds two more sections – Report Header and Report Footer. To add a title to the report: 1. Select Report Header section and place a label control in it. 2. Change the Caption of the label to “Products List” 3. Change Font related properties to increase the size of the title. To add current date and page number: 1. Select Report Header section and click on right button.
  • 6. 2. From popup menu select Insert controls -> Current Date(long format) A label is placed with Caption property set to %D (which stands for date long format). 3. Place a label on the left of it and change it’s Caption property to “Date:” 4. Click right button on the data report again and select Insert Controls -> Current Page Number. Another label is placed with caption %p (which means current page number). You can also select Total Number of Pages; which means a label with caption %P (capital P). 5. Place a label on the left and change caption to “Page:” 6. Change Font Bold setting of “Date:” and “Page:” labels to True. Arrange all labels and fields in a neat format and then run the report (click on Products List command button). Your report should look like the one shown in figure 21.4. Figure 21.4: Data Report after formatting. Introduction to data reports Reports are important and useful in many respects because they provide useful and meaningful information concerning a set of data. In this chapter, we will show you how to create a report in Visual Basic 6. In previous versions of Visual Basic 6, there is no primary reporting . Previous versions of Visual basic 6 uses Crystal Reports tool, a software from Seagate. Fortunately, Microsoft has integrated a good report writer into Visual Basic 6, so you no longer need to use Crystal Report. Steps in building your report in Visual Basic 6 Visual Basic 6 provides you with a data report designer to create your report, it is somewhat similar to data report designer in Microsoft Access. The data report designer has its own set of controls which allow you to customize your report seamlessly. The steps in creating the report in VB6 are listed below: Step 1: Adding Data Report Start Visual Basic as a Standard EXE project. From the Projectmenu in the VBE, select Add Data Report in the dropdown menu. Now, you will be presented with the data report environment, as shown in Figure 40.1. The data report environment contains 6 controls, they are RptTextBox, RptLine, RptFunction, RptLabel, RptImage and RptShape. You can customize your report here by adding a title to the page header using the report label RptLabel. Simply drag and draw the RptLabel control on the data report designer window and use the Caption property to change the text that should be displayed. You can also add graphics to the report using the RptImage control. 6
  • 7. Figure 40.1: The Data Report Environment Step 2: Connecting the report to database using Data Environment Designer Click the Project menu, then select Data Environment. from the drop-down menu. The default data environment will appear, as shown in figure 40.2 Figure 40.2: Data Environment Now, to connect to the database, right-click connection1 and select Microsoft Jet 3.51 OLE DB Provider (as we are using MS Access database) from the Data Link Properties dialog (as shown in Figure 40.3), then click next.
  • 8. Figure 40.3 Now, you need to connect to the database by selecting a database file from your hard disk. For demonstration purpose, we will use the database BIBLIO.MDB that comes with Visual Basic, as shown in Figure 40.4. The path to this database file is C:Program FilesMicrosoft Visual StudioVB98BIBLIO.MDB. This path varies from computers to computers, depending on where you install the file. After selecting the file, you need to test the connection by clicking the Test Connection button at the right bottom of the Data Link Properties dialog. If the connection is successful, a message that says 'Test Connection Succeeded' will appear. Click the OK button on the message box to return to the data environment. Now you can rename connection1 to any name you like by right-clicking it. For example, you can change it to MyConnection. You may also change the name of DataEnvironment1 to MyDataEnvironment using the Properties window. 8
  • 9. Figure 40.4 Step 3: Retrieving Information from the Database In order to use the database in your report, you need to create query to retrieve the information from the database. Here , we will use SQL command to create the query. First of all, right click on MyConnection to add a command to the data environment. The default command is Command1, you can rename it as MyCommand, as shown in Figure 40.5.
  • 10. Figure 40.5: MyCommand In order to use SQL command, right-click MyCommand and you can see its properties dialog. At the General tab, select SQL statement and key in the following SQL statement: SELECT Au_ID, Author FROM Authors ORDER BY Author This command is to select all the fields from the Authors table in the Biblio.Mdb database. The command ORDER BY Author is to arrange the list in ascending order according to the Authors' Names. Now, you need to customize a few properties of your data report so that it can connect to the database. The first property to set is the DataSource, set it to MyDataEnvironment. Next, you need to set the DataMember property to MyCommand,as shown in Figure 40.6 Figure 40.6: Properties of To add data to your report, you need to drag the fields from MyCommand in MyDataEnvironment into MyDataReport, as shown in Figure 40.7.Visual Basic 6 will automatically draw a RptTextBox, along with a RptLabel control for each field on the report. You can customize the look of the labels as well as the TextBoxes from the properties window of MyDataReport. Figure 40.7 The Final step is to set MydataReport as the Startup form from the Project menu, then run the program. You will see your report as shown in Figure 40.8. You can print out your report. 10
  • 11. Figure 40.8: The Final Report. Creating VB database applications using ADO control we have learned how to build VB database applications using data control. However, data control is not a very flexible tool as it could only work with limited kinds of data and must work strictly in the Visual Basic environment. To overcome these limitations, we can use a much more powerful data control in Visual Basic, known as ADO control. ADO stands for ActiveX data objects. As ADO is ActiveX-based, it can work in different platforms (different computer systems) and different programming languages. Besides, it can access many different kinds of data such as data displayed in the Internet browsers, email text and even graphics other than the usual relational and non relational database information. To be able to use ADO data control, you need to insert it into the toolbox. To do this, simply press Ctrl+T to open the components dialog box and select Microsoft ActiveX Data Control 6. After this, you can proceed to build your ADO-based VB database applications. Data Environment Data Environment, which was introduced in Visual Basic 6.0, how to use DataCombo, which is a data-bound ActiveX control, and how to use DataGrid, which is also a data-bound ActiveX control. Let us understand each of them first. Then we will develop a data-entry screen using all these three. Data Environment Data Environment object is created and managed using Data Environment designer. A Data Environment object can accomplish any of the following tasks. Can contain connection and command objects Can establish relationship between command object to represent hierarchies
  • 12. Can group data and get aggregates Allows fields to be dragged and dropped on to a Data Report, for report, and a Form for data entry screen Can work as source for Databound control such as DataCombo controls and Hierarchical Flexgrid control. In order to work with Data Environment object, you have to add Data Environment Designer to your project. Data Environment Designer allows programmer to accomplish any of the tasks mentioned above. Data Environment Designer is invoked when you double click on Data Environment object in Project Explorer. To add Data Environment object to the project: 1. Select Project-> Add Data Environment. If Add Data Environment option is not found then select More ActiveX Designers and then select Data Environment. Note: Visual Basic adds Data Environment Designer to your project and also creates a connection object.(See figure 20.1) Figure 20.1: Data Environment Designer Working with Connection Object Whenever you create a Data Environment object a Connection object is added to Data Environment object. But that Connection object is not connected to any database. So first we have to establish a connection with the Connection object. Now, let us see how to connect to database through Connection object. To connect to Biblio.mdb using connection object: 1. Select Connection object (Connection1) and click on right button. 2. From popup menu select Properties option Data Environment designer displays Data Link properties dialog. 3. Select the required OLEDB provider (Microsoft Jet 3.51 OLE DB Provider) 4. Select Connection tab and select the name of the database ( BIBLIO.MDB) 5. Click on Ok To rename connection object: 12
  • 13. 1. Invoke popup menu by click on Connection object with right button. 2. Select Rename option. 3. Enter new name and press enter key to confirm it. Creating Command Object After connection is established using Connection object, now we have to create a command object to access the data of the database. A connection object can contain any number of command objects. In fact, a command object can contain another command object, which is called as child command object. To create command object to get data from Authors table: 1. Invoke popup menu of Connection object and select Add Command option Data Environment Designer creates a command object with name Command1. 2. Invoke Popup menu of command object by clicking on right button and select Properties option. Properties dialog is displayed (see figure 20.2) 3. Change the Name of the command object to Authors 4. Select Table as Database Object 5. Invoke the list of tables by clicking on down arrow of Object Name drop down and select Authors as the name of the table. 6. For the time being, ignore remaining tabs and click on OK. A command object is created with the default name (command1). If you expand the command object by clicking on + sign, you get the columns of AUTHORS table. (See figure 20.3). Figure 20.2 : Properties of Command object. Figure 20.3: Data Environment designer after a command object is created. To create master-detail relationship:
  • 14. One of the interesting features of Data Environment object is, it allows you to create hierarchy of objects. To understand how to create hierarchy of command objects, let us create two command objects. One for Publishers table and another for Titles table. Publishers command object becomes parent command and Titles command object becomes child command object. These hierarchies can be used straightaway in Hierarchical FlexGrid control and Data Report object. To create command object for Publishers: 1. Select connection object, Biblio, and click on right button to invoke popup menu and select Add Command option of popup menu. 2. After a command object is created invoke its properties by selecting Properties option from Popup menu. 3. Change Name of the command object to Publishers 4. Choose Table as the Database Object and select Publishers as the name of the object. 5. Click on Ok. To create child command object for Titles: 1. Select Publishers command object and invoke popup menu. 2. Select Add Child Command option. 3. A new command object is created and placed along with fields of Publishers command object. 4. Select Child command object and invoke its properties 5. Change name to Titles. 6. Choose Table as Database Object and Titles as the name of the database object. 7. Click on Relation tab (see figure 20.4) to set relationship between Publishers and Titles command object. 8. Make sure Parent Fields and Child Fields are set to PubID and click on Add button to establish relationship between Publishers and Titles based on PubId field. 9. Click on Ok. After child object is created, Data Environment Designer has three command objects – Authors, Publishers, and Titles. Where Authors and Publishers are at the same level (Parent objects), Titles is a child command object of Publishers command object. When you expand all command objects, Data Environment Designer should look like figure 20.5. 14
  • 15. Figure 20.4: Relation tab of command properties dialog. Figure 20.5: Data Environment Designer after three command objects are added.
  • 16. Data Combo and Data List controls DataCombo and DataList controls are used to present a list of values to users from which user can select one. The list of values to be displayed to user will come from one recordset and the selected value goes into another recordset. Note: Whenever I refer to DataCombo, it also refers to DataList, unless the difference is explicitly specified. As DataCombo is an ActiveX control, it is to be loaded into its project explicitly. And DataCombo is based on OLEDB interface. So it can be used with either Data Environment or ActiveX data control, because they are also based on OLEDB (use ADO). To load Data List controls: 1. Select Project->Components 2. Visual Basic displays a list of available ActiveX controls. 3. Turn on check box on the left of Microsoft DataList Controls 6.0 (OLEDB) 4. Click on OK. Two ActiveX controls are loaded into project – DataList and DataCombo. Note: You also have Microsoft Data Bound List Controls 6.0 ActiveX control. It contains DBList and DBCombo, which work with Data Control and not with OLEDB. If you are developing a project with only DAOs or RDOs, then you can use these controls. The following are the important properties that are specific to Data List controls (Data Combo and Data List). Property Meaning BoundColumn Contains the name of the source field in the Recordset object that is used to supply a data value to another Recordset to which control is bound. ListField Returns or sets the name of the field in the Recordset object, specified by the RowSource property, used to fill the DataCombo or DataList control's list portion. RowSource Sets a value that specifies the source from which the control’s list is filled. The source is either an ActiveX Data control or Data Environment. RowMember Returns or sets the data member to be used to display list text. Used when RowSource is a Data Environment. 16
  • 17. DataGrid Control Allows you to display and manipulate a set of records and columns taken from the specified recordset. You can specify whether you want to allow user to modify displayed data, add new records, and delete existing records. The following are a few features supported by DataGrid control. It supports the following features: Each cell contains a value. The value of the cell can be edited interactively by user or programmatically. Provides Columns collection using which you can access columns of the grid. When you select a column ColIndex property is set to enable you to access the columns selected by the user. Data in the current row can be accessed through Bookmark property, which provides access to underlying recordset object’s record. Each column can have its own display attributes The DataGrid control functions similarly to the DBGrid (which is based on DAO & RDO) control except that it doesn't support an unbound mode. The following are the important methods, properties and events of DataGrid control. Methods of DataGrid control The following are the methods that are specific to DataGrid. Method Meaning CaptureImage Returns a captured image of the grid's display in its current state. ClearFields Clears all fields and restores grid to two columns and two rows. ClearselCols Deselects all the columns that are currently selected. HoldFields Sets the current column/field layout as the customized layout. ColContaining Returns the ColIndex value of the DataGrid control column containing the specified coordinate (X) value. GetBookmark Takes a relative row and returns the bookmark of the relative row. If GetBookmark 1 is given then the bookmark of next row of the current row is given. 17
  • 18. Working with Data Access Objects (DAO) So far, we have used a few objects of Data Access Objects (DAO). In this chapter, we will understand what are the other objects in DAO. What is Jet Engine? Jet Engine is the database engine that accesses the data. Jet Engine is a collection of programs that work together. Jet Engine makes use of some other translators to access various types of databases. Each type of database such as dBase, FoxPro, and Paradox etc has its own translator. These translators are to be available to access the particular type of database. Jet Engine can also access ODBC data sources using ODBC drivers. Jet Engine also has its own query engine, which is used to search, order and filter the data without using the query engine of the database. This may be an advantage with small databases such as MS-Access and FoxPro, but for large databases such as Oracle database, using Jet query engine may be inefficient. Also remember DAO and Jet Engine are not designed for Internet or Intranet. To access data in either Internet or Intranet use ADO (ActiveX data objects) with OLE DB. Objects in DAO object model The following are the various objects in DAO object model. Here is the object model’s hierarchy (figure 17.1). Later we will understand each object’s properties and methods. Each object contains collections, methods and properties. A collection is a collection of objects of the same type. A method performs an operation on the object. A property contains a single attribute of the object. 18
  • 19. DBEngine object This object is at the top level of the hierarchy. This object is automatically made available to your program. You do not have to create this object. The following are collections, methods and properties of this object. Type Name Meaning ype Jet or ODBC Direct) will be used by the next workspace object Colle Worksp A collection of workspaces defined created. ction aces currently. InitPath Returns information about the s Windows Registry key that contains Errors Contains list of most recently values for the Jet Engine. occurred errors in the current LoginTi representing the number of session. meout seconds before a login timeout Properti Collection of properties of error occurs. Default value is 20. es DBEngine object. Systemd Specifies the location for Meth RepairD Is used to fix a corrupted Jet b workgroup information file, which ods atabase database file (.MDB). allows you to define different Compac Is used to remove empty space and workgroups and set permission to tDatabas perform other operations that will each object in the database for e improve performance. It can also each user in workgroup. be used to convert old version’s DefaultP Sets the password to be used when database to current version. assword creating default workspace. Register Registers an ODBC data source for Default Sets the name of the user to be Databas Jet access. User used when creating default e workspace. Idle The Idle method allows the Table 17.1 : Members of DB Engine object. Microsoft Jet database engine to perform background tasks that may not be up-to-date because of intense data processing. SetOpti Used to change registry settings of on Jet. These changes are in effect only during runtime. They do not change registry or INI file permanently. Create Creates a workspace for accessing Worksp one or more databases. ace Prop Version Returns the version of DAO that is erty currently in use. DefaultT Sets or returns a value that indicates what type of workspace (Microsoft 19
  • 20. Workspace Object Workspace object creates a session for the user. By default, a workspace object is automatically created. If you want you can use that workspace object without creating any other workspace objects. But if you want the database to be accessed as a different user from default workspace object or create a separate session for transaction processing, you have to create a workspace object explicitly. Database Object This object is used to access a particular database. This object has the collections, methods and properties using which we can access database and its structure and modify it. The following are the collections, methods and properties: QueryDef object This object is used to store an SQL query in the database. SQL query that is stored using this object can be used as the source for recordset object later. Queries stored using QueryDef object are stored in processed format and as a result they are executed faster than ordinary query. TableDef Object Contains details of a table in the database. The table may be a linked table also. TableDefs collection contains the list of TableDef objects. Each TableDef object represent one table. The following are the collections, methods and properties of the TableDef object. Field object A Field object represents a single field of a table, recordset, index or querydef. Fields collection contains a list of field objects. Index Object Represents an index of a table. Indexes collection contains a list of index objects.The following are the collections, methods and properties of the index object. Relation Object Relation object represents relationship between two fields in two tables. This is used to enforce referential integrity. The following are the collections, methods and properties of relation object. Connection Object A connection object represents a connection to ODBC data source. This is used only in ODBCDirect workspace. ODBCDirect workspace ODBCDirect workspace was introduced in Visual Basic 5.0. When you establish a connection through ODBCDirect workspace, you can access the database bypassing Jet Engine. This improves performance as well as flexibility. At the time of creating workspace you have to explicitly specify the workspace as ODBCDirect workspace using dbUseODBC as the type of the workspace. The following are the collections, methods and properties of the collection object. Error Object Contains the details of data access errors. Errors collection contains Error objects. The following are the properties of Error object. 20
  • 21. ODBC and Remote Data Objects (RDO) Remote Data Objects (RDOs) are used to access a remote database through ODBC. Accessing an ODBC data source using RDO is faster than accessing the same using DAO. Remote Data Control is an ActiveX control that is used to access an ODBC data source using RDOs. This is same as a Data Control, except that the data control uses DAOs and Remote data control uses RDOs. First let us understand RDO object model and key features of RDOs and ODBC. Then we will understand how to use Remote Data Control and RDOs to access Oracle through ODBC. Remote Data Object (RDO) Object Model RDO object model is very small compared with DAO object model. Here is the list of objects in RDO object model. And most of them have their counterparts in DAO. Figure 18.1: RDO object model Here is a brief description about each object in the object model. RDO object Description rdoEngine The base object. Created automatically when you first access RDO in your application. rdoError Used to handle all ODBC errors and messages generated by RDO. Created automatically. rdoEnvironment Defines a logical set of connections and transaction scope for a particular user name. Contains both open and allocated (but unopened) connections, provides mechanisms for simultaneous transactions, and provides a security context for data manipulation language (DML) operations on the database. rdoEnvironments(0) created automatically. rdoConnection Represents an open connection to a remote data source and a specific database on that data source, or an allocated but as yet unconnected object, which can be used to subsequently establish a connection. rdoTable Represents the stored definition of a base table or an SQL view. 21
  • 22. rdoResultset Represents the rows that result from running a query. rdoColumn Represents a column of data with a common data type and a common set of properties. rdoQuery An SQL query definition that can include zero or more parameters. rdoParameter Represents a parameter associated with an rdoQuery object. Query parameters can be input, output, or both. Table 18.1: Objects in RDO object model. Remote Data Objects (RDOs) vs. Data Access Objects (DAOs) Fundamentally RDO is same as DAO and Remote data control is same as Data control. However, RDO was designed and implemented strictly for relational databases that are accessed using ODBC. RDO doesn’t have a query engine like DAO, instead it depends on the query processor of the database that it is accessing. The following table compares RDO objects and options with DAO objects and options. Important concepts of RDO There are three important concepts related to RDO. When you use RDO, you have to first understand these three concepts. These concepts are: Cursor Drive Dataset (ResultSet) Type Lock Type The following section will discuss about each of these three concepts. Understanding them is important because even ADOs use the same concept. In fact, most of the knowledge you gain with RDOs is usable with ADOs. Cursor Drives Cursor is the area where records are stored in memory. The process of keeping track of location of data pointer in the dataset is called as cursor management. Which type of cursor you have to choose, it depends upon the functionality that you want. But remember that the choice you make regarding cursor will have impact on the performance. ResultSet Types A Resultset is a collection of records. The following are various types of ResultSets. Remember, not all resultsets are supported by cursor drivers. Lock Type This specifies the type of lock to be obtained while making changes to the ResultSet. The following are the available options. Before we use RDOs to access an ODBC Data source, we have to understand ODBC. The following sections will discuss what is ODBC and how to access Oracle using ODBC. What is ODBC? ODBC (Open Database Connectivity) is an interface through which you can access data in heterogeneous environments. For example, using ODBC you can access data of DB2 running on Mainframe and you can access data of Oracle running on Sun Sparc and so on. ODBC is an interface that was promoted by Microsoft. First let us understand why we need ODBC and its importance in the industry. 22
  • 23. Why do we need ODBC? Assume you want to access data stored in Oracle from a program written in Visual Basic. For this, you use a set of functions supplied by Oracle called as APIs (also called as Oracle Call Interface (OCI)) to access Oracle database. In the same way each database vendor supplies a set of functions using which you can access the database. But the problem is, each set of functions is different from others. That means if you want to access Oracle using OCI, you have to learn how to use these functions. But tomorrow if you have to access Sybase, you have to use functions provided by Sybase to access its database. That not only makes the life of programmer tough (as he has to learn a new set of functions again), it also necessitates great amount of changes to your programs. In brief, each DBMS provides its own set of functions to access its database. So your program becomes database dependent. That means a change in the type of database (say from Sybase to Oracle) needs the program to be modified to a larger extent. How does ODBC Function? To understand how does ODBC function, please have a look at figure 18.2 . Each database vendor provides a program called as ODBC driver, which takes standard ODBC calls and translates them into the language the database can understand. So the application uses ODBC calls (called as ODBC API) either directly or indirectly (for example RDOs calling required ODBC calls) to access the database. And these ODBC calls are translated by ODBC driver of the specific database to the required native language. As a result the program uses the same ODBC calls irrespective of the database it is accessing and the ODBC driver takes care of converting the standard calls to the native calls. First of all, each database vendor, such as Oracle corporation, Microsoft , IBM and so on, provides ODBC driver for its database. Remember if you do not have ODBC driver you cannot access the database using ODBC interface. It should also be noted, that there are some third party ODBC drivers. There are companies that are specialized in creating ODBC drivers, for example Intersolv. Figure 18.2: Components related to ODBC. You have to load ODBC drivers for database that you need to access. For example, if you want to access Oracle, you need to load ODBC driver for Oracle. When you load ODBC driver, Windows OS stores the details of the driver in System Registry (a part of Windows where important information is stored). ODBC driver manager which is a part of Windows OS loads the required ODBC driver and passes the calls to driver and takes results from driver and pass the result to Application. ODBC driver manager comes to know about the driver to be used and the database to be accessed through using Data source name (DSN) used by the application program. 23
  • 24. ActiveX Data Objects(ADO) DO is another data access method. ADO data model has a collection of objects using which you can access and manipulate any database that is based on OLEDB interface (more about it later). ADO model is simple. It has fewest objects in its object model. ADO is the data model for databases that are accessed using OLEDB interface, where as RDO is the data model for databases that are accessed using ODBC interface. What is OLEDB (OLE Database)? OLEDB is an entirely new method to connect to databases. OLEDB is replacing ODBC. OLEDB provides flexibility and ease of use than ODBC. OLEDB was designed to allow access to data of various formats. That means the data need not be in the form of a relation database and accessed using SQL. OLEDB needs a provider, which is a program that can sit between the application and the database (something like an ODBC driver). So when you want to access a database using OLEDB interface, you have to make sure that you have OLEDB provider for that database. Microsoft has provided the following OLEDB providers. Microsoft OLE DB provider for ODBC drivers Microsoft Jet 3.51 OLEDB provider Microsoft OLE DB provider for Oracle Microsoft OLE DB provider for SQL Server Microsoft OLE DB provider for Directory Services Figure 19.1: OLEDB interface. ActiveX Data Object Model This is a collection of objects that is used to access the database using OLEDB as the underlying interface. ADOs are simple compared with DAO and RDO. ActiveX Data Objects allow you to access only data and not the schema (table definitions, column definitions etc). As the result it has very few objects in it object model. The following are the objects in ActiveX data object model. Object What it does? 24
  • 25. Connection Allows you to connect to the database. Command Is used to execute commands that are supported by the database. RecordSet Contains the collection of records retrieved by executing a query. Table 19.1: Important objects in ADO data model. There are some more objects in the object model of ADO. But the three objects mentioned above are the most important objects. Connection Object Connection object allows the application to connect to the database. It represents an open connection to the data source. To establish a connection with a particular database, you have to set the ConnectionString property to the required string, which specifies the OLEDB provider to be used and the data source to be accessed. CursorLocation Property Determines the location where cursor is managed. Constant Description AdUseNone No cursor services are used. (This constant is obsolete and appears solely for the sake of backward compatibility.) AdUseClient Uses client-side cursors supplied by a local cursor library. Local cursor engines will often allow many features that driver-supplied cursors may not, so using this setting may provide an advantage with respect to features that will be enabled. For backward compatibility, the synonym adUseClientBatch is also supported. Using ActiveX Data Control We have used data control, which is a control in standard set of controls. Now we will use an ActiveX control called as ActiveX Data Control, which uses ADOs to access a database for which we have an OLEDB provider. Here are the steps to display the details of publishers taken from biblio.mdb. 25
  • 26. 1. Start a new project using File->New Project and select Standard Exe as the type of the project. 2. Load Microsoft ADO Data Control 6.0 (OLEDB) into project using Project->Components option and check the above mentioned ActiveX control. 3. Place ADODC (ActiveX data objects data control) on the form. 4. Select ADODC properties options from popup menu of the ADODC control. 5. This brings up property pages of ADODC. 6. Click on Build button in Use Connection String radio button. 7. ADODC displays Data Link Properties windows. 8. Make sure Provider tab is selected and select Microsoft jet 3.51 OLEDB Provider (figure19.3) 9. Then click on Connection tab (figure 19.4) 10. Click on three dots and select the name of data file that you want to access. 11. At this stage you can test your connection to the database by clicking on Test Connection button. 12. Advanced tab mainly deals with access permissions, and All tabs displays the entire information. 13. Click on Ok in Data Link Properties window to close it and come back to property pages of activex data control. 14. At this stage you should see connect string created by Visual Basic placed in Use connection String option button. 15. Now select RecordSource tab and adCmdTable from the type of the command dropdown list box. 16. Click on down arrow for the next combo box and from the list of valid tables select Authors tables (shown in figure 19.5) 17. Click on Ok to close property pages. 18. Place three textboxes on the form and corresponding labels. Change the properties of these controls as follows. Control Property Value Text1 Datasource Adodc1 Datafield Au_id Name txtauid Text2 Datasource Adodc1 Datafield Author Name txtauthor Text3 Datasource Adodc1 Datafield Year born Name Txtyb 19. Change remaining properties as required. 20. Run the project to get the details of authors into three textboxes. Note: This application is same as the application we developed in “Accessing Data using Data Control” section of chapter 15. But instead of using data control, we have used an ADODC to access the data. And there the underlying objects are Data access object and here the objects are ActiveX Data Objects. 26
  • 27. Acti veX Data Control does the same job as the standard Data Control but in a different way. The fundamental difference is; standard data control is based on ADO and ADODC is based on ADO & OLEDB. And there are different set of events and properties for ADODC. Figure 19.2: General Property Page of ADODC. Figure 19.3: List of Providers. Properties of ADODC The following are properties that are specific to ADODC. Property Meaning BOFAction Specifies the action to be taken when record pointer reaches beginning of the underlying Recordset. CacheSize Specifies the number of records to be kept in the memory. Caption The message to be displayed on the control. Commandtimeout Specifies the amount of time to wait for the command to return. Time is specified in seconds. Default is 30. Commandtype Specifies the type of command. Valid options are, adcmdUnKnown, adCmdText, adCmdTable, and adCmdStoredProc. ConnectionString Contains the information required to connect to the database. ConnectionTimeou The number of seconds to wait before aborting connection. This is 27
  • 28. t specified in seconds. Default is 15. CursorLocation Sepecifies whether client-side or server-side cursors are used. Default is adUseClient – client side cursor. CursorType Specifies which type of cursor is to be used. Default is adOpenStatic. EOFAction Indicates the action to be taken when record pointer reaches end of the recordset. LockType Specifies the type of lock to be used. The default is adLockOptimistic. Maxrecords Specifies the number of records retrieved at the time of opening the underlying recordset. Mode Specifies in which mode the recordset is to be opened. The mode of recordset determines what operations other users can perform on the Recordset. Orientation Whether to display recordset vertically or horizontally. Password Password of the user currently connected. RecordSource The name of the table or stored procedure or SELECT command that supplies data. Username Name of the user currently connected. Table 19.6: Properties of ADODC. Figure 19.4: Connection attributes. Figure 19.5: Record Source attributes. Events of ADODC 28
  • 29. The events of ADODC can be divided into two main groups. One group contains events that occur before the operation is performed (WillMove) and another group contains events, which occur after the operation is completed (MoveComplete). Will events which will occur before the action takes place and gives you an opportunity to cancel the operation that is about to take place using cancel parameter. See the example later. The following are the events that are specific to ADODC. Event When it occurs? Fetchprogress Periodically during a lengthy fetch operation. FetchComplete After all records of the recordset are fetched. WillMove Before record pointer moves from one record to another record. Movecomplete After record pointer has moved from one row to another. EndOfRecordset When record pointer has moved past the last record. WillchangeRecordset Before a change is made to recordset. RecordsetChangeComplete After change is made to recordset. WillchangeRecord Before the changes of the current record are sent to database. RecordChangeComplete After the record in the data source is modified with the data in the recordset. WillChangeField Before the current fields in the recordset is updated. FieldChangeComplete After the current field is updated. Table 19.7: Events of ADODC. 29
  • 30. What is difference between ActiveX DLL and ActiveX EXE ActiveX DLLs and ActiveX EXEs are almost exactly the same in the ways they are built and used. In both cases, you build one or more classes that applications can use to do something. The big difference lies in where they are used. An ActiveX DLL's code is executed within the main program's address space. It behaves as if the class was created within the main program's code. Because the code lies inside the program's address space, calling methods is very fast. An ActiveX EXE's code is run in a separate process. When the main program calls an ActiveX EXE's method, the system marshalls the call to translate the parameters into the ActiveX EXE's address space, calls the method, translates the results back into the main program's address space, and returns the result. This is slower than running an ActiveX DLL's method inside the main program's address space. Because of the difference in speed, an ActiveX DLL is almost always preferable. The reason ActiveX EXEs are useful is they can run on a different computer than the main program while an ActiveX DLL must run on the same computer as the main program. What is ActiveX and Types of ActiveX Components in VB? The main term here is ActiveX component. The remaining things i.e. ActiveX control, ActiveX Exe and ActiveX Dll are three different kinds of ActiveX components. ActiveX Dll and ActiveX Exe are code components that are not integrated in the VB IDE like the ActiveX control, so that u cant put any instances of those code components by double clicking or drag-dropping those on ur form. Rather these code components expose their functionality by methods and properties, that u can change/access through only ur code. More precisely code components are classes that must be accessed through a properly declared object variable and they dont have a visible interface. Now ActiveX Exe and ActiveX dll are different from each other in how they get instantiated with the client application. 1.Standard EXE. 2.ActiveX EXE. 3.ActiveX DLL. 4.ActiveX document. 5.ActiveX Control. 6.Project Group. 30