Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.06;
Скачать: CL | DM;

Вниз

Кеширование изменений и 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.044 c
4-1106048588
atom
2005-01-18 14:43
2005.03.06
расшарить диск С: на локальной машине


9-1102102454
Domowoi
2004-12-03 22:34
2005.03.06
Вопрос про Collision


1-1108972403
Sour Smile
2005-02-21 10:53
2005.03.06
Как освободить ресурсы занятые функцией StringToOleStr?


3-1107796391
MakedoneZ
2005-02-07 20:13
2005.03.06
TDBGrid и Table


11-1092721240
Ал
2004-08-17 09:40
2005.03.06
Localizy