Max Wanadoo
max.wanadoo at gmail.com
Mon Mar 9 16:00:40 CDT 2009
OK, here are the results for 10,000 records SQL Insert Test 00:00:11 DAO AddNew Test 00:00:00 DAO AddNew Test2 00:00:17 SQl Parameters 00:00:03 Again, DAO.addnew was too fast to record even 1 second... But the new options form Shamil was second best with just 3 seconds. Max Ps. Thanks for that Shamil. Your Ladder is still in place.. -----Original Message----- From: accessd-bounces at databaseadvisors.com [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Salakhetdinov Shamil Sent: 09 March 2009 20:39 To: Access Developers discussion and problem solving Subject: Re: [AccessD] Fastest - DAO or Sql Max, It works (Access2007) here with the following SQL/sample code - watch that select doesn't use any table - just copy the below SQL expression into SQL view in your query, remove leading quotes and save it: Public Sub testAppendQuery1() ' 'PARAMETERS [@txtName] Text ( 255 ), [@lngLong] Long; 'INSERT INTO tblAppendTest ( txtName, lngLong ) 'select [@txtName] as txtName, [@lngLong] as lngLong ' Dim conName As String Dim conLong As Long conName = "TEST" conLong = 999 Dim dbs As DAO.Database Dim qdf As DAO.QueryDef Set dbs = CurrentDb Set qdf = dbs.QueryDefs("qAppendTest") qdf.Parameters("@txtName").Value = conName ' error here. qdf.Parameters("@lngLong").Value = conLong qdf.Execute (dbFailOnError) End Sub -- Shamil -----Original Message----- From: "Max Wanadoo" <max.wanadoo at gmail.com> To: "'Access Developers discussion and problem solving'"<accessd at databaseadvisors.com> Date: Mon, 9 Mar 2009 20:10:26 -0000 Subject: Re: [AccessD] Fastest - DAO or Sql > Shamil, > I am not familiar with this construct. > I have set an Append Query up. When I look at the SQL it shows this:- > > PARAMETERS txtName Text ( 255 ), lngLong Long; > INSERT INTO tblAppendTest ( txtName, lngLong ) > SELECT tblAppendTest.txtName, tblAppendTest.lngLong > FROM tblAppendTest; > > I have set module code up as follows: > > Public Sub testAppendQuery() > Dim dbs As DAO.Database > Dim qdf As DAO.QueryDef > Set dbs = CurrentDb > Set qdf = dbs.QueryDefs("qAppendTest") > qdf.Parameters("@txtName").Value = conName ' error here. > qdf.Parameters("@lngLong").Value = conLong > qdf.Execute (dbFailOnError) > End Sub > > But it won't run. Errors out on "Item not found in this collection" > > Max > > > > -----Original Message----- > From: accessd-bounces at databaseadvisors.com > [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Salakhetdinov > Shamil > Sent: 09 March 2009 19:32 > To: Access Developers discussion and problem solving > Subject: Re: [AccessD] Fastest - DAO or Sql > > > Hi Max, > > I mean something like that (watch line wraps): > > Public Sub testAppendQuery() > ' > ' qappShippers append action query has the following > ' parameterized sql: > ' > 'PARAMETERS [@shipperId] Long, [@companyName] Text ( 40 ), [@phone] Text ( > 24 ); > 'INSERT INTO Shippers ( ShipperID, CompanyName, Phone ) > 'SELECT [@shipperId] AS ShipperId, [@companyName] AS CompanyName, [@phone] > AS Phone; > ' > Dim dbs As DAO.Database > Dim qdf As DAO.QueryDef > Set dbs = CurrentDb > Set qdf = dbs.QueryDefs("qappShipper") > qdf.Parameters("@shipperId").Value = 999 > qdf.Parameters("@companyName").Value = "Test Company" > qdf.Parameters("@phone").Value = "1-123-4567890" > qdf.Execute (dbFailOnError) > End Sub > > Tested with Access2007. > > Of course setting AutoNumber value is not necessary. > > Guessing: the above approach could be as fast as .AddNew with querydef's > object variable kept initialized once and then reused on subsequent calls... > > But I can be wrong. > > -- > Shamil > <snip> -- AccessD mailing list AccessD at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/accessd Website: http://www.databaseadvisors.com