|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
20.08.2009, 14:43 | #1 |
Пользователь
Регистрация: 20.08.2009
Сообщений: 16
|
Сортировка по частям одного поля
Delphi7. Таблицы типа dBase. технология BDE, Query, Dbgrid
Запрос Query1.SQL.Text:= 'SELECT A.ICODE,A.NAME,B.KRNAM,C.KRNAM,A.PR IMECH1,A.PRIMECH2,'+ 'A.PRIM,A.IPR,A.ITU,A.Q,A.H,A.NVR,A .QMIN,A.QMAX,A.KPD,A.IST,'+ 'A.NS,A.NPSH,A.CKR,S.NAM,D.NAM,A.KO RP,T.NAM,E.NAM,F.NAM,G.NAM,H.NAM,I. Nam,'+ 'J.NAM,K.NAM,L.NAM,M.NAM,A.D2,A.P1, A.P2,N.NAM,A.T1,A.T2,A.RO,'+ 'A.NU,O.NAM,P.NAM,Q.NAM,R.NAM,A.EDV ,A.MAS,A.ISPOL,A.GODVIP,A.ZAM1,'+ 'A.ZAM2,A.ZAM3 FROM "NASOS.dbf" As A,"SPRZAKAZ.dbf" As B,"SPRSTRAN.dbf" As C,'+ '"SPRTNAS.dbf" As D,"SPRPODV.dbf" As E,"SPROTV.dbf" As F,"SPRRAZG.dbf" As G,"SPRUPL.dbf" As H,'+ '"SPRPODSH1.dbf" As I,"SPRPODSH2.dbf" As J,"SPRMSUS1.dbf" As K,"SPRMSUS2.dbf" As L,"SPRMUF.dbf" As M,'+ '"SPRSREDA.dbf" As N,"SPRMVAL.dbf" As O,"SPRMRK.dbf" As P,"SPRMNA.dbf" As Q,"SPRMKOR.dbf" As R,'+ '"SPRNANAS.dbf" As S,"SPRSHNEK.dbf" As T WHERE (A.KZAK=B.KZAK) and (A.KSTR=C.KSTR) and '+ '(A.KORIEN=S.KORIEN) and (A.KTIP=D.KTIP) and (A.SHNEK=T.SHNEK) and '+ '(A.KPODV=E.KPODV) and (A.KOTV=F.KOTV) and (A.KRAZG=G.KRAZG) and (A.KUPL=H.KUPL) and '+ '(A.KPODSH1=I.KPODSH) and (A.KPODSH2=J.KPODSH) and (A.KMSUS1=K.KMSUS) and (A.KMSUS2=L.KMSUS) and '+ '(A.KMUF=M.KMUF) and (A.KSR=N.KSR) and (A.KMVAL=O.KMAT) and (A.KMRK=P.KMAT) and (A.KMNA=Q.KMAT) and (A.KMKOR=R.KMAT)'+ ' order by ICODE'; По нажатию на кнопках надо сортировать поле по убыванию и возрастанию. Все нормально. Использую order by <имя поля>. Но есть поле IPR, которое принимает такие значения, например: Н78.06.000 00 ТУ, Н06.23.00.00-10, Н12.153.000.00-03, Н12.153.000.00, Н06.18.10, Н19.10, Н171.35, У181.37. Заказчик хочет, чтобы это поле было отсортировано так: сначала до первой точки, потом до второй, до третьей и после третьей. Но точек бывает и 3, и 2, и 1. И от точки до точки - разное количество знаков. Надо создавать какой-то очень сложный запрос, до которого я додуматься не могу. Везде поискала. Нашла что-то очень отдаленно напоминающее. Но приспособить к своему случаю не смогла. Если можете, помогите, пожалуйста. Заранее благодарю. Последний раз редактировалось tatiana__; 20.08.2009 в 14:57. |
20.08.2009, 15:04 | #2 |
SQL-коддинг
Участник клуба
Регистрация: 16.01.2009
Сообщений: 1,192
|
могу предложить такой вариант - нужно выделить все числовые куски из поля и сортировать по ним
если получится, то лучше это сделать в самом запросе если нет, то придется добавлять новые поля в соответствии с максимальным кол-вом чисел (например, 3 поля) и заполнять их для новых записей при вставке. старые отапдейтить - а способ: либо руками, либо писать процедуру |
20.08.2009, 15:08 | #3 |
Пользователь
Регистрация: 20.08.2009
Сообщений: 16
|
Но там есть и буквы и - (дефис)
Последний раз редактировалось tatiana__; 20.08.2009 в 15:44. |
20.08.2009, 15:58 | #4 |
SQL-коддинг
Участник клуба
Регистрация: 16.01.2009
Сообщений: 1,192
|
ну вот и выделите сначала буквы, потом цифры
никто и не говорит, что это простая задача пример решения для оракла влоб преобразую к числовому виду только первые два числовых интервала Код:
вряд ли у вас есть даже аналог используемых фунок именно поэтому я говорю, что нужно под эту задачу затачивать табличку с этими данными (вводить новые поля для хранения интервалов - из моего примера выходит минимум 5 новых полей) Последний раз редактировалось soleil@mmc; 20.08.2009 в 16:14. |
21.08.2009, 15:41 | #5 |
Пользователь
Регистрация: 20.08.2009
Сообщений: 16
|
Я написала, что таблицы типа dBase, что выделять я знаю, а как в запросе это сделать - не знаю.
Функций таких тоже нет. Последний раз редактировалось tatiana__; 21.08.2009 в 16:51. |
21.08.2009, 17:41 | #6 | ||
SQL-коддинг
Участник клуба
Регистрация: 16.01.2009
Сообщений: 1,192
|
Цитата:
Цитата:
|
||
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Очистка одного поля в таблице | EugeneIsmatulin | Общие вопросы Delphi | 2 | 10.06.2009 16:55 |
Возможно ли использование нескольких столбцов подстановки для одного поля? | jonni | Microsoft Office Access | 10 | 20.05.2009 22:25 |
Перетаскивание значения одного поля в другое | inret | Общие вопросы Delphi | 3 | 09.05.2008 15:26 |
Сортировка в StringGrid'е, копирование строк из одного SG в другой | monushka | Помощь студентам | 3 | 29.10.2007 23:54 |
Присвоение значения одного поля другому | frai | БД в Delphi | 2 | 20.09.2007 15:03 |