Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2009, 15:30   #1
Toky
Пользователь
 
Регистрация: 16.09.2009
Сообщений: 19
По умолчанию Ошибка при редактировании в Query

При попытке редактирования таблицы в состоянии запроса возникает ошибка:
Query1: Cannot modify a read-only dataset

Как сделать его read-only false?
и какой именно датасет

Код:
begin 
S:=''; 
S:=Edit1.text+'%'; 
with Query1 do 
begin 
close; 
SQL.clear; 
SQL.Add('SELECT * FROM DataSource '); 
SQL.Add('where upper(Vrach) LIKE' +quotedstr(AnsiUpperCase(s))); 
SQL.Add('ORDER BY Vrach'); 
Open; 
end; 
end; 
if Query1.RecordCount <> 0 then 
begin 
DataSource1.DataSet:=Query1; 
DataSource1.DataSet.Edit; 
Query1.Edit; 
end 
else begin 
ShowMessage('нужная запись не найдена!'); 
Edit1.Text:=''; 
DataSource1.DataSet:=Table1; 
if Form2.Edit1.Text='' then 
Form2.DataSource1.DataSet:=Form2.Table1;
Toky вне форума Ответить с цитированием
Старый 13.12.2009, 15:46   #2
dron-s
Форумчанин
 
Регистрация: 04.03.2007
Сообщений: 615
По умолчанию

используй не TQuery а TDataSet и напиши запрос на редактирование данных
dron-s вне форума Ответить с цитированием
Старый 13.12.2009, 16:02   #3
Toky
Пользователь
 
Регистрация: 16.09.2009
Сообщений: 19
По умолчанию

Цитата:
Сообщение от dron-s Посмотреть сообщение
используй не TQuery а TDataSet и напиши запрос на редактирование данных
Нету в вкладке BDE TDataSet, а только в ADO есть а база у меня не на них написана
Toky вне форума Ответить с цитированием
Старый 13.12.2009, 18:15   #4
dron-s
Форумчанин
 
Регистрация: 04.03.2007
Сообщений: 615
По умолчанию

Цитата:
Сообщение от Toky Посмотреть сообщение
Нету в вкладке BDE TDataSet, а только в ADO есть а база у меня не на них написана
зато есть TUpdateSQL
и вообще, забей на BDE и переходи на что более надёжное и поддерживающееся
dron-s вне форума Ответить с цитированием
Старый 13.12.2009, 18:28   #5
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
Нету в вкладке BDE TDataSet
А TDataSet это не компонент, а, если я не ошибаюсь, потомок TDataSource. Например, Table1.DataSource.DataSet.
Далее, у компонента Query1 есть такое свойство RequestLive. Поставьте его в True. И попробуйте снова.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 13.12.2009, 19:26   #6
Toky
Пользователь
 
Регистрация: 16.09.2009
Сообщений: 19
По умолчанию

Цитата:
Сообщение от artemavd Посмотреть сообщение
А TDataSet это не компонент, а, если я не ошибаюсь, потомок TDataSource. Например, Table1.DataSource.DataSet.
Далее, у компонента Query1 есть такое свойство RequestLive. Поставьте его в True. И попробуйте снова.
Уже попробовал Аксес виолэйшэн эт эдесс и т.д. короче не работает так:
Код:
Query1.DataSource.DataSet.Edit;
Query1.RequestLive:=True;
Toky вне форума Ответить с цитированием
Старый 13.12.2009, 19:29   #7
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Попробуйте так:
Код:
begin 
S:=''; 
S:=Edit1.text+'%'; 
with Query1 do 
begin 
active:=false; 
SQL.clear; 
SQL.Add('SELECT * FROM DataSource '); 
SQL.Add('where upper(Vrach) LIKE' +quotedstr(AnsiUpperCase(s))); 
SQL.Add('ORDER BY Vrach'); 
actie:=true; 
end; 
end; 
if Query1.RecordCount <> 0 then 
begin 
DataSource1.DataSet:=Query1; 
DataSource1.DataSet.Edit; 
Query1.Edit; 
end 
else begin 
ShowMessage('нужная запись не найдена!'); 
Edit1.Text:=''; 
DataSource1.DataSet:=Table1; 
if Form2.Edit1.Text='' then 
Form2.DataSource1.DataSet:=Form2.Table1;
!!! Кстати, что это такое???
Код:
SQL.Add('SELECT * FROM DataSource ');
Что еще за DataSource??
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 13.12.2009, 20:19   #8
Toky
Пользователь
 
Регистрация: 16.09.2009
Сообщений: 19
По умолчанию

DataSource это Название моей таблицы в базе данных! Вот так вот и ничего с этим не попишешь!
Запрос выполняется нормально вот
Код:
begin 
DataSource1.DataSet:=Query1; 
DataSource1.DataSet.Edit; 
Query1.Edit; 
end
Насчет этого: пишет кэннот модифай рид онли дата сет вот! Как и раньше!

Последний раз редактировалось Toky; 13.12.2009 в 20:24.
Toky вне форума Ответить с цитированием
Старый 14.12.2009, 16:42   #9
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
Запрос выполняется нормально вот
Странная какая-то конструкция. Смените имя вашей таблицы. Ну нельзя называть таким именем таблицу. Может быть в это и причина. Попробуйте любое другое имя.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при редактировании поля (в Update) Droid БД в Delphi 4 12.07.2009 19:51
В чем ошибка запроса query к MySQL? xxxsas SQL, базы данных 2 13.04.2009 09:55
Проблема при редактировании данных GloomyVitek БД в Delphi 8 24.11.2007 18:54
Кракозябры при редактировании таблиц Balvenie БД в Delphi 1 23.04.2007 16:18