I think you are a little confused - the second line of your code doesn't do anything:
DateTime date = DateTime.ParseExact(txtdate.Text, "dd/MM/yyyy", null);
But it is important to note that ToShortDateString does not return a specific, fixed format - particularly it does not return a string which is suitable for use with SQL. It returns a string which is dependant on the Culture that is set in teh machine, where SQL prefers to get 'yyyy-MM-dd' format dates if you hand them through as a string.
So two things:
First, hand your date through to SQL as a DateTime via a parametrized query (you should be using these at all times anyway to prevent an SQL injection attack which can accidentally or deliberately destroy your database). Don't convert dates to streings unless it s for presentation to the user!
Second, use TryParseExact instead - it reports a problem and allows you to log it and look at why it happened in better detail as well as report the problem to the user.
I'm wondering if the problem is to do with the DateTime format set on the Client machine - are you sure the date is in dd/MM/yyyy format? Have you checked?