Рассылка статей | Выпуск 48. Несколько легких вопросов
Leadersoft.ru

Рассылка статей

Программирование и готовые решения

В этом разделе сайта дается информация от https://leadersoft.ru о статьях по программированию, ответах на вопросы и др. Статьи рассылаются подписчикам и публикуются на разных сервисах. Возможно некоторая информация устарела и ссылки не работают, но эти сведения могут быть полезны, если Вы серьезно занимаетесь разработкой баз данных

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

Ответы на вопросы

Вопрос 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 индексов. Это много? 
  Ответ. Вообще число полей или индексов в базе данных зависит только от разработчика. Сколько нужно, столько он и делает. С другой стороны, если много полей и индексов, то уже для базы данных имеет скорость загрузки данных. Рассматривая, например, форму на базе такой таблицы, то можно предположить, что данные будут выводиться достаточно долго. Для этого форма разбивается на ряд папок, информация в которые загружается при их открытии. Вывод. Если в таблице большинство текстовых полей и индексация ведется по ним, то это неправильно. Необходимо в таблице провести оптимизацию, т.е. найти повторяющиеся записи и вывести их в отдельные таблицы.

Добавить комментарий

Loading