Any suggestions on how I should handle this?
I was asked to convert a small web application that was written in classic
ASP into ASP.NET.
The original site uses some VBScript to interface with an ActiveX control,
which is contained in a CAB file.
Somehow, I have managed to use the original VBScript in a respective .NET
page, but there are several problems.
First, I need to pass into the VBScript, several .NET Session variables that
I have collected in a previous page for use by the ActiveX. I have
accomplished this by storing the variables in hidden input fields, and then
I retrieve their value from withing the VBScript. But this is such ugly
programming.
Second, in the original VBScript, the ActiveX control returns a string
(called 'Packet' in function 'citcp2_PacketR eceived') and really just stores
in in a variable. I wish to pass that string on to the next page via .NET
Session, but since the last function to execute in the page is the
aforementioned 'citcp2_PacketR eceived', and it's last inst instruction is to
submit, I do not know how to store the returned string into the .NET
Session. Normally, I would call a function from my C# script that would add
the string to the Session, but I don't think I can call a C# funtion form
with the VBScript.
Any suggestions on how I should handle this? Should I or can I convert the
VBScript into VB? I tried changing the language by simply cnging the
language name, but then I get an error that says "Object is expected". I
think it means that the VB script doesn't see the ActiveX control.
In the working VBScript, soSubmit() is called first, then
citcp2_Connecti on(address) fires and calls doSendTrade, and finally
citcp2_PacketRe ceived(Packet,b ytes_in) fires. Here is the script:
<script LANGUAGE="vbscr ipt" CODEPAGE="1252" >
dim bTrade
bTrade = false
function doSubmit()
trade_entry_ver ify.citcp2.Clos eSocket
trade_entry_ver ify.citcp2.Host Address = "IP Adress"
trade_entry_ver ify.citcp2.Port = "PortNum"
Result = trade_entry_ver ify.citcp2.Conn ectToHost
end function
Private Sub citcp2_Connecti on(address)
trade_entry_ver ify.citcp2.Send "~| Demo Screen - V7.0 -DEMO SCREE "
call doSendTrade
End Sub
Private Sub citcp2_PacketRe ceived(Packet,b ytes_in)
trade_entry_ver ify.txtTrade.va lue = Packet
//For testing - get and store packet string in hidden label
trade_entry_ver ify.packetHidde n.value = Packet
//For testing - retrieve and display value from hidden label in HTML
control to ensure proper output
trade_entry_ver ify.txtTrade2.v alue =
trade_entry_ver ify.packetHidde n.value
//Session("strPac ket")=Packet
//now add packet value to session
//HOW??
if bTrade then trade_entry_ver ify.submit
trade_entry_ver ify.citcp2.Clos eSocket
end sub
function doSendTrade()
strTradeType = document.all.tr ansTypeHidden.v alue
strOrderSpec = document.all.or derSpecHidden.v alue
strQty = document.all.qt yHidden.value
strMonth = document.all.mo nthHidden.value
strYear = document.all.ye arHidden.value
strCommodity = document.all.co mmodityHidden.v alue
strCommSymbol = document.all.co mmoditySymbolHi dden.value
strStopPrice = document.all.mo nthHidden.value
strLimitPrice = document.all.tr ansTypeHidden.v alue
strNotes = document.all.co mmoditySymbolHi dden.value
strSymbol = strCommSymbol & strMonth & strYear
sStr = "!NO, " & "D1003-79, " & date() & " @ " & time() & ", " &
strTradeType & ", " & strQty & ", " & strSymbol & ", DAY, " & strOrderSpec
If strOrderSpec = "MARKET" Then
sStr = sStr & ", "
ElseIf strOrderSpec = "STOP" Then
sStr = sStr & ", " & "999"
ElseIf strOrderSpec = "LIMIT" Then
sStr = sStr & ", " & "999"
End If
sStr = sStr & ", , , 0, 0, 0, 0, , Account , AcctNum|"
trade_entry_ver ify.txtTradeReq uest.value = sStr
bTrade = true
trade_entry_ver ify.citcp2.Send sStr
end function
</script>
In the HTML code, the AciveX is embedded as such:
<form name="trade_ent ry_verify" action="trade_e ntry_submit.asp x"
method="post">
<asp:table id="Table1" runat="server" CellPadding="3"
CellSpacing="3" />
<p> </p>
<p>
<input name="Cancel" type="button" id="Cancel" value="Cancel"
onClick="histor y.go(-1)">
<font color="#FFFFFF" >----------------------</font>
<input type="button" value="Place Order" onclick="doSubm it()">
</p>
<INPUT id="txtTradeReq uest" type="text" size="123" name="Text1">
<p>
<TEXTAREA id="txtTrade" name="Textarea1 " rows="2"
cols="120"></TEXTAREA>
<textarea id="txtTrade2" name="textarea" rows="2"
cols="120"></textarea>
</p>
<p> </p>
<OBJECT CLASSID="clsid: 5220cb21-c88d-11cf-b347-00aa00a28331"
id="Microsoft_L icensed_Class_M anager_1_0"1 VIEWASTEXT>
<PARAM NAME="LPKPath" VALUE="BCITCP.l pk">
</OBJECT>
<OBJECT id="CITCP2" height="0" width="0"
classid="clsid: CAC161FD-C2F9-4F0F-95F3-A3D4E5D465CD"
codeBase="BCITC P.CAB#version=1 ,0,0,0" VIEWASTEXT>
<PARAM NAME="_ExtentX" VALUE="873">
<PARAM NAME="_ExtentY" VALUE="847">
</OBJECT>
<!--get and store session variables from codebehind for use in
VBScript-->
<input type="hidden" id="transTypeHi dden" runat="server" >
<input type="hidden" id="qtyHidden" runat="server" >
<input type="hidden" id="yearHidden " runat="server" >
<input type="hidden" id="monthHidden " runat="server" >
<input type="hidden" id="orderSpecHi dden" runat="server" >
<input type="hidden" id="commoditySy mbolHidden" runat="server">
<input type="hidden" id="commodityHi dden" runat="server" >
<input type="hidden" id="stopPriceHi dden" runat="server" >
<input type="hidden" id="limitPriceH idden" runat="server" >
<input type="hidden" id="notesHidden " runat="server" >
<!-- get and store returned packet from CITCP2 object Doesn't work-->
<!-- <input type="text" id="packetHidde n" runat="server">-->
</form>