描述:
STDMETHODIMP CNDMYSQL::GetRecords(BSTR strSql, VARIANT *rec)
{
int uIsRead = 2;
SAFEARRAY *psa;
SAFEARRAYBOUND rgsabound[1];
CString A="65",B="66";
BSTR bVal[2];
bVal[0] = A.AllocSysString();
bVal[1] = B.AllocSysString();
rgsabound[0].cElements =uIsRead;
rgsabound[0].lLbound = 0;
psa = SafeArrayCreate(VT_UI1,1,rgsabound);
for(long index=0;index<uIsRead;index++)
{
SafeArrayPutElement(psa,&index,&bVal[index]);
}
rec->vt = VT_ARRAY|VT_BSTR;
rec->parray = psa;
}
这样返回的数据在asp中如何使用?
<%
dim strQuestiont,ii
strQuestion = request.form("question")
Set Obj=Server.CreateObject("TE.NDMYSQL")
sAnswer1 = Obj.ConnDB()
Response.Write("sAnswer1=")
Response.Write(sAnswer1)
sAnswer2 = obj.SelectRecord()
Response.Write(sAnswer2)
Response.Write("ii=")
ii = obj.GetRowNum()
Response.Write(ii)
strsql="aa"
aa = obj.GetRecords(strsql)
Response.Write("aa=")//COM中是VT_ARRAY.这边该如何取值?
%>
Response.Write("aa=")//COM中是VT_ARRAY.这边该如何取值?????
不懂啊....
解决方案1:
aa就是VBScript中的数组,可以使用LBound,UBound来判断aa的上下界,用aa[index]访问元素。
解决方案2: 1.//psa = SafeArrayCreate(VT_UI1,1,rgsabound);
psa = SafeArrayCreate(VT_BSTR,1,rgsabound);
2.//SafeArrayPutElement(psa,&index,&bVal[index]);
SafeArrayPutElement(psa,&index,bVal[index]);
3
obj.GetRecords strsql, rec
response.write rec(0)
response.write rec(1)