Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

IBDataSet [D5, IB6.x]


Страницы:   1 2

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]

???


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо