![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
обновление DBGrid
-=snoop=- © (2005-07-06 12:58:00)привет всем
ситуация такая, на форме прописан TDBgri, TADOQuery,TDataSource
TADOQuery смотрит на 2 таблички дбф, из которых выделятся данные.
есть у меня кнопка "делете", нажав котору происходит следующее событие
[начало цикла]
[проветка на кол-во выделенных записей]
//удаление записей
gADOq.SQL.Clear();
gADOq.SQL.Add('delete from E:\work\!userbst\grupp.dbf where trim(name) ='+''''+lGrName+''''+' and trim(predpr) ='+''''+lPrCode+'''') ;
gADOq.ExecSQL() ;
end;
end;
//обновлнеи таблици
gADOq.SQL.Clear ;
gADOq.SQL.Add('SELECT a.name, b.lbl_name, b.lbl_path, b.lbl_code FROM E:\work\!userbst\grupp a INNER JOIN label.pro b ON a.predpr=b.lbl_code WHERE trim(Name)='+''''+gGruppName+'''') ;
gADOq.ExecSQL() ;
lBaseGRD.DataSource.DataSet.Active := true ;
не знаю как делать правильно, но мне кажется , делать второй запрос не верно и есть св-во, которое отвечает за этот процесс, но у какого объекта не могу найти, все refreshi перебрал, не помогает, подскажите чего мона сделать)))
-=snoop=- (2005-07-06 14:44:00) [1]если Вы про
lBaseGRD.DataSource.DataSet.Active := true
%)
с кем не бывает по неопытности
msguns (2005-07-06 14:42:00) [2]А зачем обращение к одному и тому же датасету то напрямую, то хитро через грид - чтоб немцы не догадались ?
-=snoop=- (2005-07-06 14:31:00) [3]да, я ее забыл удалить
спасибо
stone (2005-07-06 14:23:00) [4]
> gADOq.open() ;
> lBaseGRD.DataSource.DataSet.Active := true
> ;
Если lBaseGRD.DataSource.DataSet = gADOq, то последняя строка не имеет смысла
-=snoop=- (2005-07-06 14:04:00) [5]т.е. вот так должно все выглядеть
//удаление
lGrName := trim(lBaseGRD.DataSource.DataSet.FieldValues['Name']) ;
lPrCode := trim(lBaseGRD.DataSource.DataSet.FieldValues['lbl_code']) ;
//showmessage(''''+lGrName+''''+' and trim(predpr) ='+''''+lPrCode+'''') ;
gADOq.SQL.Clear();
gADOq.SQL.Add('delete from E:\work\!userbst\grupp.dbf where trim(name) ='+''''+lGrName+''''+' and trim(predpr) ='+''''+lPrCode+'''') ;
gADOq.ExecSQL() ;
//обновление
gADOq.SQL.Clear ;
gADOq.SQL.Add('SELECT a.name, b.lbl_name, b.lbl_path, b.lbl_code FROM E:\work\!userbst\grupp a INNER JOIN label.pro b ON a.predpr=b.lbl_code WHERE trim(Name)='+''''+gGruppName+'''') ;
gADOq.open() ;
lBaseGRD.DataSource.DataSet.Active := true ;
-=snoop=- (2005-07-06 13:54:00) [6]туплю, просто куча ошибок сыпится при групповом удалении всяких
msguns (2005-07-06 13:45:00) [7]Для изменения (UPDATE-DELETE-INSERT) используется TADOCommand или TADOQuery (метод ExecSQL). Для отображения данных в гриде юзают TADOQuery.Open
Справка же есть. Ну чего ж не почитать, а ?
-=snoop=- (2005-07-06 13:41:00) [8]если использовать gADOq.Open = выдается ошибка
gADOq: CommandText does not return a result set
-=snoop=- (2005-07-06 13:39:00) [9]gADOq.ExecSQL() мне ведь запрос нужно запустить на выполнение
-=snoop=- (2005-07-06 13:34:00) [10]попробую,))
stone (2005-07-06 13:11:00) [11]
> //обновлнеи таблици
> gADOq.SQL.Clear ;
> ...
> gADOq. ExecSQL();
Нужно gADOq.Open;
-=snoop=- (2005-07-06 13:09:00) [12]Вы имеете ввиду gADOq? обновление у меня происходит после всех удалений
msguns (2005-07-06 13:01:00) [13]А зачем две ветки-то заводить ?