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

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

TIBDataset [IB6.x, Yaffil]


Страницы:   1 2

maxbgmz ©   (2004-04-21 21:42:00) 

Помогите справиться с этим компонентом
никак не удается insert,
говорит dataset read-only.
пробовал также ibclient dataset
но там тоже какие-то проблемы.
база исключительно локальная
для одного клиента.

я никак не могу понять где в этих  ibdataset'ах
происходит выбор таблицы.
в selectsql что ли?


maxbgmz   (2004-04-27 17:08:00) [1]

всем спасибо!
разобрался


kaif   (2004-04-27 02:55:00) [2]

Как выглядит окошко DataSet Editor-а можешь посмотреть на моем сайте (там не Delphi описано, но все равно сойдет в качестве примера)
http://gaapinvest.com/allegro/doc/book2/doc034.html


kaif   (2004-04-27 02:53:00) [3]

У IBDataSet есть запросы ModifySQL, DeleteSQL, InsertSQL и RefreshSQL. Нужно их аккуратно все прописать. Вписываешь параметрические запросы типа
insert into table1 (id, name) values (:id, :name)
update table1 set id := :id, name = :name where id = :old_id
:id и :name это имена параметров. Параметры IBDataSet сам подставит из одноименных полей (компоненты Field). Если не найдет среди полей, то поищет в свойстве DataSource (мало ли, мжет это Master-Detail связь компонентов...).
имена параметров могут иметь префиксы old_, что значит прежнее значение одноименного поля.
Для простоты впиши свой SELECT в свойство SelectSQL и вызови DataSet Editor с помощью контекстного меню компонента (правая кнопка мыши). Нажми Generate SQLs и редактор сам сгенерит тебе все нужные запросы. Убедись, что в условии Where запроса ModifaySQL используются ключевые поля.
Сохрани и попробуй открыть IBDataSet.Active := True или Open.
Он должен нормально заработать с сеткой.
Поля типа BLOB обслуживаются им автоматически. По крайней мере, картинки (TDBImage) и Мемо-поля (TDBMemo) будут работать сразу.
Дальше - читай внимательно Help.
Разберешься.


Курдль   (2004-04-26 21:22:00) [4]


> IBDSTH.InsertSQL.Text:='insert into NEW_TABLE(PHOTOID) values(12365651)';


> в результате работы этой программы  всегда получается
> 12365651 в поле PHOTOID, и никогда 2212312312,

А если вы на заборе напишете [censored], неужто там появится слово "МИР"? :)

IBDSTH.InsertSQL.Text:='insert into NEW_TABLE(PHOTOID) values(:PHOTOID)';


maxbgmz   (2004-04-26 21:09:00) [5]

 
        IBDBTH.Open;
        IBDSTH.InsertSQL.Text:='insert into NEW_TABLE(PHOTOID) values(12365651)';
        IBDSTH.Open;
        IBDSTH.Insert;
        IBDSTH.Edit;
        IBDSTH.FieldByName('PHOTOID').AsInteger :=2212312312;
        IBDSTH.Post;
        IBDSTH.ApplyUpdates;
       IBDBTH.CloseDataSets;


тут я не рассматриваю blob для простоты примера.
в результате работы этой программы  всегда получается
12365651 в поле PHOTOID, и никогда 2212312312,
менять команды местами пробовал по разному....

если работать можно только путём insertSQL,
и никакие варианты с IBDSTH.FieldByName()
непопустимы, скажите мне тогда, как засунуть
blob в sql строку.


ЮЮ   (2004-04-24 06:15:00) [6]

Начем с начала:

maxbgmz   (21.04.04 21:44) [1]
суперсодержательный пример от борланда мне совершенно ничем не помогает. help!

 DataSet1.Insert;
 // после этого добавится запись в локальныйDataSet
 DataSet1.FieldByName('QUANTITY').AsInteger := StrToInt
(Edit1.Text);
 // заполнятся поля вставленной записи
 DataSet1.Post;
 {а вот здесь выполнится запрос(InsertSQL), в который в качестве параметров проставятся данные из полей записи. Если cashedupdates = true, то запрос сразу выполняться не станет. А выполнятся все запросы для всех модифицированных/вставленных/удаленных для всего DataSeta при применении соответствующего метода}

  Аналогтчно, после DataSet1.Edit;...;DataSet1.Post; выполнится UpdateSQL, а после DataSet.Delete - DeleteSQL.

>maxbgmz   (23.04.04 22:09) [15]
>insertsql всегда разный

Он должен быть всегда один (как и UpdateSQL и DeleteSQL), но правильный. А подставлять туда параметры, это дело самого DataSet-а


Johnmen   (2004-04-24 01:43:00) [7]

Долбать не надо. Надо спокойно вдумчиво почитать хелп....


maxbgmz   (2004-04-24 01:21:00) [8]

to Жук
1.забудем про ClientDataSet.
пробовать устал, правда.

да, insertsql исполняется,
и я пытаюсь после этого редактировать запись,
но ничего не выходит, туда упорно заносится только
то что в insertsql и ничего более.
столько времени угрохано, столько всего прочитано...
такая элементарная вещь и никак не раздолбать.

help :'-(


maxbgmz   (2004-04-23 22:09:00) [9]

cashedupdates=true не помогает, cannot modify read-only dataset и
всё и точка. неделю бъюсь, всё без толку.
insertsql всегда разный, вы мне предлагаете вставить туда blob?


Жук   (2004-04-23 08:47:00) [10]

При инсерт/аппенд выполняется запрос, прописанный в InsertSQL


Oldman   (2004-04-23 06:47:00) [11]

А попробуй перед Insert написать:
ClientDataSet1.Edit;


Кщд   (2004-04-23 06:17:00) [12]

maxbgmz   (22.04.04 22:36) [11]
TIBCustomDataSet.CreateBlobStream с примером


maxbgmz   (2004-04-22 22:36:00) [13]

знаком с этими компонентами, с их помощью мне удаётся
прочитывать информацию.

но проблема insert'a остаётся.

help весь перелопатил, но там нет ни слова об ошибках при вставке...


Vlad   (2004-04-22 20:52:00) [14]

TBlobStream, TMemoryStream + F1


maxbgmz   (2004-04-22 20:36:00) [15]

я чувствую что на мой вопрос народу не ответить, ок.
забудем про dataset.

ответьть мне только на один простой вопрос.
как в ib вставить blob?

никому не приходилось вставлять бинарные объекты в интербазу???


maxbgmz   (2004-04-22 17:23:00) [16]

в selectSql стоит:
select * from NEW_TABLE
но разве это может повлиять на успешность insert'f?

а что мне исать в insertsql, для того чтобы вогнать
в таблицу blob? и зачем тогда вообще коматна tdataset().insert,
если получается что она не работает.


Kadr   (2004-04-22 08:24:00) [17]

InsertSQL, UpdateSQL, DeleteSQL как раз и предназначены для того, чтобы датасет не был ReadOnly


Кщд   (2004-04-22 07:12:00) [18]

maxbgmz   (21.04.04 22:27) [3]
что прописано в SelectSQL и модифицирующих?


Hawk2   (2004-04-22 00:30:00) [19]

Да хелп по IBX не блещет примерами, знаю по собственному опыту. :)


maxbgmz   (2004-04-21 23:17:00) [20]

помогите хотя бы integer вставить, про blob  я уже и нем мечтаю


Страницы:   1 2

Наверх

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