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

Вниз

dbf   Найти похожие ветки 

 
lightix   (2004-11-17 10:01) [0]

При работе с dbf при помощи компонента UpdateSQL после удаления записи, вылетает ошибка при попытке записать сохранения ApplyUpdates&


 
Соловьев ©   (2004-11-17 10:18) [1]


> UpdateSQL после удаления записи, вылетает ошибка при попытке
> записать сохранения ApplyUpdates&

ApplyUpdates - это если ты юзаешь кешированные изменения
А после удаления ничего вызывать не надо.


 
lightix   (2004-11-17 10:25) [2]

Изменения у меня кэшированы и после удаления надо же как-то сохранить изменения. Подскажи как мне сохранить изменения после удаления


 
Соловьев ©   (2004-11-17 10:37) [3]


> вылетает ошибка

Какая?


 
lightix   (2004-11-17 11:03) [4]

EdatabaseEngineError: Update failed


 
Соловьев ©   (2004-11-17 11:10) [5]

Что в UpdateSQL?


 
Соловьев ©   (2004-11-17 11:10) [6]

Что в UpdateSQL?
И в Query?


 
lightix   (2004-11-17 11:14) [7]

UpdateSQL:Modifyupdate "s_met_st.dbf"
set
 KST = :KST,
 POTPR = :POTPR,
 NST = :NST
where
 KST = :OLD_KST and
 POTPR = :OLD_POTPR and
 NST = :OLD_NST

UpdateSQL:Insert
insert into "s_met_st.dbf"
 (KST, POTPR, NST)
values
 (:KST, :POTPR, :NST)
UpdateSQL:Delete
delete from "s_met_st.dbf"
where
 KST = :OLD_KST and
 POTPR = :OLD_POTPR and
 NST = :OLD_NST

Query1:
Query1->Close();
Query1->RequestLive=true;
Query1->SQL->Clear();
Query1->SQL->Add("select potpr,kst,nst from s_met_st.dbf");

Query1->SQL->Add("where potpr="+AnsiString(RadioGroup2->ItemIndex));    
if (Edit1->Text!="")
{
Query1->SQL->Add("and kst="+Edit1->Text);
}

if (Edit2->Text!="")
{
Query1->SQL->Add("and nst="+AnsiUpperCase(Edit2->Text));
}

  if (Form1->RadioGroup1->ItemIndex==0)
  Form1->Query1->SQL->Add("order by kst");      
  else if (Form1->RadioGroup1->ItemIndex==1)
  Form1->Query1->SQL->Add("order by nst");

  Query1->Open();


 
lightix   (2004-11-17 11:19) [8]

Query1:
RequestLive=true;
CachedUpdates=true;


На кнопке сохранения данных:
Query1->Edit();
Query1->Post();

Query1->ApplyUpdates();
Query1->CommitUpdates();


 
Соловьев ©   (2004-11-17 11:23) [9]


> Query1->Edit();
> Query1->Post();
>
> Query1->ApplyUpdates();
> Query1->CommitUpdates();

Вот так и написано?!!!


 
Соловьев ©   (2004-11-17 11:25) [10]


> На кнопке сохранения данных:

А почему ты туда еще StartTransaction и CommitTransaction не написал? Для полноты?


 
Плохиш ©   (2004-11-17 11:25) [11]


> lightix   (17.11.04 11:19) [8]

1. Форум по делфи

> На кнопке сохранения данных:
> Query1->Edit();
> Query1->Post();

После такого он тебе правильно говорит. Как можно сохранить изменения, которых не было?


 
ЮЮ ©   (2004-11-17 11:27) [12]

все три поля не богут быть NULL и тройка (KST, POTPR, NST) образуют уникальную комбинацию?

Только в этом случае запрос  в UpdateSQL:Modify вернет ровно одну запись а не "Update failed"


 
lightix   (2004-11-17 11:38) [13]


> ЮЮ ©   (17.11.04 11:27) [12]
> все три поля не богут быть NULL и тройка (KST, POTPR, NST)
> образуют уникальную комбинацию?
> Только в этом случае запрос  в UpdateSQL:Modify вернет ровно
> одну запись а не "Update failed"

так и есть, комбинация уникальная, NULL не заношу...


 
lightix   (2004-11-17 11:41) [14]


> Плохиш ©   (17.11.04 11:25) [11]
> 1. Форум по делфи

Я могу изменить синтаксис на паскалевский, если возражаете, не вопрос...


> После такого он тебе правильно говорит. Как можно сохранить
> изменения, которых не было?

Post происходит в кэш, а изменения из кэша в таблицу не попадают


 
lightix   (2004-11-17 11:44) [15]


> Соловьев ©   (17.11.04 11:25) [10]
>
> > На кнопке сохранения данных:
>
> А почему ты туда еще StartTransaction и CommitTransaction
> не написал? Для полноты?

А что собственно смущает? Edit-Post написал уже от безысходности, думал в кэш не попадают изменения...
А ApplyUpdates+CommitUpdates подряд - это так в книжке господина Архангельского в примере...


 
Соловьев ©   (2004-11-17 12:06) [16]

CachedUpdates = true?


 
lightix   (2004-11-17 12:54) [17]


> Соловьев ©   (17.11.04 12:06) [16]
> CachedUpdates = true?

Да


 
Соловьев ©   (2004-11-17 13:34) [18]

А зачем тебе кешированніе изменения в бдф?


 
lightix   (2004-11-17 13:48) [19]

А без кешированных изменений почему то dataset не переходит в режим редактирования если имеется в sql запросе фраза ORDER BY


 
lightix   (2004-11-17 13:50) [20]

А мне нужно по разному сортировать данные (см кусок кода выше)


 
Соловьев ©   (2004-11-17 13:55) [21]


> А без кешированных изменений почему то dataset не переходит
> в режим редактирования если имеется в sql запросе фраза
> ORDER BY

Вообще-то если ты прикрутил UpdateSQL то должно переводить
Кешированные изменения тут не причем.


 
lightix   (2004-11-17 13:58) [22]

в том то и дело что не переводит


 
Соловьев ©   (2004-11-17 14:01) [23]


> в том то и дело что не переводит

создай чистый проект, сделай все в дизайн тайме(запросы), и пробуй. Возможно где-то ты намудрил с формированием запросов


 
lightix   (2004-11-17 14:42) [24]

нет, не в этом дело... вычитал в хелпе что для того чтобы можно было редактировать в датасете данные с использованием ORDER BY и UpdateSQL, нужно чтобы существовали индексы по полям присутствующим в ORDER BY
Создал - все работает :)


 
lightix   (2004-11-17 14:44) [25]

А вот с чем не смог разобраться - так это с уникальным ключем в таблице ...  Как его создать? В DBD делаю Expression Index, пишу KST + POTPR, ставлю галочку на xUnique - и всеравно позволяет ввести запись с повторяющимся ключем KST + POTPR ... :(
Что делать?


 
Соловьев ©   (2004-11-17 15:04) [26]


> нет, не в этом дело... вычитал в хелпе что для того чтобы
> можно было редактировать в датасете данные с использованием
> ORDER BY и UpdateSQL, нужно чтобы существовали индексы по
> полям присутствующим в ORDER BY
> Создал - все работает :)

это будет работать и без UpdateSQL

> А вот с чем не смог разобраться - так это с уникальным ключем
> в таблице ...  Как его создать? В DBD делаю Expression Index,
> пишу KST + POTPR, ставлю галочку на xUnique - и всеравно
> позволяет ввести запись с повторяющимся ключем KST + POTPR
> ... :(
> Что делать?

не знаю, я бы сделал это с помощью SQL


 
lightix   (2004-11-17 15:53) [27]


> Соловьев ©   (17.11.04 15:04) [26]
>
> это будет работать и без UpdateSQL

Т.е. хочешь сказать что можно без индексов обойтись с UpdateSQL?
Каким образом?


> > А вот с чем не смог разобраться - так это с уникальным
> >ключем
> не знаю, я бы сделал это с помощью SQL

Подскажи плиз как это сделать


 
Anatoly Podgoretsky ©   (2004-11-17 17:55) [28]

lightix   (17.11.04 14:44) [25]
Надо перейти на dBase VII



Страницы: 1 вся ветка

Текущий архив: 2004.12.19;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.029 c
4-1099669306
Torin
2004-11-05 18:41
2004.12.19
Проверка наличия FTP сервиса у удалнного компьютера


14-1101550334
syte_ser78
2004-11-27 13:12
2004.12.19
Оцените бетаверсию программы "Колекционера CD"


6-1097084387
Stas_on
2004-10-06 21:39
2004.12.19
Как узнать IP компа в сетке из 12+1 компов?


1-1102081219
Игорь нтк
2004-12-03 16:40
2004.12.19
Combobox


9-1092690879
gg_no_re
2004-08-17 01:14
2004.12.19
Как отключить Vsync