Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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: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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.034 c
4-1098960284
MetalFan
2004-10-28 14:44
2004.12.19
Узнать данные по сессии CD


3-1100872886
Wolffgang
2004-11-19 17:01
2004.12.19
fkCalculated = -1, потом 2


1-1102411491
vvv_spb
2004-12-07 12:24
2004.12.19
Resize


1-1101483554
VasRog
2004-11-26 18:39
2004.12.19
Сортировка большого массива


1-1101844886
Fido24
2004-11-30 23:01
2004.12.19
Как отключить Popup-меню в компоненте?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский