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

Вниз

Как заставить работать методы ClientDataSet - Delete и Post?   Найти похожие ветки 

 
Bukerman ©   (2004-05-26 14:57) [0]

Всем привет!
Помогите кто-нибудь. Который день бьюсь - не получается.
Есть com-сервер, есть база Interbase, доступ - через IBQuery, на стороне клиента - TClientDataSet, кот. я использую для доступа к базе через TDatasetProvider, приложение нужно написать максимально просто без каких-либо наворотов, главное, чтобы можно было совершать все элементарные операции с базой (то бишь выборки и изменения).
Собственно вопрос:
содержимое таблиц вывожу в стандартный DBGrid, при использовании метода ClientDataSet.Delete - в гриде все удаляется, ошибок не выдается, то бишь вроде бы все ОК. Но если перечитать данные - то все удаленные записи возвращаются на свои места, как будто бы никто их не удалял. Похожая ситуация и с методом Post.Пробовал ApplyUpdates - не помогает. Я понимаю, что многие скажут, чтобы делал через SQL-запросы, но с этим мороки много, хочется сделать все максимально просто и быстро, навороченность не важна, главное функционал.
Подскажите плиз где копать, я уже и в свойствах датасетпровайдера искал и в соккетконнекшне и на стороне клиента, не изменяются данные хоть ты тресни.

Заранне большое спасибо за написанные в мой адрес ответы!
Влад.


 
sniknik ©   (2004-05-26 15:47) [1]

Delete удаляет в локальном датасете (ClientDataSet)
Post "закрепляет" изменения
ApplyUpdates отсылает изменения на сервер
одно без другого безсмысленно. если попробовать отдельно ApplyUpdates естественно не поможет.


 
Bukerman ©   (2004-05-26 16:43) [2]

делаю:
     F_main.CD_main.Delete;
     F_main.CD_main.Post;
     F_main.CD_main.ApplyUpdates(-1);
удаляет из грида и выдает ошибку:
"dataset not in edit or insert mode"
тогда добавляю:
     F_main.CD_main.Delete;
     F_main.CD_main.Edit;
     F_main.CD_main.Post;
     F_main.CD_main.ApplyUpdates(-1);
ситуация повторяется, то есть видимость удаления есть, а при обновлении - все восстанавливается.....


 
Sandman25+1   (2004-05-26 16:45) [3]

F_main.CD_main.Delete;
    F_main.CD_main.ApplyUpdates(-1);


 
Vlad ©   (2004-05-26 16:50) [4]


> Bukerman ©   (26.05.04 16:43) [2]

Метод Delete не требует Post. Чего постить-то, если запись удалена.
А по теме, либо ты неправильно работаешь с транзакциями, либо у тебя неверный запрос на удаление (IBUpdateSql)


 
Bukerman ©   (2004-05-26 17:07) [5]

> Sandman25+1   (26.05.04 16:45) [3]
> F_main.CD_main.Delete;
>     F_main.CD_main.ApplyUpdates(-1);
так и делаю - ситуация без изменения...

> Vlad ©   (26.05.04 16:50) [4]
транзакции пока вообще не используются, насчет неправильного запроса.... что имеется ввиду? нет никакого запроса, я же пижу я работаю не через запросы, а тупо делаю Delete, затем ApplyUpdates - нифига.


 
sniknik ©   (2004-05-26 17:48) [6]

> я же пижу я работаю не через запросы
а там (IBQuery) по другому похоже нельзя, должен быть IBUpdateSQL с запросами на каждое действие (какими именно х.з. с ним не работаю, а с ADODataSet нормально и без этого проходит).
возьми другие компоненты, dbExpres к примеру, там вроде нет такой мороки.


 
sniknik ©   (2004-05-26 18:00) [7]

да с dbExpress все чудно работает, без всякой мороки, написал небольшой тестовый сервер трехзвенку для проверки (вернее переделал имеющийся) если хочеш пришлю.


 
Bukerman ©   (2004-05-26 18:13) [8]

ок, спасибо за участие...
я уже все через SQL запросы делаю.


 
Andriano   (2004-05-27 08:50) [9]

А что DataSetProvider как будто не может SQL запросы делать?

Если TDataSetProvider.ResolveToDataSet=true, то все изменения применяются к связанному с ним набору данных, иначе TDataSetProvider сам формирует SQL запрос (это он изумительно делает), но транзакцию он не COMMIT, и это надо делать самому в известных событиях.

Связка TDataSetProvider - TClientDataSet умеет очень много, надо только разобраться. И использовать её только для чтения данных - это всё равно что пилить лес бензопилой, не включая её.


 
sniknik ©   (2004-05-27 09:08) [10]

Andriano   (27.05.04 08:50) [9]
там дело не в DataSetProvider, а в IBQuery ему почемуто TIBUpdateSQL обязательно нужен (у меня вчера по другому не получилось, но если учесть что вчера я первый раз за эти компоненты взялся ... ;о))
даже без DataSetProvider (вариант без трехзвенки).
а когда его подключаеш начинаются ошибки на сервере "неправильно определен параметр" и "параметру необходимо имя", в общем я так понял нужно в TIBUpdateSQL прописывать именно то что DataSetProvider посылает (имена параметров запроса), за невозможностью указать ему их явно, но после пришла идея заменить компоненты > sniknik ©   (26.05.04 18:00) [7] и с этими заниматся бросил, надоело ;о).
p.s. наверняка в чемто ошибаюсь. т.к. ничего не читал по ним не смотрел примеров и т.д. просто попытался использовать "по наитию" для интереса как кросворд (хелп и т.д. это все одно что заглянуть в ответ ;о)).



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

Форум: "Базы";
Текущий архив: 2004.06.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.039 c
1-1086372975
Канадин Владимир
2004-06-04 22:16
2004.06.20
Как использовать CustomSort


14-1086115649
YurikGL
2004-06-01 22:47
2004.06.20
Сегодня пропала строка статуса в IE


14-1086098165
Exciter
2004-06-01 17:56
2004.06.20
Кто знает как работать с FB в С# ???


1-1086677293
Prog's Killer
2004-06-08 10:48
2004.06.20
Метод random


3-1085734293
Bizon
2004-05-28 12:51
2004.06.20
Установка IBExpert





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский