2014-02-07 4 views
1

У меня есть технический паспорт MSACCESS я заселить и автоматическое изменение размера с помощью, наступая через каждую колонку с:Доступ: определение ширины столбца ПОСЛЕ автоматического изменения размера?

~field~.Properties("ColumnWidth") = -2 

Работает так же, как ожидалось.

Некоторые ширины столбцов разрешают сумасшедшие широкие (текст свободной формы и т. Д.). Я бы хотел пройти 2-й проход через колонки и проверить эти действительно длинные и сбросить до более узкой фиксированной ширины. Однако, когда я проверяю ширину столбца, я получаю результат «-2» (duh) по сравнению с фактической результирующей шириной (т. Е. 5760 твипов).

Любые предложения по определению итоговой ширины столбца ПОСЛЕ использования автоматического изменения размера?

+0

Вы сказали, что это форма, поэтому вы можете проверить элементы управления, а не поля. Вы имеете в виду таблицу или запрос? Если это так, вам будет лучше с формой. – Fionnuala

+0

Подход к набору данных очень хорошо работает в моем приложении DB, за исключением тех, которые имеют действительно WIDE столбцы. Полагаю, я могу предсказать по имени, какие столбцы обычно слишком широкие, и изменить их явно. Я бы предпочел общий подход ... –

+1

Я был недостаточно ясен. Используете ли вы данные, т. Е. Создали ли вы форму? – Fionnuala

ответ

-1

Изменено 3/10/2014 (предыдущий код был ПРИМЕР того, как найти широкий столбец и установить более узкий номер 7). Используя Access 2010, я смог сделать то, что вы хотите - я думаю. Моя колонка 7 был действительно широкий (25440) после установки их всех (и Debug.Print показывает значение. Тогда я просто сбросить на номер, который мне понравился (т.е. 2000).

Option Compare Database 
Option Explicit 

Private Sub Form_Load() 
Dim i As Integer 
On Error GoTo Error_trap 
For i = 0 To Me.Form.Controls.Count - 1 
    If InStr(1, Me.Form.Controls(i).Name, "_Label") = 0 Then 
     If Me.Form.Controls(i).Properties("ColumnWidth") > 2000 Then 
      Debug.Print "set " & i & vbTab & Me.Form.Controls(i).Name & vbTab & "From: " & Me.Form.Controls(i).Properties("ColumnWidth") & vbTab & "To: 2000" 
      Me.Form.Controls(i).Properties("ColumnWidth") = 2000 
     End If 
    End If 
Next i 

'Debug.Print "****** " & Me.Form.Controls(7).Properties("ColumnWidth") 

'Me.Form.Controls(7).Properties("ColumnWidth") = 1200 

Exit Sub 
Error_trap: 
    'Debug.Print Err.Number & vbTab & Err.Description & vbTab & i & vbTab & Me.Form.Controls(i).Name 
    Resume Next 
End Sub 
+0

Спасибо, но действительно ища более динамичный подход, в событии on load –

+0

Ваш код, приведенный выше, очень похож на мой код, я перехожу через элементы управления в таблицу данных, скрываю некоторые столбцы и устанавливаю ширину столбца = -2. Когда я снова проверяю ширину столбца, я получаю «-2» в результате, а не фактические итоговые твики. –

+0

1. Что значит «более динамичный»? Я просто использовал этот код в качестве примера, чтобы показать, как он может варьировать размеры столбцов. Вы можете использовать любой код VBA, который вы хотите проверить для любого количества условий. Вы не упомянули, какую версию Access вы используете, но, как я уже сказал, я 2010 год. –

Смежные вопросы