[AccessD] (no subject)

Darren DICK d.dick at uws.edu.au
Mon Sep 6 21:16:16 CDT 2004


Thanks Paul

I really appreciate the advice

Have a great day

Darren



-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Paul Strauss
Sent: Tuesday, 7 September 2004 12:01 PM
To: Access Developers discussion and problem solving
Subject: RE: [AccessD] (no subject)


At 9/6/2004 12:30 AM, you wrote:
>Darren,
>
>I wouldn't set it up like this. Try something like this:
>
>     Dim dbs As dao.Database
>     Dim rstDataToAppend As dao.Recordset
>     Dim rstTableToAppendTo As dao.Recordset
>     Dim strSQLDataForAppend As String
>
>     strSQLDataForAppend = "SELECT .....Whatever...."
>
>
>     Set dbs = CurrentDB()
>     Set rstDataToAppend = dbs.OpenRecordset(strSQLDataForAppend,
>dbOpenDynaset)
>     Set rstTableToAppendTo = 
>dbs.OpenRecordset("tblYourTableToAppendTo",
>dbOpenDynaset)
>    ...snip...

Any time you can do table manipulations with SQL, rather that DAO, you 
should choose SQL. DAO is much slower than doing it with SQL. Sure, there 
are times when only DAO will do, so I am not saying never, but I would 
always strive to use SQL.

If the task at hand is to eat a handful of M&M's, there are two ways to do 
it 1) one-by-one and 2) shove them all in your mouth and chew. Access can 
chew up the mouthful and swallow it much faster than it can eat them one at 
a time. That's just the way it has been built and optimized.

>A good idea is to also check whether the recordset has any data before 
>hand, otheriwse this will throw up an error. ...snip...

I agree it a good idea. I've never seemed to need to append from one table 
to another using a Select inside the Insert, so I am not sure what would 
happen if the Select didn't return any rows. If it returns a trappable 
error, then I'd just attempt the Insert and handle this case in the error 
handler. That would be the fastest way to do it. If a trappable error isn't 
returned, then opening a recordset with  "Select Count(*) ..." and checking 
that at least one row is returned before doing the Insert would still be 
faster than doing it the DAO way in a loop. It may also be the case that 
nothing harmful happens (it is a null operation) and so you don't have to 
worry. But since you want to do it, and I don't, I'll let you figure out as 
a "homework" assignment what happens :). Unless I were sure that I always 
had something to append, I'd lose a good bit a sleep wondering if this 
would cause my program to blow up. Since I need my sleep, I'd test it.


Regards,
Paul Strauss


----------
-- 
_______________________________________________
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com




More information about the AccessD mailing list