Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TQuery+order by [D7, Paradox]


Страницы:   1 2

VitalikS ©   (2006-01-14 09:34:00) 

Выполняю в запросе SQL ...order by name и после не могу добавить в таблицу никаких данных. Таблица становится недоступной для записи. Что можно сделать с этим или как другим образом упорядочить записи???

Технология доступа: BDE


msguns   (2006-01-16 15:14:00) [21]

>VitalikS   (16.01.06 14:37) [16]
>К сожалению я не знаю как это сделать, а точнее не понимаю, что всё это означает и как это расшифровать....

Когда используются компоненты, позволяющие непосредственно редактировать таблицу(ы) БД (TXXXTable,TXXXQuery+TUpdateXXX,TXXXDataSet), управлять синхронностью "клиентских" и "серверных" изменений достаточно сложно, а иногда невозможно. Как следствие - "запаздывание" изменений непосредственно в БД и "непрозрачность" их для других пользователей БД.
Кроме того, существенно усложняется логика реализации многоступенчатых изменений в БД, не поддерживающих транзакции (пример -тот же парадокс), т.к. приходится приспосабливать собственный алгоритм к алгоритму, заложенному разработчиками компонент.

Для отделения чтения и изменения данных используют доступ, основанный на разных компонентах. Например, читаем TQuery, изменяем другим TQuery с последующей перечиткой НД в первом. При такой технологии возможно ЛЮБОЕ отображение ЛЮБЫХ частей БД, даже из нескольких таблиц. Однако непосредственно в отображающем гриде данные изменять нельзя. Изменение выполняется через модальную форму с не DB-aware контролами посредством выполнения отдельного запроса (TQuery) и последующей перечиткой отображаемого НД. При таком подходе можно полностью контролировать процесс передачи изменений на сервер, управлять их последовательностью и целостностью. Т.е. фактически "имитировать" транзакции в не SQL-серверных БД.

Можно для удобства пользователя, привыкшего к "эксельному" механизму правок прямо в решетке, сообразить такой же интерфейс. Однако это уже потребует некоторого гемора с кодом, т.к. придется "помучится" с правильной отрисовкой панели, визуально вставляемой на место текущей строки грида и соответствующими событиями датасета, грида и панели чтобы
внешне все выглядело "натурально"


evvcom   (2006-01-16 14:53:00) [22]


> Лучше чего-нибудь толковое написал бы!!!

А зачем, если все толковое уже написали? А мой пост преследовал только одну цель. Коли просишь помощи здесь, не надо интерпретировать ошибку по-своему, она (интерпретация) может быть ошибочной. Дай текст ошибки в оригинальном ее написании.


VitalikS   (2006-01-16 14:37:00) [23]


> Что прям так и пишет: "что поле Key (то самое в котором
> счетчик и которое является ключом) пустое, а так как поле
> ключевое оно не может быть пустым."? Я вообще-то встречал
> только англоязычные компоненты. А твой трактат оригинального
> текста, я думаю, никого здесь не волнует. Аглицкий мы тоже
> понимам...

Лучше чего-нибудь толковое написал бы!!!

Desdechado © эту проблему уже удалось решить и как раз вторым способом, но я только галочку снял  на обязательность поля и всё стало работать нормально.
Спасибо всем кто помогал решить данную проблему


> эмулирование редактирования "в гриде" посредством ловко
> подставляемой панели с эдитами "как в строке грида".

К сожалению я не знаю как это сделать, а точнее не понимаю, что всё это означает и как это расшифровать....


evvcom   (2006-01-16 13:39:00) [24]


> и вылетает ошибка

Что прям так и пишет: "что поле Key (то самое в котором счетчик и которое является ключом) пустое, а так как поле ключевое оно не может быть пустым."? Я вообще-то встречал только англоязычные компоненты. А твой трактат оригинального текста, я думаю, никого здесь не волнует. Аглицкий мы тоже понимам...


msguns   (2006-01-16 13:17:00) [25]

Работа с парадоксом вообще чревата потерями данных, а через кэширование - тем более.
Выход один - отказ от редактирования в отображающем датасете. Интерфейс реализовать через модальную форму или эмулирование редактирования "в гриде" посредством ловко подставляемой панели с эдитами "как в строке грида".


Desdechado   (2006-01-16 11:18:00) [26]

1. можешь его заполнить "мусором", который все равно будет заменен сервером
2. можешь сбросить признак ключа и обязательности у этого TField, тогда не будет ругаться


VitalikS   (2006-01-16 02:56:00) [27]


> невнимательно ты читал про CachedUpdates
> пока ApplyUpdates не сделаешь, на сервер ничего не отправится,
>  соответственно, никакой счетчик не увеличится

Делаю ApplyUpdates и вылетает ошибка что поле Key (то самое в котором счетчик и которое является ключом) пустое, а так как поле ключевое оно не может быть пустым.


VitalikS   (2006-01-15 15:25:00) [28]


> работаешь навигационными способами с целыми таблицами, а
> стоило бы - с выборками по условию (а это уже другой уровень)

У меня программа построенна как раз с выборками по условию (все таблицы на запросах SQL), частично это видно из моего первого вопроса


Desdechado   (2006-01-15 15:08:00) [29]

невнимательно ты читал про CachedUpdates
пока ApplyUpdates не сделаешь, на сервер ничего не отправится, соответственно, никакой счетчик не увеличится
почитай статьи по поводу работы в технологии Client-Server
ибо похоже, что ты работаешь навигационными способами с целыми таблицами, а стоило бы - с выборками по условию (а это уже другой уровень)


VitalikS   (2006-01-15 14:42:00) [30]


> без знаков препинания смысл теряется
> и что за счетчик в таблице? что пустое? в каком случае?

Вроде всё понятно написал, счетчик это тип поля - автоинкримент.
Вставляю запись в таблицу (Insert) все поля заполняю, сохраняю сделанные изменения (Post), а поле запись в которое должен делать счетчик, остается пустым.


Desdechado   (2006-01-15 14:14:00) [31]

> счетчик в таблице перестает считать поле остается пустым
без знаков препинания смысл теряется
и что за счетчик в таблице? что пустое? в каком случае?


VitalikS   (2006-01-15 14:05:00) [32]


> я не понял, то у тебя писать в таблицу нельзя, то записи
> не упорядочены
> ты определись как-нибудь
> и справку по [1] почитай ВНИМАТЕЛЬНО, без этого никто с
> ложки кормить тебя не будет

Мне нужно чтобы записи были упорядоченны и чтобы я мог с таблицей нормально работать!


VitalikS   (2006-01-15 13:37:00) [33]

Установил компонент TUpdateSQL всё связал как надо, CachedUpdates установил в True, всё заработало, но теперь когда я добавляю новую запись счетчик в таблице перестает так сказать считать поле остается пустым. Что можно с этим сделать????


Desdechado   (2006-01-15 13:35:00) [34]

я не понял, то у тебя писать в таблицу нельзя, то записи не упорядочены
ты определись как-нибудь
и справку по [1] почитай ВНИМАТЕЛЬНО, без этого никто с ложки кормить тебя не будет


VitalikS   (2006-01-15 03:00:00) [35]

Всё установленно, RequestLive установлен в true, индексы назначенны, но записи всё-равно не упорядоченны.


Desdechado   (2006-01-14 19:41:00) [36]

установка RequestLive=True НЕ гарантирует, что датасет таки будет Live


Anatoly Podgoretsky   (2006-01-14 16:42:00) [37]

VitalikS   (14.01.06 09:34)  
Индексы сделай для этих полей и RequestLive установи.
Или кешированые изменения.


Desdechado   (2006-01-14 16:18:00) [38]

читаем про CachedUpdates, TUpdateSQL


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо