473,835 Members | 1,663 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Reading records into Crystal Report for export as Excel?

Hi all,

I need some help -- I'm working with an A2K database, using DAO, and
am trying to read records into a Crystal Report and then export it to
a folder on our network as an Excel spreadsheet. I'm having trouble
with my code at the point at which it hits ".ReadRecor ds" -- the
module just runs and runs without generating anything. I've gotten
this code to correctly save .rpt files without any data, but not with
data, nor have I been able to export to Excel. Can anyone see what
I'm not doing right? Below is my code with extraneous stuff taken
out.

Thanks so much for any help.
Robin

~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~ ~~~~~~~~
Option Compare Database
Option Explicit
Public appl As New CRAXDRT.Applica tion
Public db As DAO.Database
Public rst1 As DAO.Recordset
Public rst2 As DAO.Recordset
Public rst3 As DAO.Recordset
Public rpt As New CRAXDRT.Report
~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~ ~~~~~~~~
Sub AutoGenerateRep orts()
Dim strSelectionFor mula As String
Dim strParameter As String
Dim strNames As String
Dim datBeginDate As Date
Dim datEndDate As Date
Dim strReportToRun As String
Dim strReportDestin ation As String
Dim strThisWeeksRep ort As String
Dim rst As DAO.Recordset
Dim strAllRptOwners As String
Dim LastSwipe As Date
Dim strReportData As String

On Error GoTo ErrorHandler

Set appl = CreateObject("C rystalRuntime.A pplication")
Set db = CurrentDb
Set rst1 = db.OpenRecordse t("tblautogenre ports", dbOpenDynaset)
Set rst2 = db.OpenRecordse t("qry_autogenr ptsnames", dbOpenDynaset)

'set recordset for report
strReportData = "SELECT EvnLog.Loc, EvnLog.Dev, EvnLog.TimeDate ,
EvnLog.Code, EvnLog.LName, EvnLog.FName, DEV.TNA, EvnLog.Event,
EvnLog.IOName, Evn.Event " & _
"FROM (Evn INNER JOIN EvnLog ON Evn.Event =
EvnLog.Event) INNER JOIN DEV ON EvnLog.Dev = DEV.Device WHERE " &
strSelectionFor mula & ";"
strReportData = Replace(strRepo rtData, "{", "")
strReportData = Replace(strRepo rtData, "}", "")

Set rst3 = db.OpenRecordse t(strReportData )

' open report and supply parameters, data, and then export as Excel to
file
Set rpt = appl.OpenReport ("c:\TestingAut oGenRpts\TimeAt tendanceRpt_Qry
- 05-13-04.rpt")
With rpt
.DiscardSavedDa ta
.FormulaFields( 11).Text = "'" & strReportToRun & "'"
.FormulaFields( 9).Text = "'" & strNames & "'"
.FormulaFields( 13).Text = "#" & datBeginDate & "#"
.RecordSelectio nFormula = strSelectionFor mula
.Database.SetDa taSource rst3
.Database.Verif y
.ReadRecords 'THIS IS WHERE IT HANGS
.ExportOptions. DestinationType = crEDTDiskFile
.ExportOptions. FormatType = crEFTExcel80
.ExportOptions. DiskFileName = strReportDestin ation & "\" &
strThisWeeksRep ort & ".xls"
.Export True
End With
Nov 12 '05 #1
6 13149
It's a lot easier to just push an ADO recordset at your crystal report than
to do this.

Essentially you
create an ADO recordset which contains the records you need

then
With rpt
.DiscardSavedDa ta
.Database.SetDa taSource rst3, 3
'... do the excel bit here

and that's it

--
Terry Kreft
MVP Microsoft Access
"Robin Cushman" <ro******@earth link.net> wrote in message
news:6a******** *************** ***@posting.goo gle.com...
Hi all,

I need some help -- I'm working with an A2K database, using DAO, and
am trying to read records into a Crystal Report and then export it to
a folder on our network as an Excel spreadsheet. I'm having trouble
with my code at the point at which it hits ".ReadRecor ds" -- the
module just runs and runs without generating anything. I've gotten
this code to correctly save .rpt files without any data, but not with
data, nor have I been able to export to Excel. Can anyone see what
I'm not doing right? Below is my code with extraneous stuff taken
out.

Thanks so much for any help.
Robin

~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~ ~~~~~~~~
Option Compare Database
Option Explicit
Public appl As New CRAXDRT.Applica tion
Public db As DAO.Database
Public rst1 As DAO.Recordset
Public rst2 As DAO.Recordset
Public rst3 As DAO.Recordset
Public rpt As New CRAXDRT.Report
~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~ ~~~~~~~~
Sub AutoGenerateRep orts()
Dim strSelectionFor mula As String
Dim strParameter As String
Dim strNames As String
Dim datBeginDate As Date
Dim datEndDate As Date
Dim strReportToRun As String
Dim strReportDestin ation As String
Dim strThisWeeksRep ort As String
Dim rst As DAO.Recordset
Dim strAllRptOwners As String
Dim LastSwipe As Date
Dim strReportData As String

On Error GoTo ErrorHandler

Set appl = CreateObject("C rystalRuntime.A pplication")
Set db = CurrentDb
Set rst1 = db.OpenRecordse t("tblautogenre ports", dbOpenDynaset)
Set rst2 = db.OpenRecordse t("qry_autogenr ptsnames", dbOpenDynaset)

'set recordset for report
strReportData = "SELECT EvnLog.Loc, EvnLog.Dev, EvnLog.TimeDate ,
EvnLog.Code, EvnLog.LName, EvnLog.FName, DEV.TNA, EvnLog.Event,
EvnLog.IOName, Evn.Event " & _
"FROM (Evn INNER JOIN EvnLog ON Evn.Event =
EvnLog.Event) INNER JOIN DEV ON EvnLog.Dev = DEV.Device WHERE " &
strSelectionFor mula & ";"
strReportData = Replace(strRepo rtData, "{", "")
strReportData = Replace(strRepo rtData, "}", "")

Set rst3 = db.OpenRecordse t(strReportData )

' open report and supply parameters, data, and then export as Excel to
file
Set rpt = appl.OpenReport ("c:\TestingAut oGenRpts\TimeAt tendanceRpt_Qry
- 05-13-04.rpt")
With rpt
.DiscardSavedDa ta
.FormulaFields( 11).Text = "'" & strReportToRun & "'"
.FormulaFields( 9).Text = "'" & strNames & "'"
.FormulaFields( 13).Text = "#" & datBeginDate & "#"
.RecordSelectio nFormula = strSelectionFor mula
.Database.SetDa taSource rst3
.Database.Verif y
.ReadRecords 'THIS IS WHERE IT HANGS
.ExportOptions. DestinationType = crEDTDiskFile
.ExportOptions. FormatType = crEFTExcel80
.ExportOptions. DiskFileName = strReportDestin ation & "\" &
strThisWeeksRep ort & ".xls"
.Export True
End With

Nov 12 '05 #2
Thanks so much for your advice Terry. I went back and re-did things
in ADO and for some reason am still having problems. (I'm using A2K,
VBA, ADO, Crystal 9) Below is (hopefully all of) the code that needs
to be analyzed. Basically I can get the code to export an Excel file,
but the file size is 0 KB, and I get an error message when I open it –
"Unable to open file." Well, I _can_ open it, but there's nothing
inside – no headers or footers much less details, and my code keeps
running and running. My database does consist of about 20,000
records, but the code kind of hangs – I can hear that it's not
processing.

I can get the code to save a report file with the record source set
properly so that when I do bring up the report I get good data, but I
just can't get the report to associate the data with it and then
export the whole thing to Excel.

Between books and newsgroup postings I've been looking at several
possible sources of the problem. If anyone has any suggestions for
places to look for code for working with Crystal (other than here),
I'd appreciate hearing about them…

(1) I guess I should assume that since I dimmed both my recordset and
report as Public that I'm not having scope problems and therefore
don't need ".ReadRecor ds" – right? What does one use
".Database.Veri fy" for?
(2) Should I be using ".AddADOCommand " rather than ".SetDataSource "?
(3) I checked and do have what I believe are the right U2F*.dlls and
U2D*.dlls – could I be missing others?
(4) I eventually need to plug in the proper ".ExportOptions " to export
but am just using ".Export True" at this point to eliminate possible
places for things to go wrong.
(5) I've read in places that this might be a timing issue – could that
be the problem here?

Thanks again for any help on this.

~~~~~~~~~~~~~~~ ~~~~~~~~~~~

Set rpt = appl.OpenReport ("c:\TestingAut oGenRpts\TimeAt tendanceRpt_Qry
- 05-13-04.rpt")

With rpt
.DiscardSavedDa ta
.Database.SetDa taSource rst3, 3
.Export True
End With

~~~~~~~~~~~~~~~ ~~~~~~~~~~

Thanks again!!

"Terry Kreft" <te*********@mp s.co.uk> wrote in message news:<o4******* *************@k aroo.co.uk>...
It's a lot easier to just push an ADO recordset at your crystal report than
to do this.

Essentially you
create an ADO recordset which contains the records you need

then
With rpt
.DiscardSavedDa ta
.Database.SetDa taSource rst3, 3
'... do the excel bit here

and that's it

--
Terry Kreft
MVP Microsoft Access

Nov 12 '05 #3
Robin,
Here is the whole of the code which I have used to achieve what you want
(this is using CR9, and A2k running from the Access database).

' ********** Code Start **********
Sub AutoGenerateRep orts()
Dim appl As New CRAXDRT.Applica tion
Dim rst1 As ADODB.Recordset
Dim rpt As New CRAXDRT.Report

Const REP_DATA = "SELECT * FROM Table3"
Const REP_NAME = "C:\Delme CR\test.rpt"

Set appl = CreateObject("C rystalRuntime.A pplication")

Set rst1 = CurrentProject. Connection.Exec ute(REP_DATA)
Set rpt = appl.OpenReport (REP_NAME)

With rpt
.DiscardSavedDa ta
.Database.SetDa taSource rst1, 3
.Export True
End With

rst1.Close
Set rst1 = Nothing
Set rpt = Nothing
Set appl = Nothing
End Sub

' ********** Code End **********

Try starting with this code as template and then work up. If the code above
doesn't work then there must be something else going on.

The most obvious thing to look for is that the field names in your recordset
match the ones used when creating the report.

--
Terry Kreft
MVP Microsoft Access
"Robin Cushman" <ro******@earth link.net> wrote in message
news:6a******** *************** **@posting.goog le.com...
Thanks so much for your advice Terry. I went back and re-did things
in ADO and for some reason am still having problems. (I'm using A2K,
VBA, ADO, Crystal 9) Below is (hopefully all of) the code that needs
to be analyzed. Basically I can get the code to export an Excel file,
but the file size is 0 KB, and I get an error message when I open it -
"Unable to open file." Well, I _can_ open it, but there's nothing
inside - no headers or footers much less details, and my code keeps
running and running. My database does consist of about 20,000
records, but the code kind of hangs - I can hear that it's not
processing.

I can get the code to save a report file with the record source set
properly so that when I do bring up the report I get good data, but I
just can't get the report to associate the data with it and then
export the whole thing to Excel.

Between books and newsgroup postings I've been looking at several
possible sources of the problem. If anyone has any suggestions for
places to look for code for working with Crystal (other than here),
I'd appreciate hearing about them.

(1) I guess I should assume that since I dimmed both my recordset and
report as Public that I'm not having scope problems and therefore
don't need ".ReadRecor ds" - right? What does one use
".Database.Veri fy" for?
(2) Should I be using ".AddADOCommand " rather than ".SetDataSource "?
(3) I checked and do have what I believe are the right U2F*.dlls and
U2D*.dlls - could I be missing others?
(4) I eventually need to plug in the proper ".ExportOptions " to export
but am just using ".Export True" at this point to eliminate possible
places for things to go wrong.
(5) I've read in places that this might be a timing issue - could that
be the problem here?

Thanks again for any help on this.

~~~~~~~~~~~~~~~ ~~~~~~~~~~~

Set rpt = appl.OpenReport ("c:\TestingAut oGenRpts\TimeAt tendanceRpt_Qry
- 05-13-04.rpt")

With rpt
.DiscardSavedDa ta
.Database.SetDa taSource rst3, 3
.Export True
End With

~~~~~~~~~~~~~~~ ~~~~~~~~~~

Thanks again!!

"Terry Kreft" <te*********@mp s.co.uk> wrote in message

news:<o4******* *************@k aroo.co.uk>...
It's a lot easier to just push an ADO recordset at your crystal report than to do this.

Essentially you
create an ADO recordset which contains the records you need

then
With rpt
.DiscardSavedDa ta
.Database.SetDa taSource rst3, 3
'... do the excel bit here

and that's it

--
Terry Kreft
MVP Microsoft Access

Nov 12 '05 #4
You're a lifesaver! Thanks so much, this was just what I needed. I
created a separate module, copied your code in and substituted my
query and report name, and tried to generate a PDF (for simplicity's
sake). Exactly the same thing happened -- I got essentially a blank
PDF with an error upon opening it, and my code ran for 10 minutes
(which is much too long) before I stopped it. Now I know my code
probably wasn't the problem, which is a big relief. It hangs at the
".Export True" line.

Could it be that I don't have something selected in Tools/References
that I should? Here's what I've got currently:

* Visual Basic for Applications
* MS Access 11.0 Object Library
* OLE Automation
* Crystal Report Export 9
* Crystal Report 9 ActiveX Designer Run-Time Library
* Crystal Report 9 Library
* Crystal Report Common Object Model Library 2.0
* MS ActiveX Data Objects 2.5 Library
* MS ADO Ext. 2.6 for DDL and Security
* MS Jet & Replication Objects 2.6 Library

I'm running Office2003/Access 2003 on Windows 2000 Professional,
creating databases in Access 2000 format. Can you/anyone see here
what, if anything I might be missing? If a missing library isn't the
problem, what else might be?

Thanks a million again.
Robin


"Terry Kreft" <te*********@mp s.co.uk> wrote in message news:<r_******* *************@k aroo.co.uk>...
Robin,
Here is the whole of the code which I have used to achieve what you want
(this is using CR9, and A2k running from the Access database).

' ********** Code Start **********
Sub AutoGenerateRep orts()
Dim appl As New CRAXDRT.Applica tion
Dim rst1 As ADODB.Recordset
Dim rpt As New CRAXDRT.Report

Const REP_DATA = "SELECT * FROM Table3"
Const REP_NAME = "C:\Delme CR\test.rpt"

Set appl = CreateObject("C rystalRuntime.A pplication")

Set rst1 = CurrentProject. Connection.Exec ute(REP_DATA)
Set rpt = appl.OpenReport (REP_NAME)

With rpt
.DiscardSavedDa ta
.Database.SetDa taSource rst1, 3
.Export True
End With

rst1.Close
Set rst1 = Nothing
Set rpt = Nothing
Set appl = Nothing
End Sub

' ********** Code End **********

Try starting with this code as template and then work up. If the code above
doesn't work then there must be something else going on.

The most obvious thing to look for is that the field names in your recordset
match the ones used when creating the report.

--
Terry Kreft
MVP Microsoft Access

Nov 12 '05 #5
Nor does it seem to matter whether I set up the report with an
"Access/Excel (DAO)" connection or a "Database Files" connection to
the data...


"Terry Kreft" <te*********@mp s.co.uk> wrote in message news:<r_******* *************@k aroo.co.uk>...
Robin,
Here is the whole of the code which I have used to achieve what you want
(this is using CR9, and A2k running from the Access database).

Nov 12 '05 #6
Robin,
I've tested this in Access2000 and Access2003 (A2k format) on Win2000
Professional and it works in both cases. The references I have are as
follows.

Visual Basic For Applications
Microsoft Access 9.0 Object Library (or Microsoft Access 11.0 Object
Library)
OLE Automation
Microsoft ActiveX Data Objects 2.1 Library
Microsoft DAO 3.6 Object Library
Crystal reports 9 ActiveX Designer Run Time Library

The most likely reason why it doesn't work is that a dll is not properly
registered.

Start with the craxdrt9 dll and run through them registering them using
regsvr32. If you still have a problem try reinstalling Crystal.

--
Terry Kreft
MVP Microsoft Access
"Robin Cushman" <ro******@earth link.net> wrote in message
news:6a******** *************** **@posting.goog le.com...
You're a lifesaver! Thanks so much, this was just what I needed. I
created a separate module, copied your code in and substituted my
query and report name, and tried to generate a PDF (for simplicity's
sake). Exactly the same thing happened -- I got essentially a blank
PDF with an error upon opening it, and my code ran for 10 minutes
(which is much too long) before I stopped it. Now I know my code
probably wasn't the problem, which is a big relief. It hangs at the
".Export True" line.

Could it be that I don't have something selected in Tools/References
that I should? Here's what I've got currently:

* Visual Basic for Applications
* MS Access 11.0 Object Library
* OLE Automation
* Crystal Report Export 9
* Crystal Report 9 ActiveX Designer Run-Time Library
* Crystal Report 9 Library
* Crystal Report Common Object Model Library 2.0
* MS ActiveX Data Objects 2.5 Library
* MS ADO Ext. 2.6 for DDL and Security
* MS Jet & Replication Objects 2.6 Library

I'm running Office2003/Access 2003 on Windows 2000 Professional,
creating databases in Access 2000 format. Can you/anyone see here
what, if anything I might be missing? If a missing library isn't the
problem, what else might be?

Thanks a million again.
Robin


"Terry Kreft" <te*********@mp s.co.uk> wrote in message

news:<r_******* *************@k aroo.co.uk>...
Robin,
Here is the whole of the code which I have used to achieve what you want
(this is using CR9, and A2k running from the Access database).

' ********** Code Start **********
Sub AutoGenerateRep orts()
Dim appl As New CRAXDRT.Applica tion
Dim rst1 As ADODB.Recordset
Dim rpt As New CRAXDRT.Report

Const REP_DATA = "SELECT * FROM Table3"
Const REP_NAME = "C:\Delme CR\test.rpt"

Set appl = CreateObject("C rystalRuntime.A pplication")

Set rst1 = CurrentProject. Connection.Exec ute(REP_DATA)
Set rpt = appl.OpenReport (REP_NAME)

With rpt
.DiscardSavedDa ta
.Database.SetDa taSource rst1, 3
.Export True
End With

rst1.Close
Set rst1 = Nothing
Set rpt = Nothing
Set appl = Nothing
End Sub

' ********** Code End **********

Try starting with this code as template and then work up. If the code above doesn't work then there must be something else going on.

The most obvious thing to look for is that the field names in your recordset match the ones used when creating the report.

--
Terry Kreft
MVP Microsoft Access

Nov 12 '05 #7

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

0
1043
by: John H. | last post by:
Hi all, How to get the displayed report, which created with Crystal Report Net 2003, in to simple text using the Crystal Report Net 2003 classes? Or if export the report in RTF file, how to convert the RTF file format to simple TXT File but I contend the spaces between the texts in any line?
0
1471
by: AnitaM | last post by:
In ASP.NET, I want to create a dataset, input it to a Crystal Report, export the report to a pdf file, & test on my local host. The application runs until I open the pdf file in Acrobat when I get the following message: Acrobat could not open MyReport.pdf.pdf because it is either not a supported file type or because the file has been corrupted (for example it was sent as an email attachment and wasn’t correctly decoded). Does anyone...
2
3345
by: vijaym | last post by:
Hi, Am trying to export a crystal report to word format as a word table. Have tried using borders, tables and lines (in the report) to no avail. Has anybody done this before ? Is it possible. Thanks in advance V
0
1401
by: Anil Kripalani | last post by:
When I export a CR.NET report to Excel I get a blank worksheet on some machines only. I've installed CR .NET 2003 service pack 2 and that makes no difference. Anyone have any ideas? The machine that has the problem is an XP Professional SP2 box. Also, we first run the report to display in the CR viewer and save the ReportDocument to the Cache, and retrieve from there before exporting to Excel - I don't think that is the problem as the...
2
2452
by: Pinku | last post by:
Hello guy, I have a problem with Crystal Report. In my report I would use a box with rounded corner, so i put it into the designer and all works fine, but, when i try to export the report to PDF the box became a normal box without rounded corner, why this? is this a limitations? thanks
0
1175
by: Lyners | last post by:
I am using VS.NET 2003/ASP/VB. I have a crystal report that I can output to an Excel File from my ASP.NET application. My problem is I cannot get it to export in landscape mode like the report is written in Crystal. Is there a way to force the export (when it brings it up) into landscape mode? Thank you, lyners
0
1640
by: Benny Ng | last post by:
Dear ALl, Now I want to export the crystal report to Excel file. But actually don't know how to export it with multiple sheet. Because sometime in some particular cases. It needs us to provided an Excel file with multi-sheet. But seems the crystal report haven't this function . SO , What can I do now? Any suggestion? Thanks,
1
1258
by: mitchbooks | last post by:
I have a .net application that uses Crystal Reports to display reports. When a report is exported to Excel the number fields are transposed to text in Excel requiring the users to format any number columns. Any idea on how I can get the report to retain it's datatype when exporting to Excel? Thanks Mike
4
5953
by: Sep410 | last post by:
Hi all, I have a report in crystal report when I export it to excel each column will be shown in 2 or 3 merged columns!!! The worst part is that sometimes the header of the column is in the A and B columns but the details of this columns are in B and C in excel sheet!!! I don’t want that and I want to have normal excel sheet with the boarders around each cell what should I do? Here is the example of my exported report in excel:...
2
3497
pbala
by: pbala | last post by:
Hi, I need the code for Export to Excel from Crystal Report Viewer in Asp.Net 2003 with vb.net.
0
9802
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look ! Part I. Meaning of...
0
9652
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
1
10558
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
0
10226
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
1
7765
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
6961
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
5802
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
2
3990
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
3
3086
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.