Форум: "Базы";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.032 c