|
I don't think you need to close the form. Why don't you just hide the form when it is deactivated and show the form when it is activated?
Thanks and Regards,
Michael Sync ( Blog: http://michaelsync.net)
If you want to thank me for my help, please vote my message by clicking one of numbers beside "Rate this message". Why vote? Plz Read it here. Thank you.
|
|
|
|
|
Thank you for the suggestion. My problem though is trying to get the form to Hide/Close once the user clicks/types outside the form. Is there an event fired when this happens that I am not aware of or do I need to use a global hook? If I was to use a hook, how do I know that the source of the hook was not within the form?
|
|
|
|
|
What about Deactivate event of form?
private void Form1_Deactivate(object sender, EventArgs e)<br />
{<br />
this.Hide (); <br />
}
I think that this "Deactivate" event is good enough. I dont think you need to use Window Hooking.
Thanks and Regards,
Michael Sync ( Blog: http://michaelsync.net)
If you want to thank me for my help, please vote my message by clicking one of numbers beside "Rate this message". Why vote? Plz Read it here. Thank you.
|
|
|
|
|
you might be able to use .ActiveForm.Close() if you call it from the same thread which generated(showed) the form, else you'll get a "cross-thread exception"
Is this form some type of information "pop-up" ? if so you could just call .Show() and then set a timer to call the .ActiveFrom.Close() on it. Also keep your current if you click on it and then click away it closes.
This would be a better user experience, as they don't have to keep clicking away close the dialog.
another problem is that you are calling abort() to your thread and not allowing it to exit cleanly
All threads should include a method to stop their execution loop, .abort() is to throw an exception on a soft-locked thread. A situation where you know that it should have quit already but it is stuck in some loop.
The exception doesn't allow the thread to finish its task. Think what will happen if a thread was in the middle of saving some file that was only 1/2 written when it was aborted.
|
|
|
|
|
m working on the student management software on c#2005 and sql 2005 , i need to take backup of database " any session" from my application and also save it to the cd. i made differnt database for all session( for Example session07-08, session08-09) so if i want to take backup of sessiono7-08 from my c# application than
<<tech-prog>>
|
|
|
|
|
The below quick function will back up a database
public void BackupDataBase(string databaseName,string Path)
{
string backUpQuery = "USE MASTER"+
"EXEC sp_addumpdevice 'disk', 'MyTestDatabase',"+ path+databaseName+".bak"+
"BACKUP DATABASE "+ databaseName +"TO MyTestDatabase";
SqlConnection con = new SqlConenction(connectionString);
con.Open();
SqlCommand cmd=new SqlCommand(backUpQuery,con);
cmd.ExecuteNonQuery();
}
Please modify the same as required.
laddie
|
|
|
|
|
thanks
but cud you plz tell waht i write instead of 'disk' and MyTestDatabase'
<<tech-prog>>
|
|
|
|
|
Could someone possibly please show me an example, even if it's a parametized query how I can insert into multiple tables.
I have a new employees form with name, role, manager, division, skills, applications. The employee table only has the employeeID primary key, firstname, lastname and then all the foreign key id's for the other tables. The other tables have the other info like description etc.
If I'm creating a new employee, I obviously want them all to update based on the same employee and then the ID's to automatically insert based on the pf fk relationship.
I have searched on google but I can only find examples where you insert one at a time, which works but its not related to the employeei have entered.
Thank you so much
|
|
|
|
|
betetr you use trigers (insert) to insert data in all table based on the employee table
<<tech-prog>>
|
|
|
|
|
Thanks. I'm after any example you can give me. Could you possibly give me an example. I tried the following but the whole injection attack thing. I think the ands could be wrog. Please feel free to
string sql = "INSERT INTO employees(Firstname,Lastname) Values ('" + FirsttextBox.Text.ToString() + "' , '" + LasttextBox.Text.ToString() + "' and Insert into Role (Role) Values ('" + RolecomboBox1.Text.ToString() + "')Insert into Manager (MFirstname) Values ('" + ManagercomboBox1.Text.ToString() + "') Insert into Division (DivisionName) Values ('" + DivisioncomboBox1.Text.ToString() + "')";
|
|
|
|
|
A trigger may not always be the best solution. You have to look at performance and other aspects also.
only two letters away from being an asset
|
|
|
|
|
Your best solution would be to create a stored procedure and call it within your code "ExecuteNonQuery." The stored procedure will do all the work of inserting the records into the proper tables. As far as I know, there is not a way, with SQL Server, to insert into multiple tables with one INSERT statement. This also gives you the ability to do error checking on the back-end.
|
|
|
|
|
Thanks, I do have the statement in the nonexecutequery block already.
Is it possible to give me a little exampypoos???;)
|
|
|
|
|
CREATE PROCEDURE sp_InsertEmployee
@Firstname nvarchar(50),
@Lastname nvarchar(50),
@Role nvarchar(50),
@Manager nvarchar(50),
@Division nvarchar(50)
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO EMPLOYEES (FIRSTNAME, LASTNAME) VALUES (@FIRSTNAME, @LASTNAME)
INSERT INTO [ROLE] ([ROLE]) VALUES (@ROLE)
INSERT INTO MANAGER (MFIRSTNAME) VALUES (@MANAGER)
INSERT INTO DIVISION (DIVISIONNAME) VALUES (@DIVISION)
END
GO
|
|
|
|
|
Thanks so much. Is this case sensitive. You have all the names correct so I copied and pasted this before my executenonquery statment and there are red lines all over it. Okay I feel really dumb about now. It came up with ; errors so I'm guessing that I don't just copy exactly what you have done?
Oh god. I'm waiting to be told off.
|
|
|
|
|
That was a SQL statement for creating a stored procedure in SQL Server. Once you create it in SQL Server, you can then call it using a class like SqlDataReader and use the method ExecuteNonQuery. Don't forget to add your parameters!
|
|
|
|
|
Don't forget to use "Transaction" when you are trying to manipulate data from more than one table...
Thanks and Regards,
Michael Sync ( Blog: http://michaelsync.net)
If you want to thank me for my help, please vote my message by clicking one of numbers beside "Rate this message". Why vote? Plz Read it here. Thank you.
|
|
|
|
|
As I read the thread, I was wondering about exactly this.
Cheers,
Vıkram.
Be yourself, no matter what they say.
- Sting, Englishman in New York.
|
|
|
|
|
Bye the way. Can I ask if my photo can be seen? I don't know if it saved properly.
|
|
|
|
|
oh my god don't I feel stupid.
I'll give it a try. Thanks
|
|
|
|
|
Okay I apologise for pasting so much info but I've done as you said. My code looks like this, but I get the null error which I've shown you at the bottom.
If you can help, I'll vote you high for every message you've sent to me today. I notice that I got this same error when I was using my normal insert statement. what am I doing wrong you think?
SqlCommand sqlC = new SqlCommand("sp_InsertEmployee", myConnection);
sqlC.CommandType = CommandType.StoredProcedure;
sqlC.Parameters.Add(new SqlParameter("@Firstname", SqlDbType.VarChar, 0, "Firstname"));
sqlC.Parameters.Add(new SqlParameter("@Lastname", SqlDbType.VarChar, 50, "Lastname"));
sqlC.Parameters.Add(new SqlParameter("@Role", SqlDbType.VarChar, 0, "Role"));
sqlC.Parameters.Add(new SqlParameter("@Manager", SqlDbType.VarChar, 50, "Manager"));
sqlC.Parameters.Add(new SqlParameter("@Division", SqlDbType.VarChar, 0, "Division"));
//sqlC.Parameters[0].Value = 4;
sqlC.Parameters[0].Value = FirsttextBox.Text.ToString();
sqlC.Parameters[1].Value = LasttextBox.Text.ToString();
sqlC.Parameters[2].Value = RolecomboBox1.Text.ToString();
sqlC.Parameters[3].Value = ManagercomboBox1.Text.ToString();
sqlC.Parameters[4].Value = DivisioncomboBox1.Text.ToString();
int i = sqlC.ExecuteNonQuery();
Error::::Cannot insert the value NULL into column 'RoleID', table 'Dev_RST.dbo.employees'; column does not allow nulls. INSERT fails.
The statement has been terminated.
|
|
|
|
|
Okay it works only slightly but what I notice from this is that the firstname and lastname are update in employees but I've noticed also that I just want the ID's corresponding to that name to be updated also in the employee table istead of saving new entries into the other tables. For example there are now multiple roles called developer, or graduate just with different ID's when what I actually need to do is just update the employee table with the new person and the ID that corresponds to their selected role.
Thanks and sorry for being a pain.
|
|
|
|
|
In reponse to Michael & Vikram, yes, you should be using transactions on multiple statements. The example I provided to you was based on your original post. If your intentions are not alwasy to insert records, then you will need to modify the stored procedure to check for the Roles, Managers, etc. If found then update your employee table. You will need to know SQL. If you are using a Listbox or Combobox, you can also save the PK in the control collection and just pass that to your stored procedure. There are many ways to kill this bird, it just depends on your requirements.
|
|
|
|
|
Okay but what about my last question. how do I update the employee table wiht the ID corresponding the combobox selection.
EG. Employee table has empID, RoleID, DivisioID etc. But then I have a Role table with roleid description and role, and division table with divisionid, division etc.
When a user enters a new employee name, and selects role for example, the employee table should update with a new name and put the correct roleID against the role.
Obviously I'm not good with sql at all.
|
|
|
|
|
I've also been advised that I can do this by creating multiple insert statements in the same block. Is this possible?
If so how?
string sql =
sql =
sql=
etc etc?????? Is this how you would do it? To me it would insert the data but it won't be related to each other. EG. I need to update the division, manager, role table when I insert a new employee.
|
|
|
|