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

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

обновление 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]

А зачем две ветки-то заводить ?


Наверх

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