Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > "Размер поля недостаточен, чтобы принять данные"


Автор: Данкинг 10.10.2007, 00:00
Есть база Access, подключаюсь к ней через ADO. Есть два поля: одно из них длиной больше, чем другое. Я запросом пытаюсь присвоить данные из большего поля меньшему. Но сделать этого не получается, так как возникает ошибка "размер поля недостаточен, чтобы принять требуемые данные". Что сделать, чтобы Access перестал заботиться о сохранности данных? smile 

Автор: Deniz 10.10.2007, 04:43
1. Изменить размер поля.
2. Сделать SubString в запросе.

Автор: Данкинг 10.10.2007, 09:42
Цитата(Deniz @ 10.10.2007,  05:43)
1. Изменить размер поля.
2. Сделать SubString в запросе.

1. Нет, мне нужен именно меньший размер.
2. А пример можно на Дельфи?

Автор: Deniz 11.10.2007, 05:28
Цитата(Данкинг @  10.10.2007,  12:42 Найти цитируемый пост)
2. А пример можно на Дельфи? 

Да легко, например field1 varchar(20), field2 varchar(100) нужно перенести из field2 в field1
это запросом
Код

update tbl set field1 = Mid(field2, 1, 20)

в Delphi
Код

tbl.first;
while not tbl.eof do begin
  tbl.edit;
  tbl.findfield('field1').value:=copy(tbl.findfield('field2').value, 1, 20);
  tbl.post;
  tbl.next;
end;

Автор: Akella 11.10.2007, 07:30
так немного универсальнее
Код

tbl.findfield('field1').value:=copy(tbl.findfield('field2').value, 1, tbl.findfield('field2').size);

Автор: Deniz 11.10.2007, 14:27
Akella, опечаточка у тебя вышла, нужно так:
tbl.findfield('field1').value:=copy(tbl.findfield('field2').value, 1, tbl.findfield('field1').size);

Для Автора:
Есть удовлетворение? Или еще сомнения остались?
Только вот мне не понятно, зачем такое "обрезание" делать?
Должен быть какой-то более сложный алгоритм, чем просто copy(string, start, length).

Автор: Данкинг 11.10.2007, 19:43
Цитата(Deniz @ 11.10.2007,  15:27)
Для Автора:
Есть удовлетворение? Или еще сомнения остались?

Есть. Кстати, насчёт запроса с mid я сегодня сам догадался тоже. smile А зачем - для обрезания базы и дальнейшего экспорта её в DBF.

Автор: Deniz 12.10.2007, 05:11
Цитата(Данкинг @  11.10.2007,  22:43 Найти цитируемый пост)
А зачем - для обрезания базы и дальнейшего экспорта её в DBF. 

Звезда в шоке (с) (С.Зверев)
На... зачем делать второе поле, переносить туда данные и иметь проблемы, когда можно сделать просто
Код

select ..., mid(field, 1, 20) from table
 и никакого поля создавать не надо

Автор: Данкинг 12.10.2007, 10:35
Цитата(Deniz @ 12.10.2007,  06:11)
Код

select ..., mid(field, 1, 20) from table
 и никакого поля создавать не надо

Вах. Не подумал даже, что такое прокатит. Попробую.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)