![]() |
|
|
![]()
|
|
| Smoki |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 2.6.2006 Репутация: нет Всего: нет |
Знает ли кто нибудь как решить такую проблему:
Есть БД paradoxб связь BDE. Необходимо организовать сортировку, как в access, для конкретно выбранного поля. Т.е. не просто запрос : SELECT * FROM "'+Имя открытой таблицы+'" ORDER BY фиксированное поле', а что то типа: SELECT * FROM "'+Имя открытой таблицы+'" ORDER BY '+выбранное поле. Я делаю так :
Но ничего не получается. Выскакивает такая ошибка : Acess violation at adress ... in module '*.exe'. Не знаю что делать. |
|||
|
||||
| ТоляМБА |
|
|||
![]() Котэ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1607 Регистрация: 15.12.2004 Репутация: 3 Всего: 252 |
Во-первых: самые распространенные грабли
и какого здесь делает , когда надо Query1.Open; Про это даже в хэлпе написано. Во-вторых: вывди в ShowMessage , она там действительно показывает выбранное поле? А если не выбрал? На будущее поставь проверку. |
|||
|
||||
| Smoki |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 2.6.2006 Репутация: нет Всего: нет |
DBGrid1.SelectedField.FieldName - показывает имя выбранного поля.
Насчет ExecSQL и open - пробовал и так и так, не получается пишет ту же ошибку. |
|||
|
||||
| matriza |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 7.5.2006 Репутация: нет Всего: нет |
попробуй убрать из связки (а как я понял там связка из Table+Query+Datasource) Table... у меня бывало что с такой связкой в парадоксе запросы просто игнорировались... причём связка делалась разными способами... и в итоге пришлось отказаться от Table и работать только с Query... прибавилось несколько небольших сложностей =) но зато всё получилось... =)
|
|||
|
||||
| ТоляМБА |
|
|||
![]() Котэ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1607 Регистрация: 15.12.2004 Репутация: 3 Всего: 252 |
Парадокса 6 нет, создавал в DatabaseDesktop с типом Paradox 7.
Создал 2 едита - в первом имя таблы, во втором имя поля для сортировки. Текст запроса
Выведи через ShowMessage(Table1.TableName) - из текста запроса, что пишет, выведи также Query1.SQL.Text - это текст всего запроса - выводить перед Open. Короче или у тебя лишние двойные кавычки или имя таблицы не берётся. |
|||
|
||||
| Smoki |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 2.6.2006 Репутация: нет Всего: нет |
Вывел через showmessage - показывает полный путь к базе (D:\...\...\...\base.db), с кавычкаим все OK.
Я немного изменил конструкцию получения текущего имени столбца: 1)Кинул на форму edit1. (для проверки) 2) Событию DBGrid'a OnCellClick указал
3)Собственно сама процедура сортировки стала такой:
Работает с полями типа ftstring, ftcurrency,ftdatatime, не всегда работает с ftdate и fttime и вообще не хочет работать с ftinteger. С ftdate и fttime не работает лишь в тех случаях если столбцы названы date и time соответственно(Проверено). |
||||
|
|||||
| Golden Hands |
|
||||||||
![]() Золотой ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2023 Регистрация: 23.1.2005 Где: Екатеринбург Репутация: 2 Всего: 83 |
ExecSQL применяется в тех случаях, когда результат выполнения не возвращает наборов данных (insert, update, delete...). В других случаях (select) используются методы Open и Close (аналогичные Active:=True и Active:=False). Могу судить только по dBase (но думаю что в Paradox так же), что такой путь неприемлем. Необходимо указывать только имя файла без расширения. В данном случае - base. сделай так:
Двойные кавычки там нафиг не нужны
Не работает, ибо названиям столбцов присвоены ключевые слова SQL. Исправляется так: вместо
пиши
-------------------- Мы обречены... но только на победу! Настанет день, и мы построим новый дом. Внесем в него тепло, что сохранить сумели, И воскресим все то, что в нас когда-то умерло... © Тень Света |
||||||||
|
|||||||||
| Smoki |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 2.6.2006 Репутация: нет Всего: нет |
Сделал как предложили:
все равно не работает. С полями ftdate и fttime та жа проблема, а ftinteger вообще не хочет работать. Может есть другой способ. Это сообщение отредактировал(а) Smoki - 4.6.2006, 09:59 |
|||
|
||||
| ТоляМБА |
|
|||
![]() Котэ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1607 Регистрация: 15.12.2004 Репутация: 3 Всего: 252 |
Таблицу можешь выложить с которой траблы? Или на мыло
|
|||
|
||||
| Smoki |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 2.6.2006 Репутация: нет Всего: нет |
ТоляМБА, я вообще-то пытаюсь написать программу для просмотра таблиц paradox.
Что-то на подобии Aceess, но естественно скромнее в плане функций. Поэтому у меня все таблицы с полями ftinteger- большая трабла для меня. Почему то не хотят сортироваться поля названия которых начинается с цифры (например 4Field) и в названии которых есть пробел (например First Field).Относительно цифр у меня подозрения что это из-за того что число воспринимается как номер столбца. Если да то как можно енто исправить, ну и проблему с пробелами тоже. Это сообщение отредактировал(а) Smoki - 6.6.2006, 21:19 |
|||
|
||||
| ТоляМБА |
|
|||
![]() Котэ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1607 Регистрация: 15.12.2004 Репутация: 3 Всего: 252 |
||||
|
||||
| Smoki |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 2.6.2006 Репутация: нет Всего: нет |
Помогите решить такую проблему:
После выполнении сортировки в таблице paradox, я не могу изменять данные таблицы, подскажите пожалуйста в чем проблема. Вот код сортировки:
|
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: нет Всего: 260 |
странно. requestlive установлено в True?
|
|||
|
||||
| ТоляМБА |
|
|||
![]() Котэ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1607 Регистрация: 15.12.2004 Репутация: 3 Всего: 252 |
||||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: нет Всего: 260 |
ТоляМБА, хех. Значит, даже при простой сортировке используется временная таблица, и позволять редактировать её - бессмысленно и нелогично
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |