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

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

INDY сбивают ориентацию ADO [D7, XP]


Евгений07 ©   (2011-11-13 00:49:00) 

Доброго времени!
Непонятно:
1. на сервере есть второстепенная таблица, подразумевается монопольный доступ через ADODataSet -> DBGrid
2. после успешной отправке письма средствами IdSMTP при попытке зафиксировать это в базе
     if Mail(z) then with ADODataSet6 do begin
       Edit;
       FieldByName('otvetMeil').AsInteger := 1;    
       Post;
     end;
вылетает ошибка "Не удается найти строку для обновления"

Возможно ли простое решение проблемы?


vegarulez   (2011-11-13 20:01:00) [1]

Что тебе мешает запрос в базу пропнуть через ADOQuery1 например?
Через обычный SQL сделай запрос взяв из DataSet`a id записи

 DBGrid1.DataSource.DataSet.FieldByName('id').AsString;

которую требуется обновить.

что-то типа:

ADOQuery1.Sql.Text:='update `my_table` set `flag_mail`=1,`sender`="test@test.ru",`status`="Отправлено" where `id`='+DBGrid1.DataSource.DataSet.Fieldbyname('id').AsString+'';


sniknik   (2011-11-13 11:40:00) [2]

> 3. после выполнения процедуры, меняющей (сбрасывающей) указатель на запись хочется восстановить ситуацию. Как?
нет таких, указатель в клиент серверной технологии ничего не значит, с одной машины на другую не действует. идентифицируется по записям (значениям), что значит в наборе должно присутствовать поле(группа) уникальная для каждой записи. если хотим менять позаписьно...
и как ты восстановишь, если ключа нет, а идентификация идет вот FieldByName(' otvetMeil').AsInteger := 1; по этому полю?

> Если Вам известно, как проще - приведите часть кода.  
мне известно, и даже несколько вариантов основанных на одном и том же. и даже на неявном "внутреннем" ключе(хотя тут скорее просто идентификатор).
пару я тебе сказал. очень полезно если выберешь запрос и сам (а не рекордсет) попытаешься определить значения для условия апдейта... обычно после этого очень хорошо "доходит" что ему (рекордсету) нужно.

а привести часть кода... да без проблем, вот этот работает -  
with ADODataSet6 do begin
 Edit;
 FieldByName('otvetMeil').AsInteger := 1;    
 Post;
end;

естественно если под это подведена "база", т.е. структура таблицы с ключом, он выбран в рекордсете (присутствует на клиенте), и указано, что нужно идентифицироваться по нему.
описывать все связанное? + все возможные варианты (у тебя нет ни структуры, ни база не указана, ничего нет в общем)?... э... это уже на статью тянет (в смысле не уголовную, а...) и она уже есть везде. на королевстве например (поиск по - работаем с ADO). и не одна.


Dennis I. Komarov   (2011-11-13 11:34:00) [3]

if Mail(z) then
 with TADOCommand.Create do try
   .....
   CommandText:='Update.....';
   Execute;
 finally
   Free;
 end;


Евгений07   (2011-11-13 02:35:00) [4]

sniknik ©   (13.11.11 01:45) [4]
Самое простое для меня  самое не понятное:
1. была установлена запись в ДатаСет = через ДВГрид
2. можно установить Какие??  параметры этой записи
3. после выполнения процедуры, меняющей (сбрасывающей) указатель на запись хочется восстановить ситуацию. Как?
С помощью идиотизма я предполагаю , как это можно
Если Вам известно, как проще - приведите часть кода. Я постараюсь Его понять.


sniknik   (2011-11-13 01:45:00) [5]

> Запрос + Клозе-Опен + Боокмарк ???
что за идиотизм? и где тут ключ?

> А проще?
этои есть самое простое, идентификация делается по ключу, если делать по простому "изменяемому полю", то естественно не найдет, если в процессе кто то (НЕ INDY!!!) поменял значение.


Евгений07   (2011-11-13 01:28:00) [6]

sniknik ©   (13.11.11 01:07) [1]
Запрос + Клозе-Опен + Боокмарк ???
А проще?

про ориентацию АДО лучше спросить специалистов


Anatoly Podgoretsky   (2011-11-13 01:14:00) [7]

> Евгений07  (13.11.2011 00:49:00)  [0]

А какая ориентация у АДО и что она становится голубой.


sniknik   (2011-11-13 01:07:00) [8]

использовать ключевое поле, можно перейти на апдейт запросом но тоже только по нему (ключу).


Наверх

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