2015-07-21 7 views
0

Попытка сортировки записей с использованием ORDER BY в vb.net, но я не получаю нужный результат. Я извлекаю записи из двух разных таблиц, но сортировка использует столбец из одной таблицы.Сортировка по заказу В Vb.net

КОД

'query data 
    Dim cmd As OleDbCommand = New OleDbCommand("SELECT biodata_info.student_id, sname, mname, fname, passport, " & _ 
          " result_score FROM biodata_info LEFT JOIN [" & connResultLink & "].result_summary ON biodata_info.student_id = result_summary.student_id " & _ 
          "WHERE result_term = @resultTerm AND result_session = @resultSession AND result_class = @resultClass AND result_arm = @resultArm " & _ 
          " ORDER BY result_summary.result_score ASC", connStudent) 

    cmd.Parameters.AddWithValue("@resultTerm", term1) 
    cmd.Parameters.AddWithValue("@resultSession", session1) 
    cmd.Parameters.AddWithValue("@resultClass", className1) 
    cmd.Parameters.AddWithValue("@resultArm", armName1) 

РЕЗУЛЬТАТ использованием ASC

<1> 1011 
<2> 863 
<3> 911 
<4> 985 

РЕЗУЛЬТАТ с помощью DESC

<1> 985 
<2> 911 
<3> 863 
<4> 1011 
+0

Возможный дубликат https://stackoverflow.com/questions/489874/sql-order-chars-numerically – Saragis

+1

Кажется, что ваш столбец 'result_summary.result_score' не является числовым типом данных, а строковым типом данных. попробуйте использовать 'CInt (result_summary.result_score)' в предложении order by. –

+0

@ ZoharPeled Спасибо, это так. Еще раз спасибо. – BlackPearl

ответ

2

Кажется мне как ваш столбец result_summary.result_score не является числовым типом данных, а строковым типом данных. попробуйте использовать CInt(result_summary.result_score) в заказе by.

Read this link о преобразованиях типов в MS-Access (и других офисных продуктов)

1

если 'result_score' является использование поля строки cast(result_score as Unsigned). Но если «result_score» - это числовое поле, и вы все равно не получаете результат в порядке возрастания, попробуйте abs(result_score).

Надеюсь, это поможет.

Смежные вопросы