Форум: "Базы";
Текущий архив: 2002.10.10;
Скачать: [xml.tar.bz2];
ВнизКак сортировать датасет, ести в названии полей есть запятые ? Найти похожие ветки
← →
Сортировщик (2002-09-18 14:46) [0]Господа, здравствуйте.
Есть ADODataSet с полями: [Поле1],[Поле2 с пробелом],[Поле3],[Поле4, с запятой].
Нужно его отсортировать по каким-то полям.
Если я делаю вот так:ADODataSet.Sort="[Поле1],[Поле2 с пробелом],[Поле3]", то все сортируется на очень хорошо, без замечаний.
Если я делаю вот так: ADODataSet.Sort="[Поле1],[Поле4, с запятой],[Поле3]", то возникает ругань "Поле "Поле4" не найдено".
Очевидно, то строка с полями для сортировки сечется на отрезки между запятыми.
Так вот, вопрос :
как мне отсортировать датасет по нескольким полям если в названии полей присутствуют запятые?
← →
passm (2002-09-18 16:00) [1]Напрашиваются два ответа, хотя их верность зависит от твоей СУБД.
1. Заключи имя каждого поля в парные кавычки. Например, "Поле, 1", "Поле, 2"
2. Перечисли необходиные поля нумерацией. Например,
SELECT "Поле, 1", "Поле, 2"
FROM TABLE1
ORDER BY 1, 2
← →
kserg@ukr.net (2002-09-18 16:10) [2]а в MSSQL - [Field Name]
← →
Сортировщик (2002-09-18 16:15) [3]За ответ спасибо.
1 вариант не работает. Понимает исключение: "Элемент не может быть найден в коллекции, соответствующей требуемому названию (имени)". Это я перевел с английского. В общем-то все закономерно.
2 вариант не подходит. SQL применить невозможно. Есть просто статический датасет, оторванный от БД.
Господа ! Вопрос в силе.
Как мне отсортировать датасет по нескольким полям если в названии полей присутствуют запятые?
← →
passm (2002-09-18 16:16) [4]to kserg@ukr.net
Это, разумеется, зависит от DBMS. Автор вопроса ее не указал, следовательно четкого ответа дать невозможно.
Я пользуюсь DB2 UDB 7.2. Там парные кавычки.
← →
Сортировщик (2002-09-18 16:18) [5]2kserg@ukr.net
Будьте внимательны. Квадратные скобки я и так использую(для полей с пробелами в середине).
← →
Сортировщик (2002-09-18 16:20) [6]У меня MSSQL2000.
← →
passm (2002-09-18 16:25) [7]Ok. Но интересно, а что ты тогда пишешь в заголовке запроса? SELECT...
← →
Сортировщик (2002-09-18 16:40) [8]Так, я попытаюсь еще раз пояснить:
1. Когда-то был выполнен SELECT к базе. Результаты были созранены в XML методом ADOQuery.SaveToFile("dataset.xml");
2. Все, про базу все забыли.
3. Затем произошел ADODataSet.LoadFromFile("dataset.xml"). Напомню, что базы нет. Есть только датасет.
Так вот его-то и нужно отсортировать.
← →
Сортировщик (2002-09-19 07:14) [9]Елки-палки, неужели нет решения ?
← →
ЮЮ (2002-09-19 08:06) [10]> Когда-то был выполнен SELECT к базе.
Вот и используй в нём нормальные названия полей
← →
ЮЮ (2002-09-19 08:14) [11]>"Элемент не может быть найден в коллекции, соответствующей требуемому названию (имени)".
А если посмотреть имена элементов в той самой коллекции?
← →
Сортировщик (2002-09-19 12:11) [12]2All
Ладно...
Вижу полное непонимание проблемы.
Давайте представим, что базы нет, не было, и в будущем не появится. Зато есть датасет. Датасет, созданный методом ADODataSet.CreateDataSet.
И в названиях полей у него ВПОЛНЕ ВЕРОЯТНО могут присутствовать запятые, точки с запятой и т.п. Это не должно ограничиваться! Могут и не присутствовать, но тогда бы я не писал здесь.
Так вот вопрос:
Как мне отсортировать датасет по нескольким полям если в названии полей присутствуют запятые?
← →
Alexandr (2002-09-19 12:18) [13]извращенец?
← →
ЮЮ (2002-09-19 12:46) [14]Смотри исходники:
procedure TCustomADODataSet.RefreshIndexFields;
var
IndexDef: TIndexDef;
FList: string;
begin
if Active and (IndexName <> "") then
begin
IndexDefs.Update;
IndexDef := IndexDefs.Find(IndexName);
if IndexDef <> nil then
FList := IndexDef.Fields else
FList := "";
end else
begin
FList := StringReplace(Sort, ",", ";", [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]);
end;
FIndexFields.Clear;
GetFieldList(FIndexFields, FList);
end;
Исправь исходники
← →
ЮЮ (2002-09-19 13:31) [15]Или пожалуйся в Borland, что из-за их кода не можешь сортировать по полю P ASCAL :-)
← →
Сортировщик (2002-09-19 15:01) [16]2Alexandr
Нет.
2 ЮЮ
Да видел я этот код... Просто думал, что это уже кто-то когда-то решил.
Ладно, ЮЮ, наверное ты прав. Если хочешь что-то сделать, то сделай это сам.
Я не прощаюсь, вдруг кто-нибудь все же откликнется.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.10.10;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.007 c