![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
IBDataSet [D5, IB6.x]
GanibalLector © (2004-06-10 13:50:00)Вот,начитавшись"Мир IB" решил попробовать IBDataSet(до этого все делал в хранимых процедурах).
Итак,имею следующее:
Select SQL=
select mod,model,ser from cash
ModifySQL=
update cash set mod=:mod,model=:model,ser=:ser where mod=:OLD_mod
RefreshSQL=
select mod,model,ser from cash where mod=:mod
Соответственно,изменяю какую-то запись.На гриде она изменяется.Закрываю форму...открываю форму и вижу,что
она опять старая(т.е.не изменилась)
Насколько я понял,нужно прописать какое-то событие.Но какое???В книге об этом молчат.
Нужно ли делать IBDataSet1.ApplyUpdates и где его делать??? А что с Commit,где его прописывать?
Пробовал разные варианты...но не то.
jack128 (2004-06-13 16:37:00) [21]бред. измени все названия полей и таблиц в моем примере на теже, но маленькими буквами -> все будет работать.. Что тут не так..
GanibalLector (2004-06-13 16:33:00) [22]SET SQL DIALECT 3;
SET NAMES NONE;
CREATE TABLE OPS (
A1 INTEGER NOT NULL,
FIO VARCHAR(10),
PL1 VARCHAR(6),
PL2 VARCHAR(6)
);
ALTER TABLE OPS ADD CONSTRAINT PRIM PRIMARY KEY (A1);
jack128 (2004-06-13 16:22:00) [23]
> update cash set model=:model where mod=:OLD_mod
> надо было писать так:
> update CASH set MODEL=:MODEL where MOD=:OLD_MOD
что то не то у тя..Это не может быть причиной ошибки. Диалект базы и скрипт создания таблицы приведи, пжлста..
GanibalLector (2004-06-13 16:10:00) [24]Ну, а теперь рассказываю,что было.
Всего лишь навсего нужно было писать БОЛЬШИМИ БУКВАМИ!!!
Т.е. вместо:
update cashset model=:modelwhere mod=:OLD_mod
надо было писать так:
update CASHset MODEL=:MODELwhere MOD=:OLD_MOD
P.S. Если бы Вы слышали,сколько МАТОВ я произнес,узнав,в чем дело.Да уж...век живи-век учисись.
P.P.S.И это все благодаря jack128.Спасибо тебе еще раз.
GanibalLector (2004-06-13 14:24:00) [25]2 jack128
Спасибо тебе!!!
jack128 (2004-06-13 14:19:00) [26]
> Если у кого есть пример работы IBDataSet вышлете,плз : Talla2k@ukr.net
ушло..
GanibalLector (2004-06-13 13:39:00) [27]В принципе,все получилось с использование IBQuery и IBUpdateSQL.
Ну а как работает IBDataSet я так и не догнал.
GanibalLector (2004-06-13 10:40:00) [28]???
Ну вот,опять тишина...
Если у кого есть пример работы IBDataSet вышлете,плз : Talla2k@ukr.net
GanibalLector (2004-06-10 18:05:00) [29]>можно и в гриде.
Как??? Подскажи!Только без никаких кнопок.Что в событиях писать и в каких???
GanibalLector (2004-06-10 18:02:00) [30]>хоть хп, хоть что все равно транзакции надо использовать.
>можно и в гриде.
Да ты не понял...Естественно я использую ХП.Просто в новой форме стоят edit-ы или combobox-сы ...соответственно я их заполняю,далее нажимаю "ОК" где вызывается ХП и что-то типа :
if form1.IBTransaction1.InTransaction=false then
form1.IBTransaction1.StartTransaction;
form1.IBTransaction1.Commit;
ну это так -кстати.
Вернемся к IBDataSet.Я хотел бы получить следующее:открывается форма,в которой грид(никаких кнопок нет) далее смотришь,редактируешь и закрываешь форму.Так вот,цель сделать commit после изменения хотя бы одного поля.Т.е.как только я нажал Enter(и тем самым изменил какое-то поле)что-бы он сработал. Такое вот можно реализовать???
Соловьев (2004-06-10 17:50:00) [31]
> В таком случае,после ввода первого символа весь грид исчезает.
если ты после первого символа сразу сохраняешь, то commit естественно срабатывает и закривает курсор. поэтому или открывай набор данных опять, или используй CommitRetaining - мягкий комит, курсор не закрывается, но вроде могут возникнуть траблы, хотя я их не встречал...
> А это еще зачем???мне не нужно никаких лишних кнопок!
ну можешь и без кнопок, но только как ты сохраняешь тогда?
> З.Ы. В принципе,у меня все прекрасно работает с хр.процедурами(правда,лень
> доп.формы рисовать).Я вот что хотел спросить,можно ли просто
> смотреть,изменять,добавлять прямо в гриде.Такое возможно
> с IBDataSet или нет???
хоть хп, хоть что все равно транзакции надо использовать.
можно и в гриде.
GanibalLector (2004-06-10 17:43:00) [32]2 Соловьев © (10.06.04 17:34) [4]
В таком случае,после ввода первого символа весь грид исчезает.
>IBdataset1.Post; - повесь отдельно на кнопку.
А это еще зачем???мне не нужно никаких лишних кнопок!
З.Ы. В принципе,у меня все прекрасно работает с хр.процедурами(правда,лень доп.формы рисовать).Я вот что хотел спросить,можно ли просто смотреть,изменять,добавлять прямо в гриде.Такое возможно с IBDataSet или нет???
Соловьев (2004-06-10 17:34:00) [33]procedure TForm1.IBDataSet1AfterPost(DataSet: TDataSet);
begin
Form1.IBTransaction1.Commit;
end;
IBdataset1.Post; - повесь отдельно на кнопку.
GanibalLector (2004-06-10 17:28:00) [34]2 Соловьев © (10.06.04 15:16) [2]
>И укажи параметры транзакции которые ты установил. Даблклик по >IBTransaction
ReadCommited:
read_committed
rec_version
nowait
>После вызова метода Post
Все равно не понял.Мне нужно так???
procedure TForm1.IBDataSet1AfterEdit(DataSet: TDataSet);
begin
IBdataset1.Post;
Form1.IBTransaction1.Commit;
end;
Соловьев (2004-06-10 15:16:00) [35]
> А что с Commit,где его прописывать?
После вызова метода Post
Сделать Commit транзакции в которой работает IBDataSet
И укажи параметры транзакции которые ты установил. Даблклик по IBTransaction
GanibalLector (2004-06-10 14:45:00) [36]???