Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблема с изменением записи, Interbase 
:(
    Опции темы
Kusik
Дата 10.11.2006, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 9.12.2005
Где: Харьков

Репутация: нет
Всего: нет



при изменении/удалении записи вылазят ошибки.
"arithmetic exception,numeric overflow or string truncation" "Cannot transliterate character between character sets" при изменении, при вызове Post и "Multiple records found, but only one expected" приудалении. об этой ошибке почитал, но не могу изменить структуру БД и вручную тоже не могу удалять, т.к. записей много. может есть другой способ???
Код

if (bufferENTRY_DATE.AsString='') then  //Если висячая дата выхода
       buffer.Delete
      else
       begin
        buffer.edit;
        bufferEXIT_DATE.AsString:=''; //Если целая запись
        buffer.Post;
       end;

 buffer - TTable,   EXIT_DATE &  ENTRY_DATE поля типа TIMESTAMP

помогите, может можно по-другому это делать? с Interbase мало работал
PM MAIL ICQ   Вверх
TaNK
Дата 10.11.2006, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 669
Регистрация: 29.10.2006
Где: Краснодар

Репутация: нет
Всего: 1



Цитата(Kusik @ 10.11.2006,  11:35)
при изменении/удалении записи вылазят ошибки.
"arithmetic exception,numeric overflow or string truncation" "Cannot transliterate character between character sets" при изменении, при вызове Post и "Multiple records found, but only one expected" приудалении. об этой ошибке почитал, но не могу изменить структуру БД и вручную тоже не могу удалять, т.к. записей много. может есть другой способ???
Код

if (bufferENTRY_DATE.AsString='') then  //Если висячая дата выхода
       buffer.Delete
      else
       begin
        buffer.edit;
        bufferEXIT_DATE.AsString:=''; //Если целая запись
        buffer.Post;
       end;

 buffer - TTable,   EXIT_DATE &  ENTRY_DATE поля типа TIMESTAMP

помогите, может можно по-другому это делать? с Interbase мало работал

база какая локальная или нет?


--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


PM MAIL ICQ   Вверх
Akella
Дата 10.11.2006, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



TaNK, какая разница?
PM MAIL   Вверх
TaNK
Дата 10.11.2006, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 669
Регистрация: 29.10.2006
Где: Краснодар

Репутация: нет
Всего: 1



Цитата(Akella @ 10.11.2006,  13:19)
TaNK, какая разница?

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


--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


PM MAIL ICQ   Вверх
Akella
Дата 10.11.2006, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Цитата(Kusik @  10.11.2006,  11:35 Найти цитируемый пост)
"arithmetic exception,numeric overflow or string truncation" "

это, наверное, из-за того, что в поле нельзя сохранить пустое значение
PM MAIL   Вверх
TaNK
Дата 10.11.2006, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 669
Регистрация: 29.10.2006
Где: Краснодар

Репутация: нет
Всего: 1



Цитата(Akella @ 10.11.2006,  13:23)
Цитата(Kusik @  10.11.2006,  11:35 Найти цитируемый пост)
"arithmetic exception,numeric overflow or string truncation" "

это, наверное, из-за того, что в поле нельзя сохранить пустое значение

может надо было прописать в бд not null поля


--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


PM MAIL ICQ   Вверх
Akella
Дата 10.11.2006, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



И ещё, в какой кодировке создана база, таблица, поле? И какую кодировку ты указываешь при подключении?
PM MAIL   Вверх
TaNK
Дата 10.11.2006, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 669
Регистрация: 29.10.2006
Где: Краснодар

Репутация: нет
Всего: 1



Win1251 необходима если я не ошибаюсь!


--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


PM MAIL ICQ   Вверх
superVad
Дата 10.11.2006, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 3
Всего: 15



использую фибовские компоненты, но думаю и с другими покатит

FIBDataSet1 - вместо тейбла

Код

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  pFIBDataSet1.Transaction.StartTransaction;
  try
    pFIBDataSet1.First;
    while true do begin
      if pFIBDataSet1.FieldByName('ENTRY_DATE').IsNull
      then begin
        pFIBDataSet1.Delete;
        Continue;
      end
      else begin
        pFIBDataSet1.Edit;
        pFIBDataSet1.FieldByName('ENTRY_DATE').AsVariant :=  Null;
      end;
      if pFIBDataSet1.EOF then break;
      pFIBDataSet1.Next;
    end;
    pFIBDataSet1.Post;
  except
    pFIBDataSet1.Transaction.Rollback;
    exit;
  end;
  pFIBDataSet1.Transaction.Commit;
end;


надо еще не забыть в UpdateSQL и DeleteSQL написать запросы

Это сообщение отредактировал(а) superVad - 10.11.2006, 15:53
PM MAIL   Вверх
Kusik
Дата 10.11.2006, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 9.12.2005
Где: Харьков

Репутация: нет
Всего: нет



таблица такая:
CREATE TABLE BUFFER 
(
  SCAN_CODE     INTEGER,
  PASS_DATE     TIMESTAMP,
  ENTRY_DATE     TIMESTAMP,
  ENTRY_CABIN     VARCHAR(2) CHARACTER SET WIN1251,
  EXIT_DATE     TIMESTAMP,
  EXIT_CABIN     VARCHAR(2) CHARACTER SET WIN1251,
  TABLE_NO     INTEGER,
  EMP_NAME     VARCHAR(50) CHARACTER SET WIN1251,
  ENT_CODE     VARCHAR(5) CHARACTER SET WIN1251,
  ENT_NAME     VARCHAR(50) CHARACTER SET WIN1251,
  DEP_CODE     INTEGER,
  DEP_NAME     VARCHAR(50) CHARACTER SET WIN1251,
  WORK_BEG     TIMESTAMP,
  WORK_END     TIMESTAMP,
  BREAK_BEG     TIMESTAMP,
  BREAK_END     TIMESTAMP,
  PASS_DATE_ONLY     TIMESTAMP
);
как видите, никакой уникальности и индексов тут нет. структуру увы не могу менять

Добавлено @ 15:02 
как я понимаю значение null может быть тока у записи, в поле которой значение не было занесено ни одного разу. А если значение было, то null нельзя установить, поэтому пишу так: bufferEXIT_DATE.AsString:='' просто не знаю, что является пустотой  в виде TDateTime
PM MAIL ICQ   Вверх
Akella
Дата 10.11.2006, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Код

pFIBDataSet1.FieldByName('ENTRY_DATE').AsVariant :=  Null;


Добавлено @ 15:15 
а вообще фибовские компоненты пишут в базу(текстовое поле) Null, если передаешь пустое значение, если свойство SetEmptyStrToNull установлено в True

Код


pFIBDataSet1.FieldByName('ENTRY_DATE').AsString := '';//в базу попадёт Null

PM MAIL   Вверх
superVad
Дата 10.11.2006, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 3
Всего: 15



Akella: да работает, а первый раз не заработало (видать другая ошибка была, а я подумал что нельзя так)  smile 
PM MAIL   Вверх
Kusik
Дата 10.11.2006, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 9.12.2005
Где: Харьков

Репутация: нет
Всего: нет



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

Добавлено @ 15:36 
у меня Фибовских компонентов нет. есть тока BDE ADO Interbase. вот начал использовать последние, - посыпались те ошибки.
проблему повторных записей решил, теперь остались частично-повторные записи. но как производить запись в поле в интербейз таблице? 
я использую Edit, ... Post,- это неправильно?

PM MAIL ICQ   Вверх
superVad
Дата 10.11.2006, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 3
Всего: 15



Цитата

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


не совсем понял - надо повторяющиеся записи удалять?

Цитата

может я не те компоненты использую? (TDatabase, TTable)


я так понимаю имеються ввиду TIBDatabase, TIBTable
думаю можно и с этими решить твои задачи, но лучше установи и используй фибовские (и я бы взял вместо Table - Dataset)

офсайт
PM MAIL   Вверх
Akella
Дата 10.11.2006, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



используй IBUpdateSQL
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0581 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.