Error 3021, no current record has been found, Query data from Access to Excel -
i'm writing function in excel vba called extract data access database, i'm using ado connection. function get_g_gtop has parameters defined bellow. now, try use command object value recordset, however, got error message 3021 : either bof or eof true, or current record has been deleted. requested operations requires current record. debug points line : get_g_gtop = rst.fields(0).value.
is there wrong sql statement query in access? advice highly appreciate!
bing
function get_g_gtop(byval vehtype string, byval speed single) variant
dim dbfilepath string dbfilepath = "c:\users\sevenice\desktop\em database.accdb" set cnn = new adodb.connection cnn.open "provider= microsoft.ace.oledb.12.0;" & " data source=" & dbfilepath & ";" & "persist security info =false;" 'set rst = new adodb.recordset set cmd = new adodb.command cmd.activeconnection = cnn 'dim querystr string dim s single if strcomp(vehtype, "ldv") * strcomp(vehtype, "ldt") * strcomp(vehtype, "lhd<=14k") * strcomp(vehtype, "lhd<=19.5k") = 0 s = 35.6 'querystr = "select [g/gtop] [em database].[n (t) data] [vehicle category]= "" & vehtype & "" , s = 35.6 " & " , [speed lower] <= " & speed & " , [speed upper] >= " & speed & ";" cmd.commandtext = "select [g/gtop] [em database].[n (t) data] [vehicle category]= "" & vehtype & "" , s = 35.6 " & " , [speed lower] <= " & speed & " , [speed upper] >= " & speed & ";" 'rst.open querystr, cnn set rst = cmd.execute get_g_gtop = rst.fields(0).value elseif strcomp(vehtype, "mhd") * strcomp(vehtype, "hhd") * strcomp(vehtype, "urban bus") = 0 s = 26.7 querystr = "select [g/gtop] [em database].[n (t) data] [vehicle category]=" & vehtype & " , s = 26.7 " & " , [speed lower] <= " & speed & " , [speed upper] >=" & speed & ";" rst.open querystr, cnn get_g_gtop = rst.fields(0).value end if
end function
after open recordset (set rst = cmd.execute
) have check whether contains data, before try access data, example:
if not rst.eof 'do stuff data end if
the error receiving indicates not geting records select-statement. check suggested hansup.
Comments
Post a Comment