-
База MS SQL 2000 Delphi 2006
Компоненты Ado табл и квери
выполняю запрос
SELECT * FROM tbZava, tbFak WHERE tbZava.idFak*=tbFak.idFak ORDER by vcKOdOsSprav
как результат
6Б-1 6Б-10 6Б-11 ... 6Б-19 6Б-2 6Б-20
что сделать что бы нормально шло после сортировки 6Б-1 6Б-2 .... 6Б-10 6Б-11 ... 6Б-19
6Б-20
-
а это и есть нормально.. учи, что такое код символа и какие коды каким символам соответствуют, тогда поймешь
-
where и вот здесь или многоэтажная функция или капут. И с чего ты решил, что 6Б-1 это число, а что ты будешь делать для 6B-1a/b17 и 1B и 11Б
-
ну если все только так как написано, а не [2] то написать ORDER by Left(vcKOdOsSprav, 2), Cast(SUBSTRING (vcKOdOsSprav, 4, 10) AS Int)
причем первая часть с Left в сортировке именно для приведенных данных лишняя.
-
а вообще поле бы разбить на 2, строковое и числовое, тогда избежишь проблем типа ввода туда чего то нестандартного. ну или формировать номер как для документов обычно, с фикстрованной длинной поля и дополнением нулями, типа 6Б-000001 6Б-000002 .... 6Б-000010 6Б-000011 сортировалось бы как желается.
-
Проблема в том что первіх символов может быть и не 2 но структура 6Х-число, где Х может догодить до 4 симоволов сохраняется. общую идею я понял, спасибо, будем пробовать
|