Формирование отчета

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
alleonid
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 122
Зарегистрирован: 14.07.2005 (Чт) 7:01

Формирование отчета

Сообщение alleonid » 17.08.2005 (Ср) 8:43

Имею вопросы.
1) Элемент TextBox может быть многострочным и иметь полосу прокрутки, если текст не умещается в поле. Имеются строковые переменные: StrX1, StrX2, StrX3 и т.д. Формирую отчет по принципу Text1.Text = StrX1 & StrX2 & StrX3... . Получается все до-кучи, неудобно читать. Существуют ли конструкции, которыми я могу установить StrX1 на 1-ю строку, StrX2 на вторую строку и так далее?
2) В книжках описаны операции с текстовыми файлами. Отчет можно создать в текстовом файле а там и переносить по строкам. А можно ли используя все те же самые приемы, менять .txt на .doc и пользоваться таким образом MS Word?

moshkin
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 108
Зарегистрирован: 03.12.2002 (Вт) 15:01
Откуда: Russia

Сообщение moshkin » 17.08.2005 (Ср) 8:54

если я правильно понял то:
1. а так не поможет Text1.Text = StrX1 & Chr(13) & StrX2 & Chr(13) & StrX3 ?
То есть вставить символ или конца строки или перевода каретки.
2. Не совсем понял для чего отчет? Если это лог, то вроде как лучше его в TXT и хранить (ИМХО). А если надо именно в Word, то там же формат файла совсем другой. Это уже надо как-то по другому делать.

MeMBus
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 450
Зарегистрирован: 23.02.2005 (Ср) 7:03
Откуда: Из леса...

Сообщение MeMBus » 17.08.2005 (Ср) 8:54

1) Ставь vbCrLf...
Text1.Text = StrX1 & vbCrLf & StrX2 & vbCrLf & StrX3 & vbCrLf
Бороться и искать, найти и перепрятать!

alleonid
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 122
Зарегистрирован: 14.07.2005 (Чт) 7:01

Сообщение alleonid » 17.08.2005 (Ср) 9:31

1) vbCrLf работает (см ниже)
Большой сенкс.
А почему Chr(13) не работат?
2) Ну я, типа того, понимаю, что форматы txt и doc разные. Но текстовый документ тем не менее при изменении его расширения на doc открывается вордом.
Вложения
aaa.rar
приложение
(1.18 Кб) Скачиваний: 28

moshkin
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 108
Зарегистрирован: 03.12.2002 (Вт) 15:01
Откуда: Russia

Сообщение moshkin » 17.08.2005 (Ср) 10:28

Тогда я не понял что именно надо от Word-а? Тебе надо чтобы текстовый по сути файл открыывался в ворде? Так он открывается. Или тебе надо чтобы еще там и оформление было красивое? Ну там шрифты, выравнивание, таблицы?
Для чего все это?

alleonid
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 122
Зарегистрирован: 14.07.2005 (Чт) 7:01

Re: Формирование отчета

Сообщение alleonid » 18.08.2005 (Чт) 4:19

Да, кстати, еще вопрос: вот формирую я отчет таким образом, как описано ниже. с переносом на строки. У меня переменные StrX1, StrX2, StrX3 могут иметь 2 значения - "" и "поясняющий текст для переменных" (коэффициентов сметы). Если встретится "" то строчка будет пустой. Вопрос - какую конструкцию проще использовать, чтобы пустых строчек в TextBox не было?



alleonid писал(а):Имею вопросы.
1) Элемент TextBox может быть многострочным и иметь полосу прокрутки, если текст не умещается в поле. Имеются строковые переменные: StrX1, StrX2, StrX3 и т.д. Формирую отчет по принципу Text1.Text = StrX1 & StrX2 & StrX3... . Получается все до-кучи, неудобно читать. Существуют ли конструкции, которыми я могу установить StrX1 на 1-ю строку, StrX2 на вторую строку и так далее?

Алексей К.
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 419
Зарегистрирован: 12.05.2004 (Ср) 9:41
Откуда: Ульяновск

Сообщение Алексей К. » 18.08.2005 (Чт) 6:30

Проверяй переменные и заполняй text1, Типа:
if StrX1="" then text1.text=StrX2&vbcrlf&StrX3 и т.д.
А если переменных у тебя много, то забей их в массив, а text1 заполняй в цикле:
For i=1 to ubound(StrX)
if StrX(i)<>"" then text1.text=text1.text&StrX(i)&vbcrlf
next i

alleonid
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 122
Зарегистрирован: 14.07.2005 (Чт) 7:01

Сообщение alleonid » 18.08.2005 (Чт) 9:20

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


Алексей К. писал(а):Проверяй переменные и заполняй text1, Типа:
if StrX1="" then text1.text=StrX2&vbcrlf&StrX3 и т.д.
А если переменных у тебя много, то забей их в массив, а text1 заполняй в цикле:
For i=1 to ubound(StrX)
if StrX(i)<>"" then text1.text=text1.text&StrX(i)&vbcrlf
next i

moshkin
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 108
Зарегистрирован: 03.12.2002 (Вт) 15:01
Откуда: Russia

Сообщение moshkin » 18.08.2005 (Чт) 10:17

Ну вот посмотрел я твой пример. Я так понимаю, что ты прямо в коде описываешь эти строки. Но ведь они меняются, наверное, когда-нибудь.
Я пока не могу представить зачем это и наверное поэтому не понимаю что ты делаешь.
Мне кажется, что надо было бы хранить эти строки в отдельном текстовом файле. Пусть даже и с пустыми строками. А когда ты заполняешь тот же TextBox, то читай подряд все строки из файла, каждая строка в файле это одна твоя строка. Если же прочитанная строка пустая, или пробел, то ты ее не добавляешь. Останется только ручками или программно рулить содержимое текстового файла.
А лучше напиши подробнее что именно надо делать, в каком виде даются данные коэффициентов сметы. Они же откуда-то берутся?

alleonid
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 122
Зарегистрирован: 14.07.2005 (Чт) 7:01

Сообщение alleonid » 18.08.2005 (Чт) 10:27

Простенькая программка для составления сметы .
Есть штук 40 переменных.
Каждая переменная - публичная в 2х вариантах - даубловая и стринговая.
Например даубловая - K=1.2, а соотвествующая StrK = "Поправка на пьяный глаз К=" & K & ";".
Открывается форма, галочки там всякие, и так далее.
Пользователь определяет все переменные и нажимает кнопку отчет.
Ну и так далее - см. выше.

moshkin писал(а):А лучше напиши подробнее что именно надо делать, в каком виде даются данные коэффициентов сметы. Они же откуда-то берутся?

moshkin
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 108
Зарегистрирован: 03.12.2002 (Вт) 15:01
Откуда: Russia

Сообщение moshkin » 18.08.2005 (Чт) 10:38

загоняешь это все в текстовый файл к примеру первая строка это число, вторая это описание. Или, наверное лучше, в одной строке через разделитель любой какой нравится, число и описание:
3,1415926:число Пи
2,71: число е

20000:столько хочу получать зарплаты

Вот в такой файл все загоняешь. А потом его читаешь, если пустая строка то ее читаешь то не вставляешь куда там тебе надо.
А делить строку можно по любому: или найти позицию разделителя instr(1,stroka,":") или можно с помощью split (поищи тоже есть на форуме)
а хранить все данные в коде, вроде и не красиво.

alleonid
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 122
Зарегистрирован: 14.07.2005 (Чт) 7:01

Сообщение alleonid » 18.08.2005 (Чт) 11:46

Сэнкс, учту когда-нибудь.
Но в данном случае я уже захреначил их в код,
В принципе и так не плохо. If ...Then - no problem!


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 39

    TopList