Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > TQuery


Автор: W1zArD 3.6.2007, 13:33
Значит так )
как только дело доходит до Query1.Append
ошибка:
Запрос - 'SELECT * FROM Base'
Active = True
Cannot modify a read-only dataset...
что это?? с Table такого нет...
что я делаю не так????

RequestLive = True

Автор: Данкинг 3.6.2007, 13:36
А разве с Query вообще Append работает в принципе??

Автор: W1zArD 3.6.2007, 13:39
хм... читал (по мойму даже в DRKB) что Table и Query схожи, но Query расширена за счет работы с запросами.

Автор: Rodman 3.6.2007, 14:56
Код

AdoQuery.Close;
AdoQuery.SQL.CLear;
AdoQuery.SQL.Add( 'SELECT * FROM Base');
AdoQuery.Open;

вот так будет все работать...
Цитата(W1zArD @  3.6.2007,  12:39 Найти цитируемый пост)
читал (по мойму даже в DRKB) что Table и Query схожи, но Query расширена за счет работы с запросами

что то интересное!!!

Автор: Данкинг 3.6.2007, 15:18
Цитата(Rodman @ 3.6.2007,  15:56)
Код

AdoQuery.Close;
AdoQuery.SQL.CLear;
AdoQuery.SQL.Add( 'SELECT * FROM Base');
AdoQuery.Open;

вот так будет все работать...


Так это же совсем не adoquery.append ! Понятно, что так не может не работать...

Автор: Rodman 3.6.2007, 15:33
Данкинг, судя по запросу ему нужна выборка, а что Append'ить хочет не понятно!!!

Автор: Deniz 4.6.2007, 06:57
>W1zArD
Укажи с какой БД работаешь.
В некоторых, сейчас не помню в каких, если в select есть order by Query становится не редактируемая.
И еще есть некоторые условия, при которых Query не будет редактироваться.
Еще можно использовать TUpdateSQL.

Добавлено через 1 минуту и 23 секунды
Данкинг, а причем тут adoquery?
У автора вроде TQuery.

Автор: ТоляМБА 4.6.2007, 08:10
W1zArD, а не разумнее ли использовать 
Код

INSERT INTO
 раз TQuery юзаешь?

Автор: pseud 4.6.2007, 11:39
W1zArD, 
Рекомендую пользоваться SQL
Например:
Код

INSERT INTO table
(Field1, Field2, Field3)
VALUES
(123, 'qwerty', '04.06.2007')


Если ты все же хочешь работать с Query как с Table и видимо ты работаешь с BDE, то 
свойство Query1.RequestLive := True
но не обещаю, что все заработает как надо.
Очень зависит от запроса Query1.
Если запрос 
Код

SELECT * FROM table

то заработает

а если сложный с объединениями, вычисляемыми полями, вложенными подзапросами - то нет

Мои советы:
1. не использовать открытые курсоры - aka Table и Query.RequestLive.
2. все делай через SQL

Много граблей мной было сломано прежде чем я пришел к этому. Поэтому не повторяй чужих ошибок.

Как вариант - можешь присмотреться к компоненту TUpdateSQL.

Автор: W1zArD 12.6.2007, 17:23
Да, работаю с BDE...
Всем спасибо )
буду работать SQL запросами...

%| надеюсь выучить его не проблема ;)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)