Ik heb een COM component in C# geschreven welke een recordset moet vullen voor de ASP client. Nu krijg ik het toch niet voor mekaar om een recordset out (dus byvalue) door te geven. Hoe doe ik da?
En dan de aanroep in ASP
Bovenstaande code voor .NET werkt... haalt in beide gevallen (ref/out) het juiste record op, maar in ASP krijg ik het niet voor mekaar.
Error Type:
Microsoft VBScript runtime (0x800A0005)
Invalid procedure call or argument: 'GetPersonData2'
/dtb/db_GetPersonData.asp, line 7
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
| public bool GetPersonData2(out Recordset rcsData, int intId)
{
Persons prsPerson = new Persons();
DataTable dtblPrsDat = new DataTable();
try
{
// Set prim key prop
prsPerson.Id = (SqlInt32)intId;
// Fetch data based upon prim key prop
dtblPrsDat = prsPerson.SelectOne();
// Check if person exist by checking result from sproc
if (dtblPrsDat.Rows.Count < 1)
throw new Exception("Persoon niet gevonden");
// Wrap our DataTable object in a recordset and pass back to caller
rcsData = ((ADODB.Recordset)Wrapper.CreateADODBRecordSet(dtblPrsDat)).Clone(ADODB.LockTypeEnum.adLockOptimistic);
return true;
}
catch (Exception exError)
{
throw new Exception("Oce.DTB.BLL::GetPersonData::Error occured. " + exError.Message);
}
}
private void Button2_Click(object sender, System.EventArgs e)
{
ADODB.Recordset rcs = new ADODB.Recordset();
Oce.DTB.BLL.PersonsManager obj = new Oce.DTB.BLL.PersonsManager();
obj.GetPersonData2(out rcs, 13);
Page.Response.Write((string)rcs.Fields["firstname"].Value);
} |
En dan de aanroep in ASP
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| <%
Dim objPrsMng
Dim rcsPrsDat
Set objPrsMng = Server.CreateObject("Oce.DTB.BLL.PersonsManager")
Set rcsPrsDat = Server.CreateObject("ADODB.Recordset")
test = objPrsMng.GetPersonData2(rcsPrsDat, 13)
Response.Write Cstr(rcsPrsDat.Fields("firstname").Value)
Set rcsPrsDat = Nothing
Set objPrsMng = Nothing
%> |
Bovenstaande code voor .NET werkt... haalt in beide gevallen (ref/out) het juiste record op, maar in ASP krijg ik het niet voor mekaar.
Error Type:
Microsoft VBScript runtime (0x800A0005)
Invalid procedure call or argument: 'GetPersonData2'
/dtb/db_GetPersonData.asp, line 7