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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Генерация отчета 
:(
    Опции темы
nicka
  Дата 30.7.2003, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А еще хочу спросить вас следующее:
Вот делаю я отчет, в котором данные из таблицы идут, в которой все нули или минус единицы стоят
(0/ -1), значит и в отчете они будут видны в натуральную величину. А вот я хочу вместо них видеть скажем либо пробел, либо галочку.
Что прикажете делать?

PM MAIL   Вверх
GriKo
Дата 30.7.2003, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 7.6.2003
Где: Израиль

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



Сделай цикл, "ФОР" скажем, и в нём "ЕСЛЕ". И вот "есле" прочитанный символ = 0, тогда чтобы он заменялся пробел, а "подругому" - чтобы заменялся на V.
PM MAIL ICQ   Вверх
-Mikle-
Дата 30.7.2003, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

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



Например lFld - это значение 0 или -1, а в переменную sRes надо записать " " или "V":
Код
sRes = IIf(lFld=0," ","V")


но в варианте предложенном GriKo, можно например в нужном месте нарисовать голчку:
If sFld=0 then
pic.PaintPicture(picSrc.picture,0,0)
else
pic.PaintPicture(picSrc1.picture,0,0)
end if
так что он более шире по возможностям...


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
nicka
Дата 31.7.2003, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Bсе это понятно, только ведь проблема в другом!

Ведь данное действие надо писать в методе Current формы , а у рапорта такового не имееться!
Если я такое напишу в методе Open, допустим, то этот код подействует лишь на первую запись, а все остальные записи отобразит как первую!

Что скажете, господа! Или я не права?!


PM MAIL   Вверх
Plamenk
Дата 31.7.2003, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



У Access есть встроенные функция, точно не помню как называется нет под рукой Access, что-то типа if((выражение), (правда), (ложь)). Смысл этой функции по-моему очевиден.
Так что в качестве значения поля можно использовать следующее выражение
Код
=if((value = -1)," ", "V")

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


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



Где и как ты делаешь свой отчет? Я вообще по вопросу ничего не понимаю, что и куда ты хочешь записать анализировав свою таблицу.


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
nicka
Дата 1.8.2003, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Повторяю еще раз
Все очень просто:
ПРостая таблица с полем, значениями которого могут быть либо 1, либо 0.
На основе этой таблицы делаю отчет, следовательно в отчете вижу либо 1, либ 0.
А я хочу видеть в отчете вместо 1 - галочку, а вместо 0 - пустое место, Ясно?

Товарищи предлагают различные варианты с оператором If(IFF), я и сама могла бы догададаться до этого, однако проблема в другом. Как я уже объяснила данный код надо присабачить к какому-то событию. Если бы это была форма я бы этот код написала в событии Current формы, и тогда проблем не будет, но ведь в данном случае дело происходит в отчете, где такого свойства нет, а есть только Open.
Если же я этот код поставлю в данном свойстве, то он проверит лишь первую запись и подействует на все остальные как на первую!
Понятно?
Короче попробуй, сам увидишь...

PM MAIL   Вверх
cardinal
Дата 1.8.2003, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



Цитата
Вот делаю я отчет, в котором данные из таблицы идут...


Ладно поясняю, что в этом вопросе неоднозначно. Что такое отчет? Да хрен его знает, что это. Ты пишешь в раздел VB, так причем здесь Access. Чтобы ты знала в VB можно тоже делать отчеты. Вот тебе примеры:

1. Отчеты можно формировать с помощью конструктора DataReport, который является новинкой в VB 6.0.
2. Их можно также формировать в Microsoft Access, а потом использовать в VB приложениях.
3. Отчеты можно создавать с использованием пакета VSREPORTS фирмы VideoSoft, позволяющего пользователям приложения создавать отчеты Microsoft Access независимо от того, установлена ли на их компьютере сама программа Microsoft Access.
4. Отчеты можно создавать с использованием пакета VSVIEW фирмы VideoSoft
5. Отчеты можно создавать с помощью программы Crystal Reports.
6. Отчеты можно "делать" (как ты говоришь) в виде HTML-документа.
7. Отчет можно создавать при помощи библиотеки Microsoft Scripting Runtime Library, которая облегчает экспорт данных в файлы в ясной объектно-ориентированной манере.
8. Ты можешь вообще "делать" отчеты с использованием объекта VB Printer.

Ну так почему же нельзя сказать как ты делаешь отчет? На мой вопрос "как?" ты отвечаешь:

Цитата
На основе этой таблицы делаю отчет...


Почему только товарищ Plamenk упоминает вообще слово Access, а не ты?
Я могу догадываться, что ты делаешь отчет в MS Access, только по тому факту, что ты Plamenk не сказала:
"Причем тут Access?".

Короче ладно х%р с ним. Для чего я это все в который раз пишу? А для того, чтобы посетители форума поконкретнее вопросы ставили - тогда и ответы поконкретней будут.

Ладно, попробуй вот это. Если я правильно до всего догадался, то это решение твоей проблемы. Я не поленился сделал базу данных, отчет и все протестировал. Соответственно если - это не то, что ты хотела, то значит думай в следующий раз как поставить вопрос так, чтобы ответ на него мог бы быть только один!

Код
=Switch([Field]="1";"V";[Field]="0";"")


Все, что я написал - это не наезд, а просто очередная попытка призвать людей к порядку smile.gif. А если кто-то считает это наездом, то тогда это просто ответ на наезды типа:
Цитата
Понятно?
...
Цитата
Ясно?

Прямо впечатление создалось, что там сначало было написано "Понятно, козел? Что пишешь тут, если тебе ничего непонятно..." smile.gif


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
nicka
Дата 4.8.2003, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата
=Switch([Field]="1";"V";[Field]="0";"")


Насчет данного кода,
у меня в отчете в методе Open стоит следующий код:

Private Sub Report_Open(Cancel As Integer)
Dim strsql As String

DoCmd.Maximize

strsql = "SELECT check FROM table1 "

Me.RecordSource = strsql

End Sub

Теперь я ставлю данный код в эту же процедуру( в конце):
Me.check.Value = Switch(Me.check .Value = "1", "V", Me.check .Value = "0", "")

При запуске отчета выдаеться такая ошибка:
You entered an expression that has no value
при том что в отчете стоит елемент check у которого свойство Control Source присвоено значение check .
Не знаю может значение еще не успело присвоится на данном этапе загрузки формы?
И вообще этот код (Me.check .Value = Switch(Me.check .Value = "1", "V", Me.check .Value = "0", "")) надо писать в данном методе формы или еще где?

PM MAIL   Вверх
Unregistered
Дата 4.8.2003, 17:42 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Указаный мною код

Код
=if((value = -1)," ", "V")


надо писать не в событие OPEN, а присваивать его как значение поля.

По-моему, и cardinal имел ввиду тоже самое.
  Вверх
Plamenk
Дата 4.8.2003, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Данное сообщение было написано мною.
PM MAIL   Вверх
cardinal
Дата 4.8.2003, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



это я и имел ввиду...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
nicka
Дата 5.8.2003, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код
[QUOTE]=Switch([Field]="1";"V";[Field]="0";"")[/QUOTE]


Ладно, я ставлю этот код (вместо Field ставлю название поля берущегося из запроса к таблице(check)) в свойство Control Source textbox-а на форме - к сожалению вообще ничего не показывает, или это не значит -
Цитата
надо писать не в событие OPEN, а присваивать его как значение поля.
??
PM MAIL   Вверх
nicka
Дата 5.8.2003, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код
[QUOTE]=if((value = -1)," ", "V")[/QUOTE]


Когда пишу это, вообще при выходе из поля выдает ошибку The expression you entered contains envalid sintax...

Код
[QUOTE]=iif((value = -1)," ", "V")[/QUOTE]
и так пробовала все равно не правильно

А если так пишу :
Код
= IIf(me.jan ="-1", "V", "*")
то при запуске отчета пишет "Cannot find the field = IIf(me.check="-1", "V", "*")"
PM MAIL   Вверх
cardinal
Дата 5.8.2003, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



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


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
nicka
Дата 6.8.2003, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



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


Ну так не работает же!
PM MAIL   Вверх
cardinal
Дата 6.8.2003, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



ты указала (где не могу сказать, так как Access нет под рукой) с какой таблицeй твое поле работает? я забыл тебе это написать...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
nicka
Дата 6.8.2003, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата
ты указала (где не могу сказать, так как Access нет под рукой) с какой таблицeй твое поле работает? я забыл тебе это написать...


Да в отчете стоит такой код:

Код
Private Sub Report_Open(Cancel As Integer)
Dim strsql As String

strsql = "SELECT check FROM table1 "

Me.RecordSource = strsql

End Sub


Вот , а в отчете стоит TextBox с именем check и с значеним check в свойстве Control Source.
(Так как раз тут я и пишу твой код теперь)
PM MAIL   Вверх
cardinal
Дата 6.8.2003, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



ладно, подожди до четверга (или пятницы), я посмотрю в MS Access, где я прописывал название таблицы


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
cardinal
Дата 8.8.2003, 02:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



Вообщем еще раз по порядку:
1. Открываем Access.
2. Создаем новый отчет при помощи конструктора (Вставка -> Отчет -> Конструктор).
3. Наводим стрелку мыши на темно серый фон (справа снизу например, короче там где не верхний колонтитул и не область данных (и вся эта фигня), а просто темно серый background) и и после нажатия правой кнопки мыши на нем нажимаем на слово "Свойства" в открывшемся окне "Отчет".
4. Там стираем все, что написано в разделе "Данные" в поле "Источник записей" и потом выбираем таблицу, где сидят твои нули или единички и потом выбираем в открывшемся окне то поле, в котором они сидят. Закрываем окно "Отчет".
5. В область данных суем "поле" (не надпись!) и в его свойствах прописываем в поле "Данные" мой код.
6. Закрываем окно конструктора записав все, что мы сделали.
7. Double Click по отчету теперь откроет тебе окно, в котором будут единицы и нолики заменены на тебе нужные значки.

Надеюсь в этот раз проблем не будет, а то уже тема красная, а она не стоит того...

p.s. На будущее могу посоветовать поставить MSDN для того, чтобы можно было там почитать полезные вещи на тему VB (и VBA так как они похожи). А вообще книжек надо как можно больше. В справке Microsoft Access, помоему, врятли можно что-то найти дельное, когда не знаешь что искать (как в этом случае), а вот в книге одной умной, Microsoft Access for Windows 95 (Microsoft Press, John Viescas) например, я все быстро нашел. А уже потом можно и в справке найти эту функцию, вот что там написано:

Switch Function Example
The following example uses the Switch function to determine the appropriate language for a specified city based on the values of the ShipCountry and ShipCity fields in an Orders table. You can enter the following expression in a calculated control on a form or report. The expression is shown on multiple lines for clarity; you can also enter it on a single line.

= Switch([ShipCity] = "Madrid", "Spanish", _
[ShipCity] = "Berlin", "German", _
[ShipCity] = "Torino", "Italian", _
[ShipCountry] = "France", "French", _
True, "English")
If the city is Madrid, the Switch function returns "Spanish"; if it is Berlin, it returns "German"; and so on. If the city is not one of those listed, but the country is France, it returns "French". If the city in question is not in the list, the Switch function returns "English".

Во так все просто.

Успехов!



--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Alles
Дата 8.8.2003, 03:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Да ... развели вы тут полемику !!!
Мне кажется лучше ее объяснить так !
Сделай транзитную форму на основе своей таблицы , и втыкай туды цикл при открытии на обработку условия этого поля. Цикл отработал - форма закрылась - таблица готова - открываем отчет !


Private Sub Form_Load()
DoCmd.GoToRecord , , acFirst
ross:

If IsNull(Индексоное поле) Then Goto Rep
Поле1 = IIf(Поле1 = 0, " ", "V")
DoCmd.GoToRecord , , acNext
GoTo ross

Rep:
DoCmd.OpenReport "Имя отчета", acPreview
DoCmd.Close
End Sub

По временя открытия конечно подольше , но .......тогда не надо искать что и куда прописывать в отчете smile.gif))

PM MAIL ICQ   Вверх
Alles
Дата 8.8.2003, 04:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А... то что таблица тоже транзитная наверно говорить не нужно !!??

100 км. для бешенной собаки не крюк ! smile.gif))
PM MAIL ICQ   Вверх
sergeeff
Дата 8.8.2003, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Тут полемики нет никакой. Просто автор вопроса хочет, чтобы ей готовое на блюдечке с голубой каемочкой принесли, разжевали и в рот положили. Посмотрите сколько она вопрсов никадала в форум? Может мы все вместо нее и работать на ее фирме будем?
PM MAIL   Вверх
Alles
Дата 11.8.2003, 02:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Точно !!! smile.gif Автор берешь нас на полставки ? мы тебе в каждое поле будем усе прописывать smile.gif))
PM MAIL ICQ   Вверх
nicka
Дата 20.8.2003, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



sergeeff

Знаешь что, если тебя что не устраивает, то я тебя в свою тему читать не заставляю
Alles- и тебя тоже
PM MAIL   Вверх
Alles
Дата 28.8.2003, 02:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Какие мы обидчивые !!! Прежде всего надо сказать спасибо , что тебе все разжували и в рот положили , а потом возмущайся сколько угодно !!!
PM MAIL ICQ   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

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

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

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

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


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

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


 




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


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

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