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


Автор: Delphist 24.7.2007, 09:17
У меня есть DBGridEh и MainDS: TFIBDataSet, соединенные через TDataSource. При добавлении записи срабатывает временный tmpDS, который строит хитрый insert и выполняет его. Вопрос такой - как мне теперь отобразить данные вставленной записи в DBGridEh, ответ очиведен сделать 
Код

MainDS.Close; 
MainDS.Open

Но данный способ мне не подходит т.к. при переоткрытии моего MainDS требуется значительно времени. Вот хотелось бы узнать можно ли переоткрывать не весь MainDS, а только определенную запись. 

Автор: Rodman 24.7.2007, 13:43
это что то на грани фантастики... возможно Refresh тебе поможет, но я не уверен!

Автор: Akella 24.7.2007, 13:48
не рефреш не поможет, по идее он только одну запись обновляет

Добавлено через 19 секунд
только так:
MainDS.Close; 
MainDS.Open

Автор: Delphist 24.7.2007, 14:21
Цитата(Akella @  24.7.2007,  14:48 Найти цитируемый пост)
не рефреш не поможет, по идее он только одну запись обновляет

Добавлено через 19 секунд
только так:
MainDS.Close; 
MainDS.Open 

А мне и нужно одну

Автор: Akella 24.7.2007, 15:11
вот покажи refresh-sql

Автор: Delphist 24.7.2007, 18:04
Цитата(Akella @  24.7.2007,  16:11 Найти цитируемый пост)
вот покажи refresh-sql 

Не понял.

Автор: Akella 25.7.2007, 08:23
Покажи SQL-код, который храниться в свойстве RefreshSQL компоненты TpFibDataset, так понятнее?

Добавлено через 3 минуты и 2 секунды
по идее
Код
select * from table where id = old.id


а если так:
Код
select * from table where id >= old.id


только нужно определять, что произошло добавление или редактирование и подставлять тот или иной код в RefreshSQL

Автор: Delphist 26.7.2007, 13:49
Цитата(Akella @  25.7.2007,  09:23 Найти цитируемый пост)
лько нужно определять, что произошло добавление или редактирование и подставлять тот или иной код в RefreshSQL 

А почему просто нельзя 
Код

select * from table where id = old.id

Автор: Alex 27.7.2007, 13:36
а insert в MainDS отрабатывает или все добавление через tmpDS происходит?

Автор: Delphist 27.7.2007, 14:47
Цитата(Alex @  27.7.2007,  14:36 Найти цитируемый пост)
а insert в MainDS отрабатывает или все добавление через tmpDS происходит? 

Все добавления происходят через tmpDS, а данные в MainDS я обновляю с помощью Append; FieldByName('..').As.. и т.д.
MainDS.InsertSql.Text = 'execute procedure Nop' - Nop - пустая хранимая процедура.

Автор: Alex 28.7.2007, 13:02
А что по коду происходит раньше добавление в tmpDS или в MainDS?

Автор: Delphist 30.7.2007, 08:15
Цитата(Alex @  28.7.2007,  14:02 Найти цитируемый пост)
А что по коду происходит раньше добавление в tmpDS или в MainDS? 

сначала в MainDS, а потом в tmpDS

Автор: Alex 30.7.2007, 19:00
попробуй на оборот

Автор: Delphist 31.7.2007, 09:02
Цитата(Alex @  30.7.2007,  20:00 Найти цитируемый пост)
попробуй на оборот

А какая разница между этим:
Код

1. Вставил я в DataSet
2. Вставил в БД
3. Сделал сортировку.

и этим
Код

1. Вставил в БД
2. Вставил я в DataSet
3. Сделал сортировку.


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