To fix your first problem, reverse the order of these two lines:
cmd.Dispose();
dr.Close();
Becomes:
dr.Close();
cmd.Dispose();
Secondly, don't create your strings by concatenation: it leaves you wide open to an accidental or deliberate SQL Injection attack. Use Parametrized queries instead:
cmd.CommandText = "select * from clubAC where accountno = @AN";
cmd.Parameters.AddWithValue("@AN", txtacno.Text);
cmd.Connection =cn ;
The final problem you report needs more information: what is the field type that you are storing the date in the database?