Как да сортирам набор от данни, ако в имената на полетата има запетаи

Има ADODataSet с полета: [Поле1], [Поле2 с интервал], [Поле3], [Поле4, със запетая].
Трябва да го сортирате по някои полета.
Ако харесвам това: ADODataSet.Sort = "[Поле1], [Поле2 с интервал], [Поле3]", тогава всичко е сортирано много добре, без коментари.
Ако ми хареса това: ADODataSet.Sort = "[Поле1], [Поле4, със запетая], [Поле3]", тогава ругатната се появява "Поле" Поле4 "не е намерено".
Очевидно низът с полета за сортиране се нарязва на сегменти между запетаите.

Така че въпросът е:
как мога да сортирам набор от данни по няколко полета, ако в имената на полетата има запетаи?

Два отговора се предлагат сами, въпреки че тяхната точност зависи от вашата СУБД.
1. Оградете името на всяко поле в двойни кавички. Например „Поле, 1“, „Поле, 2“
2. Избройте задължителните полета чрез номериране. например,
ИЗБЕРЕТЕ "Поле, 1", "Поле, 2"
ОТ ТАБЛИЦА1
ПОРЪЧАЙТЕ ПО 1, 2

и в MSSQL - [Име на поле]

Благодаря Ви за отговора.

Вариант 1 не работи. Разбира изключението: „Елементът не можа да бъде намерен в колекцията, съответстващ на заявеното име (имена).“ Преведох това от английски. Като цяло всичко е естествено.

Вариант 2 не е подходящ. SQL не може да се приложи. Има само статичен набор от данни, отделен от базата данни.

Господа! Въпросът е властта.
Как мога да сортирам набор от данни по няколко полета, ако в имената на полетата има запетаи?

на [email protected]
Това, разбира се, зависи от СУБД. Авторът на въпроса не го е посочил, поради което е невъзможно да се даде ясен отговор.
Използвам DB2 UDB 7.2. Има сдвоени цитати.

Бъди внимателен. Вече използвам квадратни скоби (за полета с интервали в средата).

Добре. Но се чудя какво тогава пишете в заглавката на заявката? ИЗБЕРЕТЕ.

Така че, ще се опитам да поясня отново:
1. Някога се правеше ИЗБОР към основата. Резултатите бяха запазени в XML с помощта на метода ADOQuery.SaveToFile ("data.xml");
2. Всичко, всички са забравили за основата.
3. Тогава се случи ADODataSet.LoadFromFile ("data.xml"). Нека ви напомня, че няма база. Има само набор от данни.

Така че това е, което трябва да сортирате.

Пръчки за коледни елхи, наистина ли няма решение ?

> Едно време на базата беше извършен SELECT.
Затова използвайте нормални имена на полета в него.

> „Елементът не можа да бъде намерен в колекцията, отговарящ на необходимите имена“.
И ако погледнете имената на елементите в същата колекция?

добре.
Виждам пълно неразбиране на проблема.
Нека си представим, че няма база, не е имало и няма да се появи в бъдеще. Но има набор от данни. Набор от данни, създаден от метода ADODataSet.CreateDataSet.
И в имената на полетата НАПЪЛНО е вероятно да съдържа запетаи, запетая и т.н. Не е задължително да се ограничава! Може да не присъстват, но тогава не бих писал тук.
Ето въпроса:
Как мога да сортирам набор от данни по няколко полета, ако в имената на полетата има запетаи?

процедура TCustomADODataSet.RefreshIndexFields;
вар
IndexDef: TIndexDef;
FList: низ;
започнете
ако е Активно и (IndexName <> ") тогава
започнете
IndexDefs.Update;
IndexDef: = IndexDefs.Find (IndexName);
ако IndexDef <> нула тогава
FList: = IndexDef. Показва друго
FList: = ";
край иначе
започнете
FList: = StringReplace (Сортиране, ",", ";", [rfReplaceAll]);
FList: = StringReplace (FList, "DESC", ", [rfReplaceAll]); < Do not localize >
FList: = StringReplace (FList, "ASC", ", [rfReplaceAll]); < Do not localize >
FList: = StringReplace (FList, "[", ", [rfReplaceAll]);
FList: = StringReplace (FList, "]", ", [rfReplaceAll]);
край;
FIndexFields.Clear;
GetFieldList (FIndexFields, FList);
край;

Или се оплачете на Borland, че поради техния код не можете да сортирате по полето P ASCAL:-)

Да, видях този код. Просто си помислих, че вече някой е решил.
Добре ЮЮ, сигурно си прав. Ако искате да направите нещо, тогава го направете сами.
Не казвам сбогом, изведнъж някой ще отговори.