Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Печать данных в MS Access. Не знаю как, подскажите, Не могу распечатать данные из БД в строк 
:(
    Опции темы
dalmatin
Дата 29.11.2007, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 29.11.2007

Репутация: нет
Всего: нет



Уважаемые спецы! Я не могу распечатать данные из БД  подряд в строку. 

Создала в конструкторе форму - внесла туда поля, распределила на листе (выше-ниже-правее-левее).  Но поняла, что это не очень подходит. Нужно чтобы эти поля печатались подряд друг за другом в строки длиной, например, 256 символов (А4), при заполнении строки автоматически переходили на следующую. Следующая пронумерованная запись начиналась бы с новой строки (под своим порядковым номером). Это сильно съэкономило бы бумагу, да и смотрелось бы лучше.
Поскольку количество символов в полях базы различное, то просто конструктором в форме отчета выставить их рядом невозможно. 
Как я понимаю, в отчете нужно задать что-то такое: "печатать данные поля (перечислить в нужном порядке) подряд, не привязываясь к заданному количеству символов поля, а по фактическому количеству знаков" 
или
сразу задать в поле некое плавающее значение.

Что посоветуете???

Мне нужно, чтобы данные из базы данных (текстовые) печатались подряд в одну строку, без пробелов, и при заполнении строки переходили бы на другую, а следующая запись шла бы с новой строчки.


PM MAIL   Вверх
Akina
Дата 29.11.2007, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Да, но такое склеивание полей не даст возможности понять, где кончается одно и начинается другое.

Но если это не проблема - выполните конкатенацию в запросе, который является источником данных отчета.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
dalmatin
Дата 30.11.2007, 08:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 29.11.2007

Репутация: нет
Всего: нет



"выполните конкатенацию в запросе, который является источником данных отчета"

Уважаемая Akina!
Я банальный "чайник", я даже слова такого не знаю. Пожалуйста, поясните по шагам, где какие установки произвести.
Спасибо.

Добавлено через 3 минуты и 45 секунд
"но такое склеивание полей не даст возможности понять, где кончается одно и начинается другое"

А задать печать полей, например, через запятую - невозможно?

PM MAIL   Вверх
Akina
Дата 30.11.2007, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



 smile 
Цитата(dalmatin @  30.11.2007,  09:32 Найти цитируемый пост)
Уважаемая Akina!

УважаемЫЙ dalmatin, никогда невредно посмотреть информацию о собеседнике  smile 

==================
Цитата(dalmatin @  30.11.2007,  09:32 Найти цитируемый пост)
Я банальный "чайник", я даже слова такого не знаю.

А нам-то какое до этого дело? Читайте, учитесь. Начиная со встроенной справки.
Вообще конкатенация - это процесс "сложения" строк.

Цитата(dalmatin @  30.11.2007,  09:32 Найти цитируемый пост)
поясните по шагам, где какие установки произвести

Вместо чего-то типа
Код

select id,fld1,fld2,fld3 from mytable

должно быть что-то типа
Код

select id,(fld1 & fld2 & fld3) as fld from mytable


Цитата(dalmatin @  30.11.2007,  09:32 Найти цитируемый пост)
задать печать полей, например, через запятую - невозможно?

Отчет в общем случае печатается в том виде, в каком показывается. Возможны иные варианты, но Вам они пока недоступны из-за недостатка знаний.
Но главное - он оперирует теми данными, которые ему дает запрос-источник данных. Вот именно там и надо подготовить данные в той форме, в какой они должны отобразиться в готовом отчете.



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
dalmatin
Дата 2.12.2007, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 29.11.2007

Репутация: нет
Всего: нет



УважаемЫЙ Akina,
спасибо за ответ, постараюсь посмотреть и разобраться. Современных знаний нет, это верно, диплом писала еще на Foxbase+, вы наверное и не слышали о такой СУБД. Это былы во времена, когда ЭВМ с трудом помещалась в комнате  smile  Приблизительно в те же времена с программированием и "завязала". Еще раз благодарю.

PM MAIL   Вверх
Akina
Дата 3.12.2007, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(dalmatin @  2.12.2007,  10:43 Найти цитируемый пост)
диплом писала еще на Foxbase+, вы наверное и не слышали о такой СУБД. Это былы во времена, когда ЭВМ с трудом помещалась в комнате  

Я не одну и не две программы отладил на ЕС1033 и СМ4. А уж сколько всего было понаписано на Клипере (еще Нантакетовском), когда FoxBase еще просто не существовал... 

Цитата(dalmatin @  2.12.2007,  10:43 Найти цитируемый пост)
Приблизительно в те же времена с программированием и "завязала". 

ну так "развязывайте". Тем более что такой повод.

В общем, Вам надо создать не отчет - это дело десятое - а запрос, который покажет данные именно в той форме, в которой они нужны.
Потом на основе этого запроса строится отчет - он придаст им нужный вид, не более. Но данные уже должны быть готовы.

Вот на зоздание такого запроса, который соберет несколько полей в одно и разделит их запятыми или чем там надо, и бросьте сейчас усилия. Используйте построитель запросов, построитель выражений... должно получиться.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
kapbepucm
Дата 3.12.2007, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: нет
Всего: 12



Я думаю запросом здесь не отделаться. Akina, сильно не ругай, если это не так, это только предположение ((: Придется создавать дополнительную таблицу. Если задание в том, что из исходной таблицы надо все поля выбирать и склеивать в единое целое и это целое не должно превышать размер 256 символов, явно что-то будет переходить на новую строку. Предлагаю это решать программно:
Код
Private Sub AddString256(ByRef RST As DAO.Recordset, ByRef Stroka As String, ByRef StringLength As Long)
  If RST.RecordCount > 0 Then
    RST.MoveLast
    If Len(RST.Fields("String256").Value) < StringLength Then
      RST.Edit
      RST.Fields("String256").Value = RST.Fields("String256").Value & Left(Stroka, StringLength - Len(RST.Fields("String256").Value))
      RST.Update
      If Len(Stroka) > StringLength - Len(RST.Fields("String256").Value) Then AddString256 RST, Right(Stroka, Len(Stroka) - StringLength + Len(RST.Fields("String256").Value)), StringLength
    Else
      Dim LastLine As Long
      LastLine = RST.Fields("LineID").Value
      RST.AddNew
      RST.Fields("LineID").Value = LastLine + 1
      RST.Fields("String256").Value = Left(Stroka, StringLength)
      RST.Update
      If Len(Stroka) > StringLength Then AddString256 RST, Right(Stroka, Len(Stroka) - StringLength), StringLength
    End If
  Else
    RST.AddNew
    RST.Fields("LineID").Value = 0
    RST.Fields("String256").Value = Left(Stroka, StringLength)
    RST.Update
    If Len(Stroka) > StringLength Then AddString256 RST, Right(Stroka, Len(Stroka) - StringLength), StringLength
  End If
End Sub
Public Sub Test()
  Const MyOldTableName As String = "TextTable" 'имя исходной таблицы
  Const MyNewTableName As String = "Paladin" 'имя новой таблицы
  Const StringLength As Long = 256 'длина строки
  Dim DBS As DAO.Database
  Dim tdfNew As DAO.TableDef
  Set DBS = CurrentDb
  Set tdfNew = DBS.CreateTableDef(MyNewTableName)
  tdfNew.Fields.Append tdfNew.CreateField("LineID", dbLong)
  tdfNew.Fields.Append tdfNew.CreateField("String256", dbMemo)
  DBS.TableDefs.Append tdfNew
  Dim RST1 As DAO.Recordset, RST2 As DAO.Recordset
  Dim FLD As DAO.Field
  Set RST1 = DBS.OpenRecordset(MyOldTableName)
  Set RST2 = DBS.OpenRecordset(MyNewTableName)
  Do Until RST1.EOF
    For Each FLD In RST1.Fields
      AddString256 RST2, FLD.Value & ",", StringLength
    Next FLD
    RST1.MoveNext
  Loop
  RST1.Close
  RST2.Close
  DBS.Close
End Sub
dalmatin, если идея понравиться, дай знать, код надо будет доработать на нужную сортировку.


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
Akina
Дата 3.12.2007, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(kapbepucm @  3.12.2007,  12:37 Найти цитируемый пост)
Я думаю запросом здесь не отделаться.

Не вижу никаких предпосылок такому утверждению.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
kapbepucm
Дата 3.12.2007, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: нет
Всего: 12



Цитата(Akina @  3.12.2007,  12:04 Найти цитируемый пост)
Не вижу никаких предпосылок такому утверждению.
А как же определённая длина строки? ("Невлезшее" в определённой записии должно переходить на новую запись)
Код
То, что:
----------------
aaa,bbb,ccc,ddd,
eee,fff,ggg,hhh,
----------------
должно стать (при длине= 7)
-------
aaa,bbb
,ccc,dd
d,eee,f
ff,ggg,
hhh,
-------
 smile
[offtopic]Любопытно, как быть с шрифтами у которых буквы разной ширины.[/offtopic]

Это сообщение отредактировал(а) kapbepucm - 3.12.2007, 13:17


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Access | Следующая тема »


 




[ Время генерации скрипта: 0.0553 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.