![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не добавляется запись в Firebird [D7, XP]
serko © (2006-08-28 20:37:00)Есть база FireBird первое поле в ней автоинкрементное, но не разобрался как оно работает. Создался какой то генератор установил начальное значение для него в 1. Но почемуто автоматически оно не увеличивается, сам присваиваю ему значение. Расскажите как им пользоваться!
Но главная беда собственно в том что при
Form1.IBTransaction1.StartTransaction;
Try
If not Form1.IBTable1.Active then
Form1.IBTable1.Open;
Form1.IBTable1.InsertRecord([1,'123','Петров И.А.']);
Form1.IBTransaction1.Commit;
Except
Form1.IBTransaction1.Rollback;
Raise;
End;
Запись то появляется в Гриде но при повторном запуске программы там ничего нет. Куда она девается? мот я что то не так делаю?
serko (2006-09-02 21:40:00) [1]ё маё! что ж я это морочу всем голову!
Простите!
А unknown большое спасибо! Не обратил внимания на ссылку!
СПАААСИИИБААА!
unknown (2006-09-01 00:36:00) [2]
> serko © (31.08.06 22:04) [14]
Еще один писатель.
Я ссылку в [4] для кого выложил?
Там достаточно полно и с примером рассказано о TIBDataSet.
Виталий Панасенко (2006-08-31 23:20:00) [3]
> serko © (31.08.06 22:04) [14]
> хорошо! покажите мне любой рабочий пример который добавляет,
> изменяет и удаляет запись!
> Большое спасибо....
Слухай сюды ! Тебе люди дело кажуть ! Нужно ОБЯЗАТЕЛЬНО заполнить ModifySQL, DeletSQL, RefreshSQL, INsertSQL(кроме SelectSQL). Тогда все действия типа IBDataSet.Insert АВТОМАТИЧЕСКИ вызовут InsertSQL, IBdataSet.Delete -DeleteSQL и тд. Ты не путай х.. бит с байтом ! Это не локальная БД - все далается через запыты(запросы)...
Виталий Панасенко (2006-08-31 23:13:00) [4]
> serko © (31.08.06 22:04) [14]
> хорошо! покажите мне любой рабочий пример который добавляет,
> изменяет и удаляет запись!
> Большое спасибо....
Слухай сюды ! Тебе люди дело кажуть ! Нужно ОБЯЗАТЕЛЬНО заполнить ModifySQL, DeletSQL, RefreshSQL, INsertSQL(кроме SelectSQL). Тогда все действия типа IBDataSet.Insert АВТОМАТИЧЕСКИ вызовут InsertSQL, IBdataSet.Delete -DeleteSQL и тд. Ты не путай х.. бит с байтом ! Это не локальная БД - все далается через запыты(запросы)...
serko (2006-08-31 22:04:00) [5]хорошо! покажите мне любой рабочий пример который добавляет,изменяет и удаляет запись!
Большое спасибо....
Virgo_Style (2006-08-31 21:30:00) [6]serko © (31.08.06 21:26) [12]
это не другой способ
serko (2006-08-31 21:26:00) [7]
> Между прочим, InsertRecord это метод TDataset, потомками
> которого являются
> как ibtable, так и ibdataset.
Зачем мне ModifySQL и т.д. если вот люди говорят что так должно работать....
Просто нужно разобраться как именно это сделать!
Ато что есть много других способов я не сомневаюсь!
Sergey13 (2006-08-31 08:23:00) [8]> [10] serko © (30.08.06 18:48)
> Шо и где делать?
> В IBDataSet нет такого свойства ReadOnly, я бы поменял!
> Если с IBTable все ок а вот в IBDataSet отакая вот фигня!
Это не фигня - это нежелание читать ни хелп ни другую общедоступную литературу/документацию. У IBDataSet есть другие свойства, например ModifySQL, DeleteSQL и другие.
serko (2006-08-30 18:48:00) [9]
> Ну так сделай его не "read only". Хелп почитай
Шо и где делать?
В IBDataSet нет такого свойства ReadOnly, я бы поменял!
Если с IBTable все ок а вот в IBDataSet отакая вот фигня!
Sergey13 (2006-08-30 08:50:00) [10]> [8] serko © (29.08.06 20:43)
Ну так сделай его не "read only". Хелп почитай.
serko (2006-08-29 20:43:00) [11]
> Чего не катит? Ругается нецензурно что-ли?
Cannot modify a read only dataset
Вот такое пишет!
Desdechado (2006-08-29 12:27:00) [12]> почему то значения показывает после перезапуска проги
Если значение генерируется триггером, то нужнопереоткрыть датасет, чтоб узнать, что было сгенерировано. Если другими методами, то можно не переоткрывать
unknown (2006-08-29 00:04:00) [13]
> serko © (28.08.06 23:41) [5]
Чего не катит? Ругается нецензурно что-ли?
Между прочим, InsertRecord это метод TDataset, потомками которого являются
как ibtable, так и ibdataset.
serko (2006-08-28 23:41:00) [14]я уже разобрался, но почему то значения показывает после перезапуска проги, а так просто "Пусто"
А как в DataSet добавлять записи? InsertRecord не катит!
unknown (2006-08-28 23:16:00) [15]
> serko © (28.08.06 20:37)
Значит так. IBTable надо забыть раз и навсегда. Использовать надо IBDataSet.
Работать с ним просто - щелкаем на нем правой кнопкой, выбираем пункт
DataSet editor и там настраиваем запросы.
у IBDataSet есть еще св-во GenertorField - там можно указать имя генератора и
момент, когда будет генерироваться следующее значение.
В общем, тут все сказано : http://www.ibase.ru/devinfo/ibx.htm
serko (2006-08-28 22:15:00) [16]
> А не добавляется может потому что на автоинкрементном поле
> стоит уникальный индекс, а ты пытаешься туда все время значение
> 1 писать?
Оно то добавляется но почему то при перезапуске программы все что добавлял\удалял пропадает\появляется! я же все понимаю и насчет значения 1, меняю я их (пока с автоинкриментом не разберусь)
> Должен еще создасться триггер. Если вы INSERT новую запись
> и НЕ ЗАДАЕТЕ значение данного поля, то значение генератора
> увеличивается на единицу (или на величину установленную
> в триггере) и эта величина помещается в данное поле.
И тригер добавил и делаю так: Form1.IBTable1.InsertRecord([nil,'123','Петров И.А.']);
Но в первом поле просто пусто и все!
palva (2006-08-28 21:52:00) [17]А не добавляется может потому что на автоинкрементном поле стоит уникальный индекс, а ты пытаешься туда все время значение 1 писать?
palva (2006-08-28 21:22:00) [18]Создался какой то генератор
Должен еще создасться триггер. Если вы INSERT новую запись и НЕ ЗАДАЕТЕ значение данного поля, то значение генератора увеличивается на единицу (или на величину установленную в триггере) и эта величина помещается в данное поле.