LEADERSOFT.ru Разработка на заказ программ и сайтов
ЕСЛИ БАЗА ВАМ НУЖНА В ЛИДЕРСОФТ ЗАЙДИ СПЕРВА!
Список всех статей ... Подписка на новости (рассылка через subscribe.ru)




































Выпуск 48. Несколько "легких" вопросов

Подписка: "Access 2000 - программирование и готовые решения"
Тема:  "Вопросы по конференции"
Дата: 30.12.2004
Сайтhttp://www.leadersoft.ru
Поздравление 
  Поздравляем всех с наступающим Новым годом. Желаем прекрасного настроения, исполнения всех желаний и всего самого наилучшего. А теперь несколько "легких" вопросов к "праздничному столу".

Ответы на вопросы
Вопрос 3497 У меня вопрос по шаблонам Word. В форме в поле даты стоит длинный формат даты, а по закладке в документе выходит краткий. В чем причина? Обсуждение ...
  Ответ. Дата в базе данных имеет тип double (дата[.]время), где первая часть числа (до разделителя) хранит данные по дате, а после разделителя данные по времени. Вывод числа в офисные приложения будет зависеть от различных факторов установленных по умолчанию как в самом приложении, так и в операционной системе. Например, краткий формат времени, американский стандарт записи, разделитель точка или запятая и т.п. Одно из решений проблемы видится в переводе даты из числа в текстовую переменную. В Access это делается через Format: (Me.Date1 = Format(Date, "dd mmmm yyyy") & " г.") Теперь, если поле Me.Date1 выводить в Microsoft Word будет правильный результат: 30 декабря 2004 г. Обратите внимание, чтобы дата выводилась прописью, необходимо указать 4 буквы m, если укажите большее  количество, то результат будет неправильный.
Вопрос 3265 Есть memo поля! Как их читать в отчете ! Появляется  абра-кадабра! Обсуждение ...
  Ответ. Все memo поля в базе данных разбиваются на группы по 512 байт (могут разбиваться и по другому). При этом в запросах, использующих такие поля, могут возникать и проблемы. Например, если выводится информация больше 2048 символов в Microsoft Word, то может действительно отображаться абра-кадабра. Найти однозначное решение, как с этим бороться затруднительно, это может быть или ошибка офиса или какие-то ограничения на отображение информации. Выход из данного положения найден такой. Информация из запроса записывается во временную таблицу, а уже на ее основе строится отчет в Microsoft Word. В этом случае, проблема должна изчезнуть.
Вопрос 3702  Из формы вызываю функцию (например, dblClick по полю). Никакие параметры в функцию не передаются. Как обратиться к элементам этой формы из данной функции и получить их свойства?
Обсуждение ...
  Ответ. Вообще, если не использовать ActiveControl, то можно в функцию передать имя управляющего элемента.  Далее зная имя элемента можно обратиться к форме через parent. Например, так.
Private Sub Form_Load()
Me.Date1.OnDblClick = "=funDblClick([Date1])"
End Sub
Function funDblClick(ctl As Control)
MsgBox "Данные =" & ctl.Value & ", форма=" & ctl.Parent.Name
End Function
Вопрос 3705  Форма строится на основании запроса. Как сделать, что бы поле формы отображалось только в том случае, если оно получает от запроса определенную запись, и не отображалось, если эта запись пустая?
Обсуждение ...
  Ответ. Если требуется поле погасить поле для всей формы, то это можно сделать во время ее загрузки, т.е. событие Form_Load, но если требуется контролировать поле для каждой записи, то лучше обработать текущую запись.
Private Sub Form_Current()
Me.Поле1.Visible = Not IsNull(Me.Поле1)
End Sub
Вопрос 3707  В таблице порядка 70 полей, 16 индексов. Это много? Обсуждение ...
  Ответ. Вообще число полей или индексов в базе данных зависит только от разработчика. Сколько нужно, столько он и делает. С другой стороны, если много полей и индексов, то уже для базы данных имеет скорость загрузки данных. Рассматривая, например, форму на базе такой таблицы, то можно предположить, что данные будут выводиться достаточно долго. Для этого форма разбивается на ряд папок, информация в которые загружается при их открытии. Вывод. Если в таблице большинство текстовых полей и индексация ведется по ним, то это неправильно. Необходимо в таблице провести оптимизацию, т.е. найти повторяющиеся записи и вывести их в отдельные таблицы.