Форум: "Базы";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];
Вниз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:Modify
update "s_met_st.dbf"
set
KST = :KST,
POTPR = :POTPR,
NST = :NST
where
KST = :OLD_KST and
POTPR = :OLD_POTPR and
NST = :OLD_NST
UpdateSQL:Insertinsert into "s_met_st.dbf"
UpdateSQL:Delete
(KST, POTPR, NST)
values
(:KST, :POTPR, :NST)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;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.047 c