Форум: "Начинающим";
Текущий архив: 2012.02.26;
Скачать: [xml.tar.bz2];
ВнизINDY сбивают ориентацию ADO Найти похожие ветки
← →
Евгений07 (2011-11-13 00:49) [0]Доброго времени!
Непонятно:
1. на сервере есть второстепенная таблица, подразумевается монопольный доступ через ADODataSet -> DBGrid
2. после успешной отправке письма средствами IdSMTP при попытке зафиксировать это в базе
if Mail(z) then with ADODataSet6 do begin
Edit;
FieldByName("otvetMeil").AsInteger := 1;
Post;
end;
вылетает ошибка "Не удается найти строку для обновления"
Возможно ли простое решение проблемы?
← →
sniknik © (2011-11-13 01:07) [1]использовать ключевое поле, можно перейти на апдейт запросом но тоже только по нему (ключу).
← →
Anatoly Podgoretsky © (2011-11-13 01:14) [2]> Евгений07 (13.11.2011 00:49:00) [0]
А какая ориентация у АДО и что она становится голубой.
← →
Евгений07 (2011-11-13 01:28) [3]sniknik © (13.11.11 01:07) [1]
Запрос + Клозе-Опен + Боокмарк ???
А проще?
про ориентацию АДО лучше спросить специалистов
← →
sniknik © (2011-11-13 01:45) [4]> Запрос + Клозе-Опен + Боокмарк ???
что за идиотизм? и где тут ключ?
> А проще?
этои есть самое простое, идентификация делается по ключу, если делать по простому "изменяемому полю", то естественно не найдет, если в процессе кто то (НЕ INDY!!!) поменял значение.
← →
Евгений07 (2011-11-13 02:35) [5]sniknik © (13.11.11 01:45) [4]
Самое простое для меня самое не понятное:
1. была установлена запись в ДатаСет = через ДВГрид
2. можно установить Какие?? параметры этой записи
3. после выполнения процедуры, меняющей (сбрасывающей) указатель на запись хочется восстановить ситуацию. Как?
С помощью идиотизма я предполагаю , как это можно
Если Вам известно, как проще - приведите часть кода. Я постараюсь Его понять.
← →
Dennis I. Komarov © (2011-11-13 11:34) [6]
if Mail(z) then
with TADOCommand.Create do try
.....
CommandText:="Update.....";
Execute;
finally
Free;
end;
← →
sniknik © (2011-11-13 11:40) [7]> 3. после выполнения процедуры, меняющей (сбрасывающей) указатель на запись хочется восстановить ситуацию. Как?
нет таких, указатель в клиент серверной технологии ничего не значит, с одной машины на другую не действует. идентифицируется по записям (значениям), что значит в наборе должно присутствовать поле(группа) уникальная для каждой записи. если хотим менять позаписьно...
и как ты восстановишь, если ключа нет, а идентификация идет вот FieldByName("otvetMeil").AsInteger := 1; по этому полю?
> Если Вам известно, как проще - приведите часть кода.
мне известно, и даже несколько вариантов основанных на одном и том же. и даже на неявном "внутреннем" ключе(хотя тут скорее просто идентификатор).
пару я тебе сказал. очень полезно если выберешь запрос и сам (а не рекордсет) попытаешься определить значения для условия апдейта... обычно после этого очень хорошо "доходит" что ему (рекордсету) нужно.
а привести часть кода... да без проблем, вот этот работает -with ADODataSet6 do begin
Edit;
FieldByName("otvetMeil").AsInteger := 1;
Post;
end;
естественно если под это подведена "база", т.е. структура таблицы с ключом, он выбран в рекордсете (присутствует на клиенте), и указано, что нужно идентифицироваться по нему.
описывать все связанное? + все возможные варианты (у тебя нет ни структуры, ни база не указана, ничего нет в общем)?... э... это уже на статью тянет (в смысле не уголовную, а...) и она уже есть везде. на королевстве например (поиск по - работаем с ADO). и не одна.
← →
vegarulez (2011-11-13 20:01) [8]Что тебе мешает запрос в базу пропнуть через 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+"";
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2012.02.26;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c