Counting Access recordset to import to Excel using ADO

S

Spike

I will be grateful if someone will give me the code to determine if when
importing data using ADO from say Access toExcel if a recordset is greater
than 65,536 rows. i appreciate this is not an issue with Excel 2007
 
J

J

Why not just use the 'TOP' predicate regardless??

"Select top 65000 [x] From [y]..."

Note that TOP requires an ORDER BY clause or you'll just get abitary
records.

It's not an issue if less than the specified number of records are
returned, but you will not get any more than you want

Simplistic answer - there are other issues like keeping track of where
you are if you need to import the remainder into another sheet.

Other than that, the recordset will have a RECORDCOUNT property, but not
sure if this accurately reflects the record count just after opening.
Remember DAO where you had to navigate to the lst record before you
could get an an accurate count? I'm sure a quick google should clear
that question up ...

J

Spike:
 
S

Spike

thank you for that, much appreciated. i think i need to play around with it
a bit more. I thought there would be a simple answer so if you found you had
say 250K records so you could import the first say 65K to on e sheet and so
on till they were all imported but it is obviously not as simple as that!
--
with kind regards

Spike


J said:
Why not just use the 'TOP' predicate regardless??

"Select top 65000 [x] From [y]..."

Note that TOP requires an ORDER BY clause or you'll just get abitary
records.

It's not an issue if less than the specified number of records are
returned, but you will not get any more than you want

Simplistic answer - there are other issues like keeping track of where
you are if you need to import the remainder into another sheet.

Other than that, the recordset will have a RECORDCOUNT property, but not
sure if this accurately reflects the record count just after opening.
Remember DAO where you had to navigate to the lst record before you
could get an an accurate count? I'm sure a quick google should clear
that question up ...

J

Spike:
 
S

Spike

think i have answered my own question, if you set the cursor to either
adOpenKeyset of adOpenStatic then you do get a return using "recordcount"
--
with kind regards

Spike


J said:
Why not just use the 'TOP' predicate regardless??

"Select top 65000 [x] From [y]..."

Note that TOP requires an ORDER BY clause or you'll just get abitary
records.

It's not an issue if less than the specified number of records are
returned, but you will not get any more than you want

Simplistic answer - there are other issues like keeping track of where
you are if you need to import the remainder into another sheet.

Other than that, the recordset will have a RECORDCOUNT property, but not
sure if this accurately reflects the record count just after opening.
Remember DAO where you had to navigate to the lst record before you
could get an an accurate count? I'm sure a quick google should clear
that question up ...

J

Spike:
 
J

J

Sorry for the infrequent replies, I'm not around here much.

If you still have issues with this, have a look at the COPYFROMRECORDSET
method of the RANGE object in Excel.

Basically:

Range("A2").CopyFromRecordset rs

This also has an option to limit the number of rows to copy (and columns
if you're interested)

Move to the next sheet. Set the record pointer of the recordset to the
first record to copy and repeat the COPYFROMRECORDSET

Repeat as necessary.

I think that should solve your problem...

J


Spike:
thank you for that, much appreciated. i think i need to play around with it
a bit more. I thought there would be a simple answer so if you found you had
say 250K records so you could import the first say 65K to on e sheet and so
on till they were all imported but it is obviously not as simple as that!
--
with kind regards

Spike


J said:
Why not just use the 'TOP' predicate regardless??

"Select top 65000 [x] From [y]..."

Note that TOP requires an ORDER BY clause or you'll just get abitary
records.

It's not an issue if less than the specified number of records are
returned, but you will not get any more than you want

Simplistic answer - there are other issues like keeping track of where
you are if you need to import the remainder into another sheet.

Other than that, the recordset will have a RECORDCOUNT property, but not
sure if this accurately reflects the record count just after opening.
Remember DAO where you had to navigate to the lst record before you
could get an an accurate count? I'm sure a quick google should clear
that question up ...

J

Spike:
I will be grateful if someone will give me the code to determine
if
when
importing data using ADO from say Access toExcel if a recordset is greater
than 65,536 rows. i appreciate this is not an issue with Excel 2007
 
J

J

Spike,

If this is still an issue, posted more comments on Feb 8th @
21:00hrs... somehow or another is ended up in a seperate thead...

J


Spike:
think i have answered my own question, if you set the cursor to either
adOpenKeyset of adOpenStatic then you do get a return using "recordcount"
--
with kind regards

Spike


J said:
Why not just use the 'TOP' predicate regardless??

"Select top 65000 [x] From [y]..."

Note that TOP requires an ORDER BY clause or you'll just get abitary
records.

It's not an issue if less than the specified number of records are
returned, but you will not get any more than you want

Simplistic answer - there are other issues like keeping track of where
you are if you need to import the remainder into another sheet.

Other than that, the recordset will have a RECORDCOUNT property, but not
sure if this accurately reflects the record count just after opening.
Remember DAO where you had to navigate to the lst record before you
could get an an accurate count? I'm sure a quick google should clear
that question up ...

J

Spike:
I will be grateful if someone will give me the code to determine
if
when
importing data using ADO from say Access toExcel if a recordset is greater
than 65,536 rows. i appreciate this is not an issue with Excel 2007
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top