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

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

Редактирование записей БД


sergeyst ©   (2007-02-19 13:26:00) 

Всем привет! Есть результат запроса. Можно добавлять записи. Удалять можно только вновь добавленные(IBDataSet.ApplyUpdates - только при нажатии на применить), прежние - только редактировать. Как их можно отличить друг от друга?


sergeyst   (2007-02-20 15:28:00) [1]

with IBDSSketch do
   try
     FN1 := TempPath + '\EditDoc\' + FieldByName('PREVIEW_FILENAME').AsString;
     SN1 := FieldByName('PREVIEW_FILENAME').AsString;
    (FieldByName('PREVIEW_BODY') as TBlobField).SaveToFile(FN1);
     Next;
    FN2 := TempPath + '\EditDoc\' + FieldByName('PREVIEW_FILENAME').AsString;
     SN2 := FieldByName('PREVIEW_FILENAME').AsString;
     (FieldByName('PREVIEW_BODY') as TBlobField).SaveToFile(FN2);
     Edit;
     FieldByName('PREVIEW_FILENAME').AsString := SN1;
     (FieldByName('PREVIEW_BODY') as TBlobField).LoadFromFile(FN1);
     Prior;
     Edit;
     FieldByName('PREVIEW_FILENAME').AsString := SN2;
    (FieldByName('PREVIEW_BODY') as TBlobField).LoadFromFile(FN2);
Вот, пытаюсь поменять местами 2 поля в запися. Выдает ошибку File not found. Файлы сохраняются на диске, но сразу после перевода датасета в режим редактирования, удаляются. Почему?


sergeyst   (2007-02-19 16:09:00) [2]

Блин, и правда фигня. Спасибо.


Sergey13   (2007-02-19 15:52:00) [3]

> [7] sergeyst ©   (19.02.07 15:37)
> А это где?
У поля в датасете.

>   Edit;
>   FieldByName('PREVIEW_FILENAME').AsString := ExtractFileName(FN);
>   FieldByName('PREVIEW_TYPE_ID').AsInteger := 2;
>   (FieldByName('PREVIEW_BODY') as TBlobField).LoadFromFile(FN);
>   FieldByName('PREVIEW_NOTE').AsString := 'Neaie?iaaiiueaee ' + TS;
>   Insert;

Edit - переводит текущую записьв режим редактирования.
Insert - вставляет новую.
У тебя и получается фигня. см. PS от
> [10] Desdechado ©   (19.02.07 15:44)


Desdechado   (2007-02-19 15:44:00) [4]

Insert добаляет новую (пустую запись). Вот в ней и не проходит.

PS замени на Post;


sergeyst   (2007-02-19 15:43:00) [5]

Главное запись-то добавляется


sergeyst   (2007-02-19 15:42:00) [6]

Вот еще глюк(может мой?).
 with IBDSSketch do begin
   Edit;
   FieldByName('PREVIEW_FILENAME').AsString := ExtractFileName(FN);
   FieldByName('PREVIEW_TYPE_ID').AsInteger := 2;
   (FieldByName('PREVIEW_BODY') as TBlobField).LoadFromFile(FN);
   FieldByName('PREVIEW_NOTE').AsString := 'Ñêàíèðîâàííûé ôàéë ' + TS;
   Insert;
   ApplyUpdates;
 end;
На ApplyUpdates ругается: Field 'PREVIEW_TYPE_ID' must have a value. Я же задаю значение, так в чем дело? И почему Insert проходит? Ругаться, так уж сразу. Или есть отличие?


sergeyst   (2007-02-19 15:37:00) [7]

> Sergey13 ©   (19.02.07 14:27) [5]

> Required у поля посмотри.

А это где?

> Desdechado ©   (19.02.07 15:32) [6]

Отличить добавленные в этом сеансе от выбранных из БД


Desdechado   (2007-02-19 15:32:00) [8]

Отличить что от чего?
Добавленные от удаленных?


Sergey13   (2007-02-19 14:27:00) [9]

> [4] sergeyst ©   (19.02.07 14:18)
> А как его добавить?
Напрмер добавив к списку полей ы запросе нечто вроде cast(1 as integer) as Flag

> Объясните пжлста.ъ
Так жмень на кнопку и выбираешь из выпадающих списков значения. Чего там непонятного.

> А должно ли так быть?

Required у поля посмотри.


sergeyst   (2007-02-19 14:18:00) [10]

Sergey13 ©   (19.02.07 13:55) [3]
А как его добавить?
И еще. При вставке получить new_key_id, кроме как через запрос gen_id(gen, 1) from..., нельзя? GeneratorField'ом не знаю как пользоваться, как-то пробовал - не получилось. Объясните пжлста.ъ

А должно ли так быть? У таблицы есть триггер перед вставкой. В нем написано new.поле_такое-то... что-то там вставить в него. Поле обозначено как не пустое. Ну я и пытаюсь вставить запись, не указывая значение поля_такого-то. Ругается - поле не должно быть нуль или Должно иметь значение.


Sergey13   (2007-02-19 13:55:00) [11]

> [2] sergeyst ©   (19.02.07 13:50)
Как вариант.
Добавь к запросу фиктивное поле, равное например 1. В новых записях пиши в него 0.


sergeyst   (2007-02-19 13:50:00) [12]


> Это ты желаемый результат описал или проблему свою?


> Sergey13 ©   (19.02.07 13:28) [1]

Описал желаемый результат вместе с проблеммой -
> Как их можно отличить друг от друга?


Sergey13   (2007-02-19 13:28:00) [13]

> Можно добавлять записи. Удалять можно только вновь добавленные(IBDataSet.
> ApplyUpdates - только при нажатии на применить), прежние
> - только редактировать.

Это ты желаемый результат описал или проблему свою?


Наверх

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