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

Вниз

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

 
vasek ©   (2005-11-15 02:47) [0]

IBTable1.Open;
 IBTable1.Insert;
 IBTable1.Fields[0].AsInteger:= 1;
 IBTable1.Fields[1].AsString:= "1";
 IBTable1.Post;
 IBTransaction1.Commit;

вместо интеджер:= 1 в таблице(в базе) получаю поле заполненное -- 0
вместо стринг:= "1" в таблице(в базе) получаю -- пустое поле


 
Digitman ©   (2005-11-15 08:43) [1]

а если просто
Open -> Insert -> Post -> Commit
то что видишь ?


 
Vasek ©   (2005-11-15 12:02) [2]

exception -> EDatabaseError with message Field "New_Field" must have a value. Process stopped... я так понимаю не нравится ему что транзакция закрывается, а поле пустое.


 
Sergey13 ©   (2005-11-15 12:09) [3]

Тригера на инсерт нету? Если есть, то что в нем?


 
Digitman ©   (2005-11-15 12:10) [4]


> я так понимаю не нравится ему что транзакция закрывается,
>  а поле пустое


неправильно понимаешь.

при Post() это исключение возникает (если конечно же кэширования нет), а не при Commit()

приводи скрипт таблицы.

а триггеры у таблицы есть ?


 
vasek ©   (2005-11-15 13:35) [5]

SET SQL DIALECT 3;
SET NAMES WIN1251;
CREATE TABLE NEW_TABLE (NEW_FIELD  INTEGER NOT NULL);

- нет тригера. подскажите неграмотному, что делать. написать тригер, какой? перед вставкой, после вставки.... если можно пример.


 
Sergey13 ©   (2005-11-15 13:39) [6]

2 [5] vasek ©   (15.11.05 13:35)
В скрипте у таблицы только одно целочисленное поле. Откуда в программе
IBTable1.Fields[1].AsString:= "1";
?

ЗЫ: Как то обзывать по человечески таблицы и поля фантазии не хватает? 8-)


 
Digitman ©   (2005-11-15 13:43) [7]


> vasek ©   (15.11.05 13:35) [5]


пути всех "неграмотных" пересекаются на ibase.ru


 
vasek ©   (2005-11-15 13:59) [8]

это я вторую создал с одним полем. какая в принципе разница одо поле, два главное ведь подход понять, какой тригер написать...


 
Digitman ©   (2005-11-15 14:05) [9]


> vasek ©   (15.11.05 13:59) [8]


> главное ведь подход понять, какой тригер написать


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


 
Sergey13 ©   (2005-11-15 14:11) [10]

2[8] vasek ©   (15.11.05 13:59)
>это я вторую создал с одним полем
А какая польза от второй таблицы для решения проблем с первой?

>главное ведь подход понять, какой тригер написать...
В данном случае тригер тебе и не нужен. Я так понял, что ты разбираешься с "неправильной" записью в БД? Вот и разбирайся, где у тебя подмена происходит.


 
vasek ©   (2005-11-15 15:01) [11]

да именно в таблице записанны не те значения, которыя я пытаюсь туда записать. в первом случае два поля, во втором одно но результат один - нули в поле интеджер и пустое поле в стринге... не пойму где подмена происходит, даже не знаю куда смотреть :(

нет тригера. должен быть, какой?


 
Sergey13 ©   (2005-11-15 15:10) [12]

2 [11] vasek ©   (15.11.05 15:01)
В ИБЭксперте (или что там у тебя есть) выполни запрос типа
Insert into table_Name(Field1,Field2) values(1,"1")
Имена естественно твои должны быть. Получится или нет?


 
vasek ©   (2005-11-15 16:16) [13]

в АйБиЭксперте запускаб Скьюэль редактор Ф12 выполняю запрос:
Insert into NEW_TABLE (NEW_FIELD) values(1) получаю:

1 record(s) was(were) inserted into NEW_TABLE

------ Performance info ------
Prepare time = 0ms
Execute time = 0ms
Current memory = 1 382 140
Max memory = 1 523 200
Memory buffers = 2 048
Reads from disk to cache = 0
Writes from cache to disk = 2
Fetches from cache = 9

захожу в закладку данные, все прошло.


 
Sergey13 ©   (2005-11-15 16:20) [14]

2 [13] vasek ©   (15.11.05 16:16)
Значит где то в программе чего то напутал. В БифоПост ничего нет? Вообще обработчики у твоей IBTable1 есть? Какие?


 
vasek ©   (2005-11-15 16:49) [15]

у меня на форме: АйБиДатабэйс, АйБиТранзакшн, АйБиТэйбл, ДатаСоурсе, ДбГрид ну еще кнопка. Все между собой законекчено и все больше ничего( обработчиков нет за исключение стандартных которые появляются сами при коннекшине и обработчика нажатия на кнопку :( ). Может чтото лишнее на форме или какоето свойство забыл переключить...?


 
Sergey13 ©   (2005-11-15 16:55) [16]

2 [15] vasek ©   (15.11.05 16:49)
>обработчиков нет за исключение стандартных которые появляются сами при коннекшине
Это что за обработчики?

>и обработчика нажатия на кнопку
Ну давай его что-ли сюда. 8-) Полностью только.


 
vasek ©   (2005-11-15 17:09) [17]

procedure TForm1.Button1Click(Sender: TObject);
begin
IBTable1.Open;
IBTable1.Insert;
IBTable1.Fields[0].AsInteger:= 1;
IBTable1.Post;
IBTransaction1.Commit;
end;


 
msguns ©   (2005-11-15 17:20) [18]

Скорее всего у него Fields[0] "посажен" на генератор, стартовое значение которого = 0. И, т.к. создавалась таблица (и генератор) в эксперте, создался триггер BEFORE INSERT, где значение ключа изімается из генератор. То же, что посылал клиент, просто игнорируется.


 
vasek ©   (2005-11-15 17:26) [19]

нет тригеров - в закладке триггеры ничего нет. а где я могу увидеть "посажен" на генератор, стартовое значение которого = 0 или нет ?


 
vasek ©   (2005-11-15 18:13) [20]

Digitman © , Sergey13 ©, msguns ©, народ, давайте уже поставим жирную точку.



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

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

Наверх




Память: 0.51 MB
Время: 0.035 c
3-1129698754
Карелин Артем
2005-10-19 09:12
2005.12.04
Проблема с правильным определением типа поля в MS SQL.


14-1132040136
Антоний
2005-11-15 10:35
2005.12.04
Про принтер и USB


5-1114182342
COOLer
2005-04-22 19:05
2005.12.04
Компонент содержащий другие компоненты


2-1131885148
John Doe
2005-11-13 15:32
2005.12.04
Реестр,значение ключа по умолчанию


2-1131945110
Laymer
2005-11-14 08:11
2005.12.04
Запуск DOS приложений