Конференція vbstreets - перегляд теми - access2018

Мається на увазі текстове поле.
Пробував через ADO і ADOX привласнювати нове значення Size і SizeDefined. Лається, каже в даному контексті операція нездійсненна. Можна змінити якось в наявній таблиці, крім як створити нову таблицю з потрібним розміром полів і туди всі дані помістити?

Боротися і шукати, знайти і переховати

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

Якщо мені не зраджує пам'ять, через ADOX цього зробити не можна. Але можна за допомогою виконання запиту типу ALTER TABLE ALTER COLUMN.

label:
cli
jmp label


Так, мова йшла про полях таблиці типу текст. При імпорті даних текстові поля за замовчуванням встановлюються size = 255 байт, при тому, що реально набагато менше. Вручну задалбивает лазити в конструктор і міняти. Хочу зробити програмно.
Просте перевизначення властивості МоеПоле.Size = НовоеЗначеніе не виходить, Access лається якщо є вже значення в поле, що "в даному контексті така операція нездійсненна". Якщо поле пусте (тільки що додано в таблицю і даних ще в ньому немає) тоді можна перевизначити його довжину.
Запитав - чи є методи або бібліотеки дозволяють змінити довжину поля в якому вже є дані (типу як в конструкторі руками можна поміняти).
Що стосується збільшення / зменшення - це по барабану. Коли в конструкторі міняєш, Access просто попереджає, що довгі рядки можуть бути відрізані. Це вже мої проблеми, в сенсі, що запитом максимальна довжина існуючих значень в поле визначається за частку секунди - труднощів тут немає.

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?

Боротися і шукати, знайти і переховати

Всі прекрасно працює як через 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)"

Боротися і шукати, знайти і переховати

Схожі статті