|
My main form is undergoing a processes in Shell,
I have write a form, contains only a label for some words, before the shell run.
After the processes finish, form.close, form.dispose, form = nothing is seted.
However, I find the form doesn't shown the content, just like the application is hanging.
I have tried to using thread.sleep(2000), still like before but 2 seconds more long.
How can I show a "now loading" form when processing the shell command?
The reason that cannot use the msgbox is process on my main form will be stopped, so I cannot using msgbox, I just wanna send a text for the user, It is processing, need to wait.
|
|
|
|
|
Not sure if this is the best solution - (comments from others welcome) but you can show the Second form on a new thread:
Private Sub Button1_Click(ByVal sender ...EventArgs) Handles Button1.Click
Dim thrShowWait As New System.threading.Thread(AddressOf ShowSplashForm)
thrShowWait.Start()
'
'Execute your Shell commands here
'
thrShowWait.Abort()
thrShowWait = Nothing
End Sub
Private Sub ShowSplashForm()
Dim Splash As New frmSplash 'Form showing "Please Wait..."
'set frmSplash FormBorderStyle to 'None' so user cant close it
Splash.ShowDialog()
End Sub
|
|
|
|
|
You don't need a seperate thread if all your doing is putting up something like a messagebox. Keep in mind that this MessageBox form will NOT, and SHOULD NOT, launch your external app. All it's there for is to put up something for the user to look at. The form that creates and shows this MessageBox form should also be launching the external app.
Public Class myMessageBox
Inherits System.Windows.Forms.Form
Private Sub myMessageBox_Load(blah, blah) Handles blah
Label1.Text = "Loading...."
Me.TopMost = True
End Sub
End Class
' In your Form1 (or whatever you call it) code...
Dim myMB As New myMessageBox()
myMB.Show()
Application.DoEvents() ' This will make sure that your new messagebox will get painted
' Launch your external app here...
myMB.Dispose()
' Done!
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
I do it like this,
But the message form us just like hanging,
I mean the content of form is transparent.
How can I make it better.
|
|
|
|
|
Did you put the Application.DoEvents() line in BEFORE you launched your external app?
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
|
Just for anyone else reading this thread, the Application.DoEvents() line was in the sample code I originally posted.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Wow, I got It!!
Thank you again!!
|
|
|
|
|
Hi I am making a windows service that monitors a folder and transfer the files created in that folder to another folder on the network.
I put the following in the OnStart routine:
xtr = New Xml.XmlTextReader("e:\setup.xml")
While xtr.Read
If xtr.NodeType = Xml.XmlNodeType.Element Then
If xtr.Name = "Target" Then
xtr.Read()
s_path = xtr.Value
ElseIf xtr.Name = "Dest" Then
xtr.Read()
d_path = xtr.Value
End If
End If
End While
I put the source folder to be monitored and the destination folder to copy to in the XML file, and set the value of s_path and d_path accordingly.
The problem is that when I start the service it just stop immediately. But if i set the value of s_path and d_path to something else before the first line of the above code, and set the values that correspond to the xml file when the above code run, the windows service start sucessfully.
The XML is created correctly cuz I have tested it with a VB Windows application with the same code as above. Does anyone know why that happen?
|
|
|
|
|
chiyinhk wrote: The problem is that when I start the service it just stop immediately.
Typically, a service is written to, on start, startup a seperate processing thread that continuously loops and looks for work to do. This has to be done as a seperate thread because if you put that looping code into the OnStart method of your service, there will never be a return from this method and the ServiceControl manager will think there is something wrong because it's waiting for a return code that it will never get.
In your case, you're just running a block of code that has an ending point and returns, something like the code you would put in a Load event in a Windows Forms app. You're not starting a thread to do the actual processing.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
How can I change reports and data sources for ReportViewer on runtime?
|
|
|
|
|
Hi All!,
I've a problem in copying files to a network computer using vb.net coding. I want to copy some files to another computer in a network(LAN). can anyone please tell me how to do this. the IP address of the network computer is 130.1.1.24.
thanx,
Prasant
|
|
|
|
|
Well, without knowing anything about the machine you want to copy files to, we can only guess at what you need to do. And DO NOT post IP addresses for your internal network in a public forum! This is a HUGE security breach and could get you fired!!!!!
What type of server is this machine you want to copy files to? Windows Server, Novell, Linux, FTP server, web server, ..., ???
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Hi,
Thanx for your advice. As per your instruction i'm giving my problem in detail. actually i'm using windows 2003 server. i've my files stored in the server in a folder say x. i want to copy all the files of x folder to a pc(say mypc) connected in a lan.
please suggest any solution for the problem.
thanx in advance,
Prasant
|
|
|
|
|
Then you're looking for the File class and it's Shared .Copy() method. All you need to supply are the source filepaths and the destination.
File.Copy(sourceFilePath, destinationFilePath)
Getting to filepaths on are remote machine requires specifying the path in UNC format (\\server\share\filepath), or by drive letter paths (F:\, G:\, ...), if you have a drive mapping to the server share.
File.Copy("\\myServer\MyShare\Folder\Folder\File.txt", "C:\Folder\File.txt")RageInTheMachine9532<font size="-1">
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome</font>
|
|
|
|
|
Hi,
It Really works fine. thanx a lot for your valuable guidance. it really solves my problem. but could please tell me how to copy/download files from ftp.
the problem is i've a ftp(say ftp.xxx.com). i know the host name and ftp port id, username and password but i don't know the ip address. all i need is i want to copy the files from ftp to a machine say yy. i'm using ftp component but please anyone tell me how to use it in a proper way to solve my problem.
thanx,
Prasant
|
|
|
|
|
Prasant_Panda wrote: i'm using ftp component but please anyone tell me how to use it in a proper way to solve my problem
What/Who's FTP component? Without knowing this, it's hard to give you any kind of accurate instructions.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Hi,
As per your instruction i'm giving you details. i've downloaded one ftp component for vb.net from codeguru.com. and i'm writing codes as follows.
Imports FTP
'Code In The Button click event
Dim NewFtp as Ftp.clsftp
NewFtp = New clsFTP
NewFtp.RemoteHost = "ftp.xxxxx.xxx"
NewFtp.RemotePort = xx
NewFtp.RemoteUser = "xxxx"
NewFtp.RemotePassword = "xxxx"
NewFtp.Login()
The problem is when i run this program it gives me error "no such host is known".
kindly suggest any solution for it.
thanx,
Prasant
|
|
|
|
|
It's telling you that either the host name you gave it doesn't exist or it's not responding on the port number yuo gave it. By default, FTP works on port 21. I'm not familiar with that component, so it might be that it requires the host name be in a specific format also. You'll have to check with any documentation that come with the component.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
VB.Net/MS Access. I need to insert records into a particular table (say X)after getting the data from two different tables (say A & B) and doing some permutations and combinations on it. I am getting entire data from tables A & B into two different Datasets. A loop has been written to parse the records from A (dataset), check in B(dataset) and insert the record in table C. However, this entire process is taking a long time. (i.e: in my test run, to insert around 8 lakh records, it took approx 4 hrs).
As per my perception, the time delay is being caused since I am firing an insert statement directly on the database during every loop cycle. Is there a way to avoid this and speed up the process. (i.e. Can the records be inserted into a dataset and then all the records be directly inserted into the table from the dataset)
I am providing sample code for your reference.
Code :
----------------------------------------------------------------------------
str = "select id, code, name, period from EMP2000"
ipcon.Open()
DA = New OleDbDataAdapter(str, ipcon)
DS = New DataSet
DA.Fill(DS, "irec")
str2 = "select id, code, addr, period from EMPADDR"
DA2 = New OleDbDataAdapter(str2, ipcon)
DS2 = New DataSet
DA2.Fill(DS2, "imsctrl")
DV = New DataView(DS2.Tables("imsctrl"))
str3 = "select Id, code, name, addr from EMPDATA where period = '2000'"
DA3 = New OleDbDataAdapter(str3, ipcon)
DS3 = New DataSet
DA3.Fill(DS3, "emp")
Dim cb As New OleDbCommandBuilder(DA3)
Dim cnt As Integer
cnt = 0
'''
Dim DataRow As DataRow
For Each myrow In DS.Tables("irec").Rows
If (myrow(1).Equals(System.DBNull.Value)) Then
code1 = ""
Else
code1 = myrow(1)
End If
If (myrow(3).Equals(System.DBNull.Value)) Then
period1 = ""
Else
period1 = myrow(3)
End If
If (myrow(2).Equals(System.DBNull.Value)) Then
name1 = ""
Else
name1 = myrow(2)
End If
For Each DataRow In DV.Table.Rows
If Trim(DataRow(1)) = Trim(code1) And Trim(DataRow(3)) = Trim(period1) Then
addr1 = Trim(DataRow(2))
Exit For
End If
Next
dsNewRow = DS3.Tables("emp").NewRow
dsNewRow.Item("code") = Trim(code1)
dsNewRow.Item("name") = trim(name1)
dsNewRow.Item("addr") = Trim(addr1)
DS3.Tables("emp").Rows.Add(dsNewRow)
DA3.Update(DS3, "emp")
Next
----------------------------------------------------------------------------
Is there a way to insert all the records in a dataset and finally update the dataset to the database? If there is such a way then is it really fast. Thnx for your help.
With Best Regards,
Mayur
|
|
|
|
|
This is all something that wound be MUCH faster and better done in the database itself using straight SQL code. This would require completely rewriting this.
For example,
For Each DataRow In DV.Table.Rows
If Trim(DataRow(1)) = Trim(code1) And Trim(DataRow(3)) = Trim(period1) Then
addr1 = Trim(DataRow(2))
Exit For
End If
you're going through each record in a table and looking for records that has 2 fields that match certain requirements and returning that one record. This can be done in a simple SELECT statement:
SELECT addr1 FROM irec WHERE code1=something AND period1=something
This, of course, won't run because I have no idea what your database structure is, but it'll be FAR, FAR faster than you going through each record in a table and comparing things yourself.
You code is just using a database engine for storing data. It's not using the database engine to do any processing! Your code is taking hours to run because you're not using easier and faster methods to process your data. The more you can do in SQL code, the faster this process will go!
This is what I mean by competely scrapping what you have, rethinking your logic, and breaking each step of your logic down to simpler steps. Then you can find faster ways of doing each step. I bet you could do this entire thing in a single stored procedure on an SQL server and it would probably take all of 10 seconds to run (depending on the number of records of course!) To bad Access doesn't support true stored procedures!
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Thnx for your reply Dave. However, my backend is MS Access. I have no idea how we can write a stored procedure in access. Is there a way to add all the new records in a dataset and then finally uploading the dataset into a table?
With Best Regards,
Mayur
|
|
|
|
|
Access doesn't support true stored procedures, so you'll have to write more efficiently in single SELECT statements. Access only supports single statement queries.
Doing it in code the way you are now is just so inefficient it's not funny. You're not using the power of the database at all. Like I said, you'll haev to rewrite this so you're code is not going through the same records time and time again "looking" for a record that matches a certain criteria. This is one MAJOR spot where your code is bogging down. Rewrite just this little search as a SELECT statement and you should see a huge imporovement.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
I have a bookmark named "a" just a location, not a range of charater.
Suppose the word application, active document be "oDoc"
How can I set a range start from: bookmark "a"
and end at the 6 charaters after bookmark "a".
I would like to use range.text to get the value.
Thank you.
|
|
|
|
|
i want to develop a application like word processor and excel spreadsheet using vb.net. i need a proper guidance to develop this project. this is my first time in system programming. please guide me in proper manner.
thank u
s
|
|
|
|
|