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

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

Проблемы с изменением таблицы [D6, dBase, FoxPro]


Jackal22 ©   (2002-11-27 11:21:00) 

Есть талица dBase к которой я подключаюсь с помощью TQuery.
При Query1.Insert возникает ошибка
Cannot modify a read-only dataset.
Как с зтим боротся?
Всем зарание спасибо!!!!


Max Zyuzin   (2002-11-27 13:28:00) [1]

>Jackal22 © (27.11.02 13:02)
Почитай help про кешированные обновления, а потом воспользуйся советом exit (27.11.02 13:16), и в Query можно будет применять методы Insert, Edit....


exit   (2002-11-27 13:16:00) [2]

Уф... Все это вставь в TUpdateSQL (я же сказал уже).
У TQuery есть свойство UpdateObject (published). Выбери там свой TUpdateSQL и... Edit, Insert, Append, Post, Delete ...


Jackal22   (2002-11-27 13:02:00) [3]

No Problem.
Так и сделал, я просто думал может че иное попроще есть,
типа TTable-овских методов.


exit   (2002-11-27 12:44:00) [4]

Сколько фатализма... Какие проблемы то, не пойму.

InsertSQL: INSERT INTO TABLE (ID, NAME,...) VALUES (:ID, NAME,...)

UpdateSQL: Update Table SET NAME = NAME WHERE ID = :ID

DeleteSQL: Delete From Table WHERE ID = :ID


Jackal22   (2002-11-27 12:39:00) [5]

Всем спасибо за помощь.
Придется наверное править при помощи языка SQL. Как я понял других способов НЕТ.


exit   (2002-11-27 12:19:00) [6]


> Используй TTable, у него есть методы Inert, Edit и Post.
> А если хочешь все-таки через TQuery, то луше используй SQL
> язык:

Караул, помогите! Кто отнял все эти чудо методы у TQuery?


Valeron   (2002-11-27 12:14:00) [7]

Используй TTable, у него есть методы Inert, Edit и Post. А если хочешь все-таки через TQuery, то луше используй SQL язык:

для добавления записи
INSERT INTO name-table(field1,field2,...,fieldn)
VALUE (value1,value2,...,valuen")

для изменения записи
UPDATE name-table
SET field1=...,
WHERE field2=...

для удаления
DELETE FROM name-table
WHERE field1=...

Все это вызывается методом ExecSQL


Jackal22   (2002-11-27 11:43:00) [8]

>stone. RequestLive=true установлено но вот результат тотже.


exit   (2002-11-27 11:26:00) [9]

Да, видимо нужно заготовить себе шаблоны с ответами для тех, кому сложно нажать F1.
На каком основании будет делаться Insert, если SQL в Query берет данные из нескольких таблиц? Нужно подключить к Query TUpdateSQL, написать в нем коды для всех случаев: Insert, Update...etc


stone   (2002-11-27 11:23:00) [10]

Установи RequestLive=true


Наверх

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