Форум: "Базы";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];
ВнизКеширование изменений и ADO + MSSQL Найти похожие ветки
← →
albr (2005-01-31 19:54) [0]Подскажите как можно побороть следующий глюк.
TADOQuery(qu).LockType:=ltBatchOptimistic;
qu.SQL.Text := "select convert(float, field1) field1, field2 from table1";
qu.open; qu.insert;
qu.fieldbyname("field1").asfloat := 100;
qu.fieldbyname("field2").asfloat := 100;
qu.post;
showmessage(qu.fieldbyname("field1").asstring); // вижу ничего
showmessage(qu.fieldbyname("field2").asstring); // вижу 100
тот же эффект если field1 объявлено как автоинкрементное поле.
PS
для Oracle такой неприятносити нет.
← →
ЮЮ © (2005-02-01 05:18) [1]// вижу ничего
М.Б. из-за того, что field1 не поле базы данных, а выражение?
Соответствкнно, запрос на корректировку записи не включает это поле? Честно говоря, сокрытие от программиста генерируеиых запросов и невозможность использовать свои - главное, за что я не люблю ADODataSet
← →
Silver Alex © (2005-02-01 10:02) [2]если ты используешь запросы, так используй их везде.А то ты что-то намутил, с первого взгдяда и не понять что именно тебе нужно
insert into Qu(id, field1, field2)
values (1,100,100)
← →
albr (2005-02-01 11:41) [3]да, из за того что field1 не редактируемое поле БД....
а какая есть альтернатива TADODataSet, желательно с TADOConnection :)
to Silver Alex: ничего я не намутил
insert into Qu(id, field1, field2) values (1,100,100); - это все хорошо, но ....
Qu - это TADOQuery;
table1 - это скорее всего сложный view с вычислимыми полями, а Insert или Update делают хранимые процедуры.
А нужно, чтобы после поста не пропадали данные из датасэта введенные юзером
← →
Соловьев © (2005-02-01 12:01) [4]
> table1 - это скорее всего сложный view с вычислимыми полями,
> а Insert или Update делают хранимые процедуры.
Как ты думаешь, если ты написал qu.insert, то это какой-то запрос. который не подчинается SQL? он такой же как и [2]. Если ты сделал обновляемую вьюху, то ты наверное написал и триггеры для этого, где дергаешь свои ХП, так вот использую [2], они так же будут дергатся, даже лучше :)
> а какая есть альтернатива TADODataSet, желательно с TADOConnection
> :)
ADOCommand
← →
albr (2005-02-01 12:19) [5]В том то и дело, что в момент qu.insert обращения в базе не происходит и никаких SQL не генерится т.к. LockType=ltBatchOptimistic.
А сохранение должно происходит при qu.UpdateBatch();
ADOCommand ровно как и AdoDataSet используют один и тот же рекордсет обявленный в ADODB.pas
_Recordset = ADOInt.Recordset;
← →
sniknik © (2005-02-01 13:52) [6]> В том то и дело, что в момент qu.insert обращения в базе не происходит и никаких SQL не генерится т.к.
по post делается ресинк из базы, запрос для него можно сменить (поищи статьи на королевстве про ADO, там в 3й вроде бы, обьясняется как)
можно попробовать менять в рекордсете напрямую без "оберточных" функций, может и получится.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.039 c