|
|
I am calling a stored procedure in my vbscript and I need to be able to grab the results from the stored procedure execution. Right now I have tried several accessors, but nothing seems to be working. Also other methods I have seen done actually return fields from a table, the sql procedure I am executing is printing strings.
Does anyone know how to do this? Or any other thoughts how I could integrate this into my script?
TIA
VB CODE
-----
Dim dbnames_connection_jobs
Dim dbnames_command_jobs
Dim dbnames_recordset_jobs
Set dbnames_connection_jobs = CreateObject("ADODB.Connection")
Set dbnames_command_jobs = CreateObject("ADODB.Command")
Set dbnames_recordset_jobs = CreateObject("ADODB.Recordset")
dbnames_connection_jobs.ConnectionString = "Provider='sqloledb';Data Source='" & database_name & "';" & _
"Initial Catalog='master';Integrated Security='SSPI';"
dbnames_connection_jobs.open
dbnames_command_jobs.ActiveConnection = dbnames_connection_jobs
dbnames_command_jobs.CommandTimeout = 15
dbnames_command_jobs.CommandText = "exec sp_help_revlogin"
Set dbnames_recordset_jobs = dbnames_command_jobs.Execute
----
Stored Procedure
----
CREATE PROCEDURE sp_help_revlogin @login_name sysname = NULL AS
DECLARE @name sysname
DECLARE @xstatus int
DECLARE @binpwd varbinary (256)
DECLARE @txtpwd sysname
DECLARE @tmpstr varchar (256)
DECLARE @SID_varbinary varbinary(85)
DECLARE @SID_string varchar(256)
IF (@login_name IS NULL)
DECLARE login_curs CURSOR FOR
SELECT sid, name, xstatus, password FROM master..sysxlogins
WHERE srvid IS NULL AND name <> 'sa'
ELSE
DECLARE login_curs CURSOR FOR
SELECT sid, name, xstatus, password FROM master..sysxlogins
WHERE srvid IS NULL AND name = @login_name
OPEN login_curs
FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd
IF (@@fetch_status = -1)
BEGIN
PRINT 'No login(s) found.'
CLOSE login_curs
DEALLOCATE login_curs
RETURN -1
END
SET @tmpstr = '/* sp_help_revlogin script '
PRINT @tmpstr
SET @tmpstr = '** Generated '
+ CONVERT (varchar, GETDATE()) + ' on ' + @@SERVERNAME + ' */'
PRINT @tmpstr
PRINT ''
PRINT 'DECLARE @pwd sysname'
WHILE (@@fetch_status <> -1)
BEGIN
IF (@@fetch_status <> -2)
BEGIN
PRINT ''
SET @tmpstr = '-- Login: ' + @name
PRINT @tmpstr
IF (@xstatus & 4) = 4
BEGIN -- NT authenticated account/group
IF (@xstatus & 1) = 1
BEGIN -- NT login is denied access
SET @tmpstr = 'EXEC master..sp_denylogin ''' + @name + ''''
PRINT @tmpstr
END
ELSE BEGIN -- NT login has access
SET @tmpstr = 'EXEC master..sp_grantlogin ''' + @name + ''''
PRINT @tmpstr
END
END
ELSE BEGIN -- SQL Server authentication
IF (@binpwd IS NOT NULL)
BEGIN -- Non-null password
EXEC sp_hexadecimal @binpwd, @txtpwd OUT
IF (@xstatus & 2048) = 2048
SET @tmpstr = 'SET @pwd = CONVERT (varchar(256), ' + @txtpwd + ')'
ELSE
SET @tmpstr = 'SET @pwd = CONVERT (varbinary(256), ' + @txtpwd + ')'
PRINT @tmpstr
EXEC sp_hexadecimal @SID_varbinary,@SID_string OUT
SET @tmpstr = 'EXEC master..sp_addlogin ''' + @name
+ ''', @pwd, @sid = ' + @SID_string + ', @encryptopt = '
END
ELSE BEGIN
-- Null password
EXEC sp_hexadecimal @SID_varbinary,@SID_string OUT
SET @tmpstr = 'EXEC master..sp_addlogin ''' + @name
+ ''', NULL, @sid = ' + @SID_string + ', @encryptopt = '
END
IF (@xstatus & 2048) = 2048
-- login upgraded from 6.5
SET @tmpstr = @tmpstr + '''skip_encryption_old'''
ELSE
SET @tmpstr = @tmpstr + '''skip_encryption'''
PRINT @tmpstr
END
END
FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @xstatus, @binpwd
END
CLOSE login_curs
DEALLOCATE login_curs
RETURN 0
GO
---
|
|
|
|
|
You'd probably have to setup a Parameter object, in your Command object, with a direction parameter of adParamReturnValue . You could probably read the results from that parameter after the Execute method returns.
Or you might be looking for something like this[^] example.
I don't know for sure which one will work for you. I never had to look at the return value text before...
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Made some small changes to the variable names, but tried what was posted in:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdconcommandparams.asp
and here
http://www.microsoft.com/resources/documentation/Windows/2000/server/reskit/en-us/iisbook/c07_returning_values_from_stored_procedures.asp
Now getting error' Item cannot be found in the collection corresponding to the requested name or ordinal.
800A0CC1
This means that the Recordset var isn't getting any data returned to it, but the stored proc when run in query analyzer is returning data?
What do I have blatantly incorrect in the code below?
--
Dim userinformation_connection_jobs
Dim userinformation_command_jobs
Dim userinformation_recordset_jobs
Set userinformation_connection_jobs = CreateObject("ADODB.Connection")
Set userinformation_command_jobs = CreateObject("ADODB.Command")
Set userinformation_recordset_jobs = CreateObject("ADODB.Recordset")
userinformation_connection_jobs.ConnectionString = "Provider='sqloledb';Data Source='" & database_name & "';" & _
"Initial Catalog='master';Integrated Security='SSPI';"
userinformation_connection_jobs.open
userinformation_command_jobs.ActiveConnection = userinformation_connection_jobs
userinformation_command_jobs.CommandTimeout = 15
userinformation_command_jobs.CommandText = "exec sp_help_revlogin"
'userinformation_command_jobs.CommandType = adCmdStoredProc
Set userinformation_recordset_jobs = userinformation_command_jobs.Execute
userinformation_recordset_jobs(0).Direction = adParamReturnValue
'userinformation_command_jobs.Execute
output_file.WriteLine(userinformation_recordset_jobs(0))
|
|
|
|
|
The winform project could not be build and run.
How to change the code.
Such as
My.Application
Shundown
Auther..
|
|
|
|
|
That's the price of using a beta.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
The changes are too many to list. If your using the My stuff, then your basically going to create a new Windows Forms application and recreate your forms, then copy/paste some of your code, correct anything that was changed between beta's, ...
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Hi
I am Ilangovan newbie for .NET programming.I have to Get windows XP login & logout time using VB.NET or ASP.NET or C#.....can anyone help me pls?
Thanks in advance
M.Ilangovan
|
|
|
|
|
Since this information isn't stored anywhere, you'll have to write a Windows Forms application that is run from the All Users/Startup Folder or from the Run registry key.
This application would just record the time when it starts, meaning a user logged in, the username, and when Windows quits, the current time when the application is told to shutdown.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
|
Here is another way to get at the logs in VB.Net:
HOW TO: Manage Event Logs by Using Microsoft Visual Basic .NET
http://support.microsoft.com/default.aspx?scid=kb;en-us;814564[^]
You can parse the times with:
Dim CurrentEntry As EventLogEntry = ev.Entries(i)
Console.WriteLine("Event Time : " & CurrentEntry.TimeGenerated)
|
|
|
|
|
Are there any ways to bind information from a XML file into a listbox for Vb.Net?
e.g I need to display all the products that are in the XML file into the listbox for the user to choose from.
Another question would be how do we edit XML files?
e.g After creating a XML file, I need to add more products into the XML file
my project is mainly about product inventory
|
|
|
|
|
Nguyen Dinh Quy wrote:
e.g I need to display all the products that are in the XML file into the listbox for the user to choose from.
I'm not sure if there is an easier way, but I tend to get a node collection with an XPath, then I build an arraylist of strings from that and bind that to the listbox.
Nguyen Dinh Quy wrote:
After creating a XML file, I need to add more products into the XML file
If you load your XML file into an XmlDocument, this class has methods to create new nodes, which you can then modify and insert nto the document by finding the parent node and calling (from memory) appendchild. It's involved enough that I wrote a wrapper for it all for wdwj mag a few years ago, but in hindsight I don't use it, it's not that bad.
Nguyen Dinh Quy wrote:
my project is mainly about product inventory
Don't you think a SQL database is a better choice than XML ? How will you do searches ?
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
Do MSMQ really copy objects (like text files) into queue or do they only copy the content of that object?
|
|
|
|
|
Text files? It's a Message Queue, not a file queue. It's for passing application messages back and forth to a queued server component. The objects you put into the queue should be serializable.
Or did I misunderstand the question?
The objects you send into the message queue should be serializable.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
You are correct, objects to the queue should be serializable. What i did was i passed a filestream to the bodystream of the queue and it did placed all the content of the file in the queue. But i doubted that it will place the actual file in th equeue.
I am trying to build a messaging system which will send messages as well as objects whcih can include text file, media files etc.
I think that sending messages and sending objects are two different sectors. We cannot use a single system (like MSMQ) to operate for both. Correct me if i am wrong.
If you can suggest me some technologies which i can use for Messaging system.
|
|
|
|
|
You really don't want to be putting the contents of a file in the queue. Since a file's size cannot be predicted with 100% accuracy and assurance (in the case of a corrupted file), you could very easily overwelm the queue.
What you could do, on the other hand, is setup FTP access on the server, upload the file to the server, then send an MSMQ message telling the server where to find it and what it's name is. I've done that before, but that was a long time ago.
Another option is a custom background uploader using BITS (Background Intelligent Transfer). Since BITS will work with a variety of server types, you don't need to use an FTP server. You could use a normal Windows share or upload to a web server with the proper support, like IIS 5 or IIS 6, (XP Servers not supported!) This method will work with Windows 2000 SP3 and above on the client side. Again, then send the MSMW message when the file transfer is complete.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
My need is that i should be watching a particular location on the client machine which i can do it through FileSystemWatcher then without any user interventin it should transfer file from that location to the server.
I have to use a window service for that in which i can use either FTP or Bits or any other.
Can I use web service also?
I think that web service needs to be called through a web page. You cannot call a web service just by connecting to internet?
Correct me if I am wrong.
|
|
|
|
|
In this case, I would probably use BIS to do the transfer. It has a couple of advantages:
1. BITS transfers files in the background so foreground applications don't take a performance hit.
2. If other applications need more network bandwidth, BITS detects this and backs off on its use of the network.
3. If the user shuts down the machine, BITS will pickup the file transfers from where they left off. You don't need a continuous network connection to stay up for the entire file transfer.
I would not recommend using a web service to upload the file for just theses reasons. I would probably still use either FTP or HTTP server to upload the files to. When the transfer is completed (BITS does support notifications like this), then you could probably call a web service on that server to look at the file.
Just make sure you upload the file first, THEN notify the server that its there. What's the point in notifying the server of a file that you haven't uploaded yet?
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Thanx, I have tried looking for some tutorial on BITS but haven't find which can help me in developing the project. If you can provide me the link of some tutorial which can assist me in application development.
Other thing is does BITS has an authentication mechanisim like FTP.
|
|
|
|
|
MSDN is your friend, here[^].
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
|
What on earth do you mean? What can you possibly be sending that's going to take up that much space?
Messaging is for sending application messages, not monsterous libaries of information!
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
I am not sending earth, But earth people would be sending millions of record every day which can vary from few kb's to 3-4 mb's. How much scalable you can make it that is the question?
|
|
|
|
|
Very scalable. And if your going to have that kind of traffic, you would be wise to have multiple MSMQ servers running to handle the load, especially if one goes down for any reason.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|