Access2003. Можно изменить размер поля заполненной таблицы?

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
igor_m
Постоялец
Постоялец
 
Сообщения: 343
Зарегистрирован: 22.03.2002 (Пт) 12:40

Access2003. Можно изменить размер поля заполненной таблицы?

Сообщение igor_m » 21.07.2011 (Чт) 18:28

Имеется ввиду текстовое поле.
Пробовал через ADO и ADOX присваивать новое значение Size и SizeDefined. Ругается, говорит в данном контексте операция невыполнима. Можно изменить как-то в имеющейся таблице, кроме как создать новую таблицу с нужным размером полей и туда все данные поместить?

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Access2003. Можно изменить размер поля заполненной табли

Сообщение ger_kar » 21.07.2011 (Чт) 19:18

Я честно сказать вообще из прочитанного ничего не понял. Сначала речь идет о таблице, потом имеется ввиду текстовое поле. Поле таблицы с типом данных текст что-ли? Если это, то какой размер нужно поменять - размер отображаемой ячейки (представление), либо символьный размер для данных. Опять же как поменть, вручную или программно, в какую сторону, увеличить - пожалуйста, а вот уменьшить без потерь, вряд-ли.
Бороться и искать, найти и перепрятать

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Access2003. Можно изменить размер поля заполненной табли

Сообщение iGrok » 21.07.2011 (Чт) 20:07

Имеется в виду программное изменение размера(ёмкости, если хочешь) текстового поля в таблице базы данных через, например, ADOX.

Если мне не изменяет память, через ADOX этого сделать нельзя. Но можно при помощи выполнения запроса типа ALTER TABLE ALTER COLUMN.
label:
cli
jmp label

igor_m
Постоялец
Постоялец
 
Сообщения: 343
Зарегистрирован: 22.03.2002 (Пт) 12:40

Re: Access2003. Можно изменить размер поля заполненной табли

Сообщение igor_m » 21.07.2011 (Чт) 23:31

ger_kar писал(а):Я честно сказать вообще из прочитанного ничего не понял. Сначала речь идет о таблице, потом имеется ввиду текстовое поле. Поле таблицы с типом данных текст что-ли?

Да, речь шла о полях таблицы типа текст. При импорте данных текстовые поля по умолчанию устанавливаются size=255 байт, при том, что реально намного меньше. Вручную задалбывает лазить в конструктор и менять. Хочу сделать программно.
Простое переопределение свойства МоеПоле.Size=НовоеЗначение не получается, Access ругается если есть уже значения в поле, что "в данном контексте такая операция невыполнима". Если поле пустое (только что добавлено в таблицу и данных еще в нем нет) тогда можно переопределить его длину.
Спросил - есть ли методы или библиотеки позволяющие изменить длину поля в котором уже есть данные (типа как в конструкторе руками можно поменять).
Что касается увеличения/уменьшения - это по барабану. Когда в конструкторе меняешь, Access просто предупреждает, что длинные строки могут быть отрезаны. Это уже мои проблемы, в смысле, что запросом максимальная длина существующих значений в поле определяется за долю секунды - трудностей тут нет.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Access2003. Можно изменить размер поля заполненной табли

Сообщение ger_kar » 22.07.2011 (Пт) 18:56

iGrok писал(а):Но можно при помощи выполнения запроса типа ALTER TABLE ALTER COLUMN.
Проверил, метод работает, как в сторону увеличения, так и в сторону уменьшения, но запустить запрос удалось только через DoCmd, пробовал через ADODB, не получилось.
Только так:
Код: Выделить всё
Public Sub Test()
    Dim strSQL      As String
    strSQL = "ALTER TABLE tblКонтрагенты ALTER COLUMN Наименование TEXT(5)"
    DoCmd.RunSQL strSQL
End Sub

Интересно, а можно вообще обойтись без DoCmd?
Бороться и искать, найти и перепрятать

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Access2003. Можно изменить размер поля заполненной табли

Сообщение ger_kar » 22.07.2011 (Пт) 20:00

Все прекрасно работает как через ADO, так и через DAO, я просто затупил, как всегда подвели малозаметные мелочи ;)
Через ADO:
Код: Выделить всё
CurrentProject.Connection.Execute "ALTER TABLE tblTest ALTER COLUMN Tester Text(33)"

Через DAO:
Код: Выделить всё
CurrentDb.Execute "ALTER TABLE tblTest ALTER COLUMN Tester Text(3)"
Бороться и искать, найти и перепрятать

igor_m
Постоялец
Постоялец
 
Сообщения: 343
Зарегистрирован: 22.03.2002 (Пт) 12:40

Re: Access2003. Можно изменить размер поля заполненной табли

Сообщение igor_m » 23.07.2011 (Сб) 19:45

Благодарю за помощь.
Не пользовался ALTER TABLE. Все сразу упростилось.


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11

    TopList