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

Вниз

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

 
maxbgmz   (2004-04-21 21:42) [0]

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

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


 
maxbgmz   (2004-04-21 21:44) [1]

ClientDataSet1.Insert;
 ClientDataSet1.FieldByName("QUANTITY").AsInteger := StrToInt(Edit1.Text);
 ClientDataSet1.Post;

суперсодержательный пример от борланда мне совершенно ничем не помогает. help!


 
Vlad ©   (2004-04-21 21:47) [2]


> maxbgmz   (21.04.04 21:42)  

Ты сначала разберись, о чем речь, либо о TIBDataSet либо о TClientDataSet


 
maxbgmz   (2004-04-21 22:27) [3]

TIBDataSet
ещё вопрос.
зачем свойства selectsql,insertsql и проч.
не read-only? раз из трогать не положено и в них автоматически попадают значения.
скажите, а может быть blob можно внедрить в sql-query string?


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

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


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

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


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

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


 
Kadr ©   (2004-04-22 08:24) [7]

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


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

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

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


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

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

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

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


 
Vlad ©   (2004-04-22 20:52) [10]

TBlobStream, TMemoryStream + F1


 
maxbgmz   (2004-04-22 22:36) [11]

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

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

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


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

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


 
Oldman ©   (2004-04-23 06:47) [13]

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


 
Жук ©   (2004-04-23 08:47) [14]

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


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

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


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

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

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

help :"-(


 
Johnmen ©   (2004-04-24 01:43) [17]

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


 
ЮЮ ©   (2004-04-24 06:15) [18]

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

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-а


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

 
        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-26 21:22) [20]


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


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

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

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


 
kaif ©   (2004-04-27 02:53) [21]

У 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.
Разберешься.


 
kaif ©   (2004-04-27 02:55) [22]

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


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

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



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

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

Наверх




Память: 0.52 MB
Время: 0.038 c
3-1083242358
Леван
2004-04-29 16:39
2004.05.23
СКОЛЬКО ЗАПИСЕЙ БЫЛИ ОБРАБОТАНЫ?


3-1083294945
tnp.andrew
2004-04-30 07:15
2004.05.23
Как построить интерфейс быстрого ввода n взаимосвязанных таблиц?


1-1084258074
Masatek
2004-05-11 10:47
2004.05.23
Работа с текстовыми блоками...


9-1074314523
ZAROLF
2004-01-17 07:42
2004.05.23
Меню в игре.


4-1081185457
Kme
2004-04-05 21:17
2004.05.23
Печать на принтер из файла