2013-05-02 13 views
6

Utilizzo Visual Studio 2010 e SQL Management Studio R2 Sebbene la query sql funzioni correttamente in sql management studio. È un'eccezione nello studio visivo. Fuori dall'eccezione dell'indice, quando eseguo le modifiche per apportare altre modifiche, viene lanciata l'eccezione Fuori formato. Mi aiuti per favore. Il codice è il seguente:Come selezionare anno distinto da una colonna datetime e aggiungere il risultato a una casella combinata in C#?

string sql = "SELECT DISTINCT Year(tdate) FROM saletransaction ORDER BY Year(tdate) DESC"; 
cmd = new SqlCommand(sql, con);     
dr = cmd.ExecuteReader(); 
DateTime dt; 
while (dr.Read()) 
{ 
    if (dr.HasRows == true) 
    { 
     dt = Convert.ToDateTime(dr["tdate"].ToString()); //tdate is the name of the column (getting an error at this line.) 
     comboBox1.Items.Add(dt.Year.ToString()); 
    } 
} 
+0

Qual è il formato dei tuoi dati di data nel tuo database? –

+0

il tdate è già convertito in semplice anno in una stringa semplice, quindi l'errore potrebbe essere dovuto al fatto che si sta tentando di eseguire una stringa semplice anno su datetime. – Paras

risposta

4

Non stai selezionando tdate ma si seleziona Year(tdate)

vorrei modificare la query a questo:

string sql = "SELECT DISTINCT Year(tdate) AS tdate_year FROM saletransaction ORDER BY Year(tdate) DESC"; 

e l'accesso con dr["tdate_year"]

+0

ho capito. Grazie Wouter Huysentruit. –

3

Ti sei perso per dare il nome della colonna in sql query

provare questo

string sql = "SELECT DISTINCT Year(tdate) AS tdate FROM saletransaction ORDER BY Year(tdate) DESC"; 
+0

Grazie mille Mandeep Singh. L'hai risolto così facilmente! –

+0

Siete sempre i benvenuti –

2

Sembra che tu non hai dato un alias al vostro tdate query. Pertanto, quando si tenta di fare riferimento a tdate, la colonna non esiste e Visual Studio genera l'errore.

modificare la query a:

string sql = "SELECT DISTINCT Year(tdate) AS tdate FROM saletransaction ORDER BY Year(tdate) DESC"; 

che restituirà tutti i risultati sotto il nome di colonna tdate.

+0

Ho capito. Grazie a Darren Davies. –

+0

@ Suvee- puoi smettere di contrassegnare la risposta come accettata e quindi non accettata. È cambiato 3 volte nell'ultimo giorno. –

+0

Siamo spiacenti. Non sapevo di poter accettare solo un ans. –

Problemi correlati