What-a-Tool wrote:
What is the proper format for my SQL str using command.execute ? Even
though I know I have matching data in my table, I keep coming up with
a .RecordCount of -1. What am I doing wrong?
Thanks in advance :
'Create a connection object
Set con = Server.CreateOb ject("ADODB.Con nection")
Set rst = Server.CreateOb ject("ADODB.Rec ordset")
Set cmd = Server.CreateOb ject("ADODB.Com mand")
strSQL = "SELECT tblUI.IPAdd FROM tblUI WHERE (tblUI.IPAdd ='?')"
arSPrm = Array(strRemHst )
con.Provider = "Microsoft.Jet. OLEDB.4.0"
con.Open Server.MapPath( "../dbs/vstr.mdb")
cmd.CommandType = 1
cmd.CommandText = strSQL
Set cmd.ActiveConne ction = con
Set rst = cmd.Execute(,ar SPrm)
It's got nothing to do with the use of a Command object. I think Aaron
missed the fact that you are using the Command to pass parameters to your
sql statement when he questioned your use of it.
RecordCount requires the use of an expensive cursor. The default cursor
(adOpenForwardO nly) which your code is usig, is a great, cheap cursor type
which, however, does not support RecordCount. Now some may suggest
specifying a more expensive cursor, either a client-side static cursor, or a
server-side static, keyset, or dynamic cursor. However, there is no need to
do this. Aaron's article makes the good suggestion of using GetRows, which
has several advantages:
1. By getting your data into an array, it allows you to close your recordset
and connection immediately, releasing the connection back to the connection
pool and allowing it to be re-used by the next user instead of requiring a
new connection to be open. Fewer open connections = more scalable
application.
2. Processing the data is more efficient because it can be thousands of
times faster to loop through an array than it is to loop through a recordset
3. It allows you to use Ubound to determine the number of records that were
returned
Bob Barrows
--
Microsoft MVP - ASP/ASP.NET
Please reply to the newsgroup. This email account is my spam trap so I
don't check it very often. If you must reply off-line, then remove the
"NO SPAM"