|
I have written a vb class module which simply writes a string to a file and compiled this as a dll.Now when I registered this dll using regsvr32.exe from the system32 folder under WINNT directory in the win2k server,I can access this dll from my ASP code simply by using Server.CreateObject("dll name").
1>Is this dll a com?
2>Whats the difference between a com and a dll?
3>So if it is possible to access this dll through ASP by registering the component in the server registry,then what is the utility of using MTS in IIS?
Since I am a beginner in web development,I would also like to know about the other functionalities and advantages of using MTS with IIS.Address of any relevant web site dealing in similar topics will also help me a lot....
Thanking u all in advance...
Anirban
|
|
|
|
|
It's very weird.
<%
Response.Write( "bExistingLogin: " & bExistingLogin & " " )
Response.Write( "bSuspended: " & bSuspended & " " )
Response.Write( "bEMailPrevReg: " & bEMailPrevReg & " " )
If bExistingLogin="1" Or bSuspended="1" Or bEMailPrevReg="1" Then
Request.Form("bLoginStatus")="1" PROBLEM HERE!
Server.Transfer("login_gui.asp")
End If
%>
That's all I'm doing, but apparently the script engine is not happy that I reference 'Form' property of the Request Object:
Request.Form("bLoginStatus")="1"
The error message:
"Microsoft VBScript runtime error '800a01b6'
Object doesn't support this property or method: 'Form'
/submit_changed_profile.asp, line 23"
Thanks a bunch!
norm
|
|
|
|
|
You're getting that error because you are trying to write to a member of the Request.Form collection which is read-only.
If I were you I would first assign Request.Form("bLoginStatus") to a variable i.e.
bLoginStatus = Request.Form("bLoginStatus")
then you can update the variable and use that.
It will save you some typing as well
|
|
|
|
|
yea, i figured that out after a few hours of debugging, that's the problem when u're noew to a language =)
norm
|
|
|
|
|
Thanks, my mistake =)
norm
|
|
|
|
|
Hi, I am having problem with the following ADO error:
"ADODB.Recordset error '800a0e78'
Operation is not allowed when the object is closed.
/check_past_record.inc, line 90"
I wish to know if I oRS.Close() will close the associated oConn (connection object)?
Here's the code snippet:
Set oConn = Server.CreateObject("ADODB.Connection")
'Connecting to Microsoft SQL Server:
oConn.ConnectionString = "Provider=sqloledb; Data Source=(local); Initial Catalog='DummyDB'; User ID=sa; Password=sa"
oConn.Open
Set oRS = Server.CreateObject("ADODB.Recordset")
oRS.Open "SELECT * FROM passwords WHERE login <>'" & Trim(Request.Form("txtOldLogin")) & "'", oConn, 2, 3
oRS.Find "login = '" & fldLogin & "'"
If oRS.EOF Then
bExistingLogin="0"
Else
bExistingLogin="1"
End If
oRS.Close() QUESTION: Is THIS NECESSARY?? What am I doing here exactly? Just closing the recordset? Or recordset PLUS oConn in ONE statement?
oRS.Open "SELECT * FROM passwords", oConn, 2, 3
oRS.Find "login = '" & Request.Form("txtOldLogin") & "'"
Alrite, I think this should be enuf to illustrate my...
Thanks!
norm
|
|
|
|
|
norm wrote:
QUESTION: Is THIS NECESSARY?? What am I doing here exactly? Just closing the recordset? Or recordset PLUS oConn in ONE statement?
You are closing the recordset not the connection. As to whether it is necessary or not, I always do for the sake of keeping everything tidy, but if you are executing a new query ADO will close the recordset for you. I haven't tried, but I suspect closing the connection when you have a recordset open may close the recordset then too, and assigning "Nothing" to it may as well. I would always specifically close the recordset though and not rely on any of that. If nothing else then at least you know when things are open and closed which helps if you are tracking down a problem like this.
As to the "Operation is not allowed when the object is closed" error, do you get an error code, something like -000000000? I haven't checked yet, but there may be different codes for different failed operations. Is the select query returning any records? (I think it should throw a different error if it was, but it's worth checking) Where is the error being thrown? When you open the recordset again or when you call the Find member? If the former, try using oRS = oConn.Execute "sql..." to open your recordset and see if it makes any difference. If not, try creating a new ADODB.RecordSet object. If it still fails, try closing and re-opening the connection too. If an error isn't immeadiately obvious you can usually get a good idea what is triggering it if through trial and error like this.
Also, check you have the latest version of MDAC installed.
|
|
|
|
|
|
Just for curiosity's sake, if it's not trouble, what was the problem in the end?
|
|
|
|
|
here it is:
If some condition Then
oRS.Open .....
Do something with oRS
End If
oRS.Close Depending on whether the above if-block was executed or not, this close statement may generate the error. My mistake!
oRS.Open NewSQLStatement
...
...
...
Thanks!
norm
|
|
|
|
|
I would be grateful if folk could spare a few moments to visit my newest website.
It is designed to be local to one area of Scotland but as the logs show we are getting hits from around the world I would love some feedback!
http://www.angusblog.co.uk[^]
Thanks,
Davy
Weblog, Ramblings and more...
www.latedecember.com
|
|
|
|
|
Wait( ) for VBScript?
I need something that do this:
Wait(2000) --- wait 2000 ms before executing next line of code.
anyone? Thanks.
norm
|
|
|
|
|
There isn't any such function in VBScript.
You can get around it though by using SetTimeout. This allows you to designate a delay before executing a sub or function.
So if you structure your code suitably you can do this
sub myFirstSub()
'Do whatever
MsgBox("test1")
Call SetTimeout("mySecondSub", 2000)
end sub
sub mySecondSub()
MsgBox("test2")
'Do something else
end sub
the first parameter to SetTimeout is the name of the function or sub you want to execute, the second is the delay in milliseconds that you want. So in my
example when i call myFirstSub I will get a messagebox with "test1" then 2 seconds later I get another messagebox with "test2".
HTH
|
|
|
|
|
|
Can I use object.Sleep instead? I tried it.. no error, but it seems that it didnt work:
SetTimer... hum, I dont think it post/submit the form variables.
I need to do this, but for some reason it seems that it didnt "Sleep" as instructed. Here's the fragment:
<% Response.Write "It takes time to read this message" %> HERE: This message need to stay on screen.
Object.Sleep 5000 PROBLEM: No error, but it seems like the page didnt actually waited 5000 millisec? The page just got redirected right away it seems. the user didnt get a chance to read the above msg at all.
<% If (bExistingLogin="1" Or bSuspended="1" Or bEMailPrevReg="1") Then %>
window.history.go(-1)
<% Else %>
Login()
<% End If %>
Thanks.
norm
|
|
|
|
|
I'm not quite sure what you mean by it not posting form variables. But if you mean you want the login function to post a form to another page, then you can do it like this:
<%="This is a message"%>
<script language="VBScript">
call SetTimeout("timedFunc", 5000)
sub timedFunc
<%If (bExistingLogin="1" Or bSuspended="1" Or bEMailPrevReg="1") Then %>
history.go(-1)
<%else%>
call Login()
<%end if%>
end sub
sub Login()
frmLogin.submit()
end sub
</script>
<form name="frmLogin" action="2.asp" method="post">
<input type="hidden" name="username" value="Torsten">
</form>
basically you just need to prepopulate the form with whatever form variables you want to post.
if this isn't what you're trying to do then could you please be a bit more specific about what you want and i'll help you further. If you like you can email me a copy of your source and i'll take a look at it for you.
HTH
|
|
|
|
|
Basically, I just need to add a time delay at one point in my script before executing the rest:
<% Response.Write "A message takes TIME to read %> I NEED TO HAVE THIS MSG STAY ON SCREEN FOR 1000 milli-sec.
Sleep(1000)
<%
ExecuteTheRest()
%>
That's all I want to do. And the following is the actual code:
<title>.....
...
Sub Login()
document.redirect_login_form.submit
End Sub
...
... some hidden variables here...
...
...
...
...
<%
Response.Write "CAN YOU SEE THIS MESSAGE?"
Response.Flush()
%>
<% If (bExistingLogin="1" Or bSuspended="1" Or bEMailPrevReg="1") Then %>
window.history.go(-1)
<% Else %>
Login()
<% End If %>
SYMTOMS:
Client side error: "object required WScript..." and I have no idea why...
So, I tried:
Object.Sleep 50000 (I think I remember seeing this somewhere...)
window.Sleep 50000 (Yes, "window" does not support this method)
Reference (WScript):
1. http://www.tek-tips.com/gviewthread.cfm/lev2/4/lev3/32/pid/329/qid/395765
2. http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/wsmthappactivate.asp
3. http://www.aspalliance.com/steven.swafford/articles/defrag.aspx
I have also tried using setTimeout in place of Sleep... Got an error message saying "cannot use parentheses when calling a sub"
Sub WasteTime()
End Sub
window.setTimeout("WasteTime()",30000)
I tried too many things... I cant remember if there's an client side error..but I think the page got redirected as if setTimeout did NOT have any effect of the execution of my ASP page.
Help!
norm
|
|
|
|
|
Try this code:
<head></head>
<body>
...
<script Language="VBScript">
Sub Login()
document.redirect_login_form.submit
End Sub
</script>
...
<form name=redirect_login_form method="post" action="login_gui.asp">
... some hidden variables here...
</form>
...
...
...
...
<%
Response.Write "CAN YOU SEE THIS MESSAGE?"
Response.Flush()
<script language="VBScript">
call setTimeout("delayedSub", 1000)
sub delayedSub()
If (bExistingLogin="1" Or bSuspended="1" Or bEMailPrevReg="1") Then %>
window.history.go(-1)
<% Else %>
Login()
<% End If %>
end sub
</script>
</body>
That should be all you need to do.
the reason you are getting an error with setTimeout is because in VBScript you need to add the "call" keyword before a sub call if you use the parentheses. otherwise VBScript thinks it is a function.
i.e. you can call a sub in two ways:
1. subname param1, param2
2. call subname(param1, param2)
If you're still stuck after this then feel free to email me a copy of your code and I will fix it and annotate the fixes for you which might be a bit clearer then a forum post.
HTH
|
|
|
|
|
I found a solution, and just to help out those of you who may ...
<%
Sub Delay(DelaySeconds)
SecCount = 0
Sec2 = 0
While SecCount < DelaySeconds + 1
Sec1 = Second(Time())
If Sec1 <> Sec2 Then
Sec2 = Second(Time())
SecCount = SecCount + 1
End If
Wend
End Sub
%>
<% Delay(7) %>
norm
|
|
|
|
|
a silly ASP question...
How come I cant use Server.Transfer("somepage.html") in block, but I can use them in <% %> block?
norm
|
|
|
|
|
Also, it seems that Sub GoHome() must be done in <script> block - <% %> wont do...???
Here's the code that calls
<tr
OnMouseOver="this.bgColor='LightSteelBlue'"
OnMouseOut="this.bgColor='Ivory'"
OnMouseDown="GoHome()">
<td align=center>Home</td>
</tr>
Any idea?
Thanks!
norm
|
|
|
|
|
norm wrote:
How come I cant use Server.Transfer("somepage.html") in block, but I can use them in <% %> block?</i>
I cannot be sure of my conclusion without more info, but I think you are suffering from classic Server vs. Client Side confusion.
<code><% %></code> are <em>server side</em> script block definers. That means any script inside that block will be run server side, not client side.
<code><script> </script></code> blocks are typically client side. So any code in those blocks are run client side, not server side.
<code>Server</code> is an ASP object, accessible only on the server side, not the client side. So you cannot have client side code trying to access the <code>Server</code> object, as it does not exist client side.
<div style="padding-left:36px;font:10px verdana;color:#fff;width:200px;border:dashed 1px #069;height:40px;background:#036 url(http://stormfront.bluegrassgroup.com/proudlysa.jpg) no-repeat 2px 1px;"><strong>Paul Watson</strong><br>Bluegrass<br>Cape Town, South Africa</div>
<small><b>Roger Wright wrote:</b></small>
<i>Using a feather is kinky; using the whole chicken is perverted!</i>
|
|
|
|
|
Thanks. That's clear things up a lot!
norm
|
|
|
|
|
Can you all make any suggestions on ASP .NET web hosts with SQL Server support in US? I've seen several, but they don't seem to have greatest value.
Thanks.
------------------------------------------
The 3 great virtues of a programmer:
Laziness, Impatience, and Hubris.
--Larry Wall
|
|
|
|
|
Brinkster[^] are great value for money, in my opinion, I have two accounts with them... for over a year, I had three.
Depends how cheap you consider to be value though and what service you expect in return.
Paul
Pleasently caving in, I come undone - Queens of the Stone Age, No One Knows
|
|
|
|