Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
14-1087417843
AlexG
2004-06-17 00:30
2004.07.11
Людские странности...


1-1087985675
Aldor
2004-06-23 14:14
2004.07.11
Есть ли в паскале функция, аналогичная функции scanf?


1-1088020143
DDA
2004-06-23 23:49
2004.07.11
Изменение ресурсов


14-1087961750
Dmitriy O.
2004-06-23 07:35
2004.07.11
А вот вчера война началась. (ВОВ)


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





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