vbscript - Scriptcontrol object returns recordset object -
i creating library using vbscript , using scriptcontrol object call these routines vba. trying create recordset routine given sql parameter below
sub getdata(sql, byref retrst) stado = "provider=sqloledb.1;persist security info=false;initial catalog=ccmsprod;data source=sv-hfi-ccms;uid=vc;pwd=dw;" cnconn adoconnection set cnconn = createobject("adodb.connection") cnconn.open stado msgbox cnconn.connectionstring msgbox cnconn.state cnconn .commandtimeout = 0 set retrst = .execute(sql) msgbox retrst.recordcount end cnconn.close end sub and calling routine below
scr.run "getconnection", tempload, rst but recordset returns nothing, eventhough connection , recordset created within vbscript.
need in this.
there quite few problems script. i'm not going go in each 1 aware recordset open call has more parameters. aren't required defaults adforwardonly cursor type, , adlockreadonly locking. using defaults not enable record count recordset code provide shows value of first record in recordset indicate data retrieved.
the code below works you'll need modify usage. batch file run script:
getrecordset.bat
cscript.exe /nologo getrecordset.vbs pause script run:
getrecordset.vbs
dim objadorecordset dim strdbtablename on error resume next '*****modify below table name in database***** strdbtablename = "somedbtablename" set objadorecordset = createobject("adodb.recordset") if err.number = 0 getrecordset "select * " & strdbtablename, objadorecordset objadorecordset if not .bof .movefirst wscript.echo "field 0: " & .fields(0).value else wscript.echo "no records in recordset" end if end else wscript.echo "unable create ado recordset" end if set objadorecordset = nothing wscript.quit '********************************************* sub getrecordset(astrsqlquery, aobjrecordset) dim stroleconnect dim struserid dim struserpw dim objadoconnection on error resume next wscript.echo "sqlquery: " & astrsqlquery stroleconnect = "provider=sqloledb.1;persist security info=false;initial catalog=ccmsprod;data source=sv-hfi-ccms;uid=vc;pwd=dw;" struserid = "vc" struserpw = "dw" set objadoconnection = createobject("adodb.connection") if err.number = 0 objadoconnection.open stroleconnect, struserid, struserpw if err.number = 0 aobjrecordset.open astrsqlquery, objadoconnection if err.number <> 0 wscript.echo "recordset open failed error=" & err.number end if else wscript.echo "connection open failed error=" & err.number end if else wscript.echo "ado connection failed error=" & err.number end if set objadoconnection = nothing end sub i left similar code can understand should create , open ado connection before adorecordset. typically open connection, run of required queries , process them before closing connection. there's no sense in creating new connection same database multiple times different queries same database. adds unnecessary overhead. i'll leave improve code use.
Comments
Post a Comment