Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.07.11;
Скачать: CL | DM;

Вниз

IBDataSet   Найти похожие ветки 

 
GanibalLector ©   (2004-06-10 13:50) [0]

Вот,начитавшись"Мир 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,где его прописывать?
Пробовал разные варианты...но не то.


 
GanibalLector ©   (2004-06-10 14:45) [1]

???


 
Соловьев ©   (2004-06-10 15:16) [2]


>  А что с Commit,где его прописывать?

После вызова метода Post
Сделать Commit транзакции в которой работает IBDataSet
И укажи параметры транзакции которые ты установил. Даблклик по IBTransaction


 
GanibalLector ©   (2004-06-10 17:28) [3]

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 17:34) [4]

procedure TForm1.IBDataSet1AfterPost(DataSet: TDataSet);
begin
 Form1.IBTransaction1.Commit;
end;

IBdataset1.Post; - повесь отдельно на кнопку.


 
GanibalLector ©   (2004-06-10 17:43) [5]

2 Соловьев ©   (10.06.04 17:34) [4]
В таком случае,после ввода первого символа весь грид исчезает.

>IBdataset1.Post; - повесь отдельно на кнопку.
А это еще зачем???мне не нужно никаких лишних кнопок!

З.Ы. В принципе,у меня все прекрасно работает с хр.процедурами(правда,лень доп.формы рисовать).Я вот что хотел спросить,можно ли просто смотреть,изменять,добавлять прямо в гриде.Такое возможно с IBDataSet или нет???


 
Соловьев ©   (2004-06-10 17:50) [6]


> В таком случае,после ввода первого символа весь грид исчезает.

если ты после первого символа сразу сохраняешь, то commit естественно срабатывает и закривает курсор. поэтому или открывай набор данных опять, или используй CommitRetaining - мягкий комит, курсор не закрывается, но вроде могут возникнуть траблы, хотя я их не встречал...

> А это еще зачем???мне не нужно никаких лишних кнопок!

ну можешь и без кнопок, но только как ты сохраняешь тогда?

> З.Ы. В принципе,у меня все прекрасно работает с хр.процедурами(правда,лень
> доп.формы рисовать).Я вот что хотел спросить,можно ли просто
> смотреть,изменять,добавлять прямо в гриде.Такое возможно
> с IBDataSet или нет???

хоть хп, хоть что все равно транзакции надо использовать.
можно и в гриде.


 
GanibalLector ©   (2004-06-10 18:02) [7]

>хоть хп, хоть что все равно транзакции надо использовать.
>можно и в гриде.
Да ты не понял...Естественно я использую ХП.Просто в новой форме стоят edit-ы или combobox-сы ...соответственно я их заполняю,далее нажимаю "ОК" где вызывается ХП и что-то типа :
if form1.IBTransaction1.InTransaction=false then
form1.IBTransaction1.StartTransaction;
form1.IBTransaction1.Commit;
ну это так -кстати.

Вернемся к IBDataSet.Я хотел бы получить следующее:открывается форма,в которой грид(никаких кнопок нет) далее смотришь,редактируешь и закрываешь форму.Так вот,цель сделать commit после изменения хотя бы одного поля.Т.е.как только я нажал Enter(и тем самым изменил какое-то поле)что-бы он сработал. Такое вот можно реализовать???


 
GanibalLector ©   (2004-06-10 18:05) [8]

>можно и в гриде.
Как??? Подскажи!Только без никаких кнопок.Что в событиях писать и в каких???


 
GanibalLector ©   (2004-06-13 10:40) [9]

???
Ну вот,опять тишина...
Если у кого есть пример работы IBDataSet вышлете,плз : Talla2k@ukr.net


 
GanibalLector ©   (2004-06-13 13:39) [10]

В принципе,все получилось с использование IBQuery и IBUpdateSQL.
Ну а как работает IBDataSet я так и не догнал.


 
jack128 ©   (2004-06-13 14:19) [11]


> Если у кого есть пример работы IBDataSet вышлете,плз : Talla2k@ukr.net

ушло..


 
GanibalLector ©   (2004-06-13 14:24) [12]

2 jack128
Спасибо тебе!!!


 
GanibalLector ©   (2004-06-13 16:10) [13]

Ну, а теперь рассказываю,что было.
Всего лишь навсего нужно было писать БОЛЬШИМИ БУКВАМИ!!!
Т.е. вместо:
update cash set model=:model where mod=:OLD_mod
надо было писать так:
update CASH set MODEL=:MODEL where MOD=:OLD_MOD

P.S. Если бы Вы слышали,сколько МАТОВ я произнес,узнав,в чем дело.Да уж...век живи-век учисись.
P.P.S.И это все благодаря jack128.Спасибо тебе еще раз.


 
jack128 ©   (2004-06-13 16:22) [14]


> update cash set model=:model where mod=:OLD_mod
> надо было писать так:
> update CASH set MODEL=:MODEL where MOD=:OLD_MOD

что то не то у тя..Это не может быть причиной ошибки. Диалект базы и скрипт создания таблицы приведи, пжлста..


 
GanibalLector ©   (2004-06-13 16:33) [15]

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:37) [16]

бред. измени все названия полей и таблиц в моем примере на теже, но маленькими буквами -> все будет работать.. Что тут не так..


 
GanibalLector ©   (2004-06-13 16:41) [17]

Modify:
update OPS set
A1=:A1,
FIO=:FIO,
PL1=:PL1,
PL2=:PL2
where A1=:OLD_A1

Select:
select A1, FIO, PL1, PL2 from OPS

Refrash:
select
A1,
FIO,
PL1,
PL2 from ops
where A1=:A1

P.S. У мя D5!!!Может из-за этого???
Кстати,только что проверил...так,ради интереса и написал так:
Modify:
update OPS set
A1=:A1,
fio=:fio,
PL1=:PL1,
PL2=:PL2
where A1=:OLD_A1
ну и поле fio вообще теперь равно "".Так что ЭТО именно из-за этого.


 
GanibalLector ©   (2004-06-13 16:44) [18]

2 jack128
В твоем примере сделал так:
update ADDRESSES
set
 name = :name,
 PARENT_ID = :PARENT_ID
where
 ID = :OLD_ID
результат тот-же...НЕ РАБОТАЕТ!!!Поле name равно пустоте.


 
Mike Kouzmine ©   (2004-06-13 16:52) [19]

Берешь на onChange поля или на нажатие энтера в гриде пишешь Post, а на afterpost commit.
3 диалект регистр. чувствительный. Но не сохранение не от этого.


 
jack128 ©   (2004-06-13 16:53) [20]


> результат тот-же...НЕ РАБОТАЕТ!!!Поле name равно пустоте.

мыло проверь...


 
jack128 ©   (2004-06-13 16:53) [21]


> 3 диалект регистр. чувствительный. Но не сохранение не от
> этого

только если имена полей в двойных кавычках..


 
GanibalLector ©   (2004-06-13 17:51) [22]

2 jack128
Проверил...все по старому!Как только маленькая буква в поле,то НИКАК!

У меня вот такая конфигурация:
Версия(5.0)Билд 6.18 UpdatePack1
а может это в самих компонентах IB?Дело в том,что когда я открываю твой проект,у меня выскакивает следующее:
Error reading IbDataSet1.GeneratorField.ApplyEvent Property does not exit и тоже самое с IbTransaction1.AutoStopAction.

На счет скрипта твоей базы...что-то я не понял.Тебе его как отсылать???


 
jack128 ©   (2004-06-13 18:26) [23]


> На счет скрипта твоей базы...что-то я не понял.Тебе его
> как отсылать???

так ж как я те программу отослал ;-) По мылу.

> Error reading IbDataSet1.GeneratorField.ApplyEvent Property
> does not exit и тоже самое с IbTransaction1.AutoStopAction.
у мя update для ibx стоит, это из за него. И те советую скачать. На ibase ссылка была..
Насчет, того что у тя я не знаю..


 
GanibalLector ©   (2004-06-13 21:38) [24]

2 jack128
>так ж как я те программу отослал
Дык...совсем не пойму...зачем тебе отсылать прогу,если ты же мне ее и прислал???Или ты ее замочить успел???


 
GanibalLector ©   (2004-06-13 21:58) [25]

>у мя update для ibx стоит, это из за него. И те советую >скачать. На ibase ссылка была..
Это которая здесь http://www.ibase.ru/d_fibc.htm под названием "Дополнения к IBX" от Галимарзанова Фаниса?


 
Mike Kouzmine ©   (2004-06-13 22:15) [26]

Ты бы лучше показал код, как ты это делаешь.
Если ты работал с ХП (не понимаю, в чем разница) и получалось, то и тут должно быть все окей. Темнишь ты паря...


 
GanibalLector ©   (2004-06-13 22:38) [27]

2 Mike Kouzmine
>Ты бы лучше показал код, как ты это делаешь
А че показывать???Ужо все заработало.Да и кода там нет никакого.
Смотри [13] .Это мое ИМХО.


 
Mike Kouzmine ©   (2004-06-13 22:51) [28]

Теперь тебе придется все большими буквами писать :). Не кажется ли тебе, что это чушь? А дело в другом?


 
GanibalLector ©   (2004-06-13 22:57) [29]

2 Mike Kouzmine
Может ты и прав.
> А дело в другом?
Ну и в чем?


 
Mike Kouzmine ©   (2004-06-13 23:01) [30]

Я же не телепат. Поэтому и просил тебя написать как ты это делаешь.


 
GanibalLector ©   (2004-06-13 23:21) [31]

2 Mike Kouzmine
>Поэтому и просил тебя написать как ты это делаешь.
На самой форме одна кнопка,в ней прописан IbTransaction1.Commit;
Таблица приведена в [15] .Свойства IBDataSet в [17].
Стоит IB6...ща,по совету jack128 буду ставить FB может там будет все нормально.


 
Anry   (2004-06-14 10:40) [32]

Да и заодно переходи на FIBPlus. Таких заморочек точно не будет. Я тоже в свое время на IBX писал. Ни за какие блага не перейду на них обратно.


 
Соловьев ©   (2004-06-14 10:42) [33]


> [32] Anry   (14.06.04 10:40)

Писал используя IBX на Д6 - никаких проблем с IBDataSet


 
Mike Kouzmine ©   (2004-06-14 13:20) [34]

Я спрашиваю, где код программы, где вызывается Post. Как закрывается программа. Где редактируется. Желательно в одном месте, чтобы не ползать по всей ветке. Хотя если тебе это не надо, мол работает и слава богу, то так и скажи. А то потом будешь как Анри рассказывать какой IBX глючный не подозревая, что это не так.


 
GanibalLector ©   (2004-06-14 19:54) [35]

2 ALL
Вчера,по совету jack128 поставил апдейт на IBX(IBXDP504Upd).После этого хоть большими,хоть маленькими.Все работает.Всем спасибо!


 
Anry   (2004-06-15 09:21) [36]

>>А то потом будешь как Анри рассказывать какой IBX глючный не >>подозревая, что это не так.
Где говорил что они глючные? Извините... таких слов не было. Говорил про заморочки всего лишь.



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

Текущий архив: 2004.07.11;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.048 c
10-1018423056
Олег Лаукарт
2002-04-10 11:17
2004.07.11
XML-D6-VisiBroker4.1


4-1085520884
Германн
2004-05-26 01:34
2004.07.11
Documents and Settings


4-1085226019
Lenchik
2004-05-22 15:40
2004.07.11
Хочу написать монитор температуры


1-1088190077
zep
2004-06-25 23:01
2004.07.11
ComboBox


14-1087906623
AlexG
2004-06-22 16:17
2004.07.11
С++ Builder и Delphi