Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
begemot
1

Как отправить в Printer MSFlexGrid, без PrintForm?

12.08.2007, 18:31. Показов 1782. Ответов 15
Метки нет (Все метки)

Как отправить в Printer MSFlexGrid, без PrintForm?
т.е. я хочу подготовить отчёт для печати, состоящий из таблицы...

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.08.2007, 18:31
Ответы с готовыми решениями:

Можно ли распечатать содержимое некоторых полей из формы без использования свойства Printer.EndDoc ?
Здравствуйте !!! Ворос. Можно ли распечатать содержимое некоторых полей из формы: ...

Как отправить почту на мыло без winsock' а?
Товарисчи нужно позарез! плз каму не лень напишите исходник или дайте ссылку на такое чудо......

Как отправить все чекбоксыы без обновления страницы и без нажатия кнопки?
Нужно обновлять данные без перезагрузки и без нажатия кнопки на странице, пишу так: <form...

Как добавить PrintForm в ToolBox?
У меня в Visual Studio -> Visual Basic нету элемента printform в toolbox'e. Как его найти и...

15
0 / 0 / 3
Регистрация: 27.03.2012
Сообщений: 2
12.08.2007, 19:28 2
Примерно так:

for y=1 to кол-во_строк
s=''
for x=1 to кол-во_столбцов
s=s & значение_ячейки
next x
Printer.Print s
next y
0
begemot
12.08.2007, 19:44 3
Это понятно, а если надо ТАБЛИЦУ?
с цветом ячеек? и т.п.
0 / 0 / 0
Регистрация: 03.08.2007
Сообщений: 61
12.08.2007, 21:25 4
А для этого мы, обычно, используем генератор отчетов.
0
begemot
12.08.2007, 21:51 5
я знаю, что вы его используете, а без него не как?????
как скопировать эл-т управл. с одной формы на другую?
0 / 0 / 0
Регистрация: 03.08.2007
Сообщений: 61
13.08.2007, 09:38 6
На 'красоте' отчетных данных лучше не экономить - двойная работа.
0
0 / 0 / 3
Регистрация: 27.03.2012
Сообщений: 2
13.08.2007, 13:02 7
Можешь попробовать создать отчет в MS Access и затем его печатать... Пример печати есть здесь:
http://www.relib.com/code.asp?id=84
0
0 / 0 / 0
Регистрация: 25.07.2007
Сообщений: 46
13.08.2007, 13:29 8
Можно импортировать данные рекордсета в Excel и печатать там что угодно и как угодно цвет задавать. Только Эксель нужен 8 не ниже.
Вот процедура, она урезана и может не работает, но смысл из нее стагновится понятен.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
Sub Rpt()
  Dim i, j As Integer
  Dim Temp As Variant
  Dim Template As String
  Dim xlApp As Excel.Application
  Dim xlBook As Excel.Workbook
  Dim xlSheet As Excel.Worksheet
  Dim Hatter As Integer
  Dim Ranger As String
  Dim YearDetect As String
 
  On Error GoTo NoDeal
    sql1 = 'текст запроса'
    Set rst2 = New ADODB.Recordset
    rst2.Open sql1, db, adOpenStatic, adLockOptimistic
 
If Not rst2.EOF Then
  rst2.MoveLast
  rst2.MoveFirst
  
  Const Hat = 6
  
  On Error GoTo ImportError
  Set xlApp = CreateObject('Excel.Application')
  Set xlBook = xlApp.Workbooks.Add
  Set xlSheet = xlBook.Worksheets(1)
  On Error GoTo SheetError
  Hatter = rst2.RecordCount + Hat '-----------кол-во полей
  
'---------------- Excel Macros parth -----------начало форматирования листа
'----индивидуально для каждого отчета, записываем макрос и получаем код делается легко
    With xlSheet.Range('A4:i4').Font
      .Name = 'Arial Cyr'
      .Size = 10
      .Strikethrough = False
      .Superscript = False
      .Subscript = False
      .OutlineFont = False
      .Shadow = False
      .Underline = xlUnderlineStyleNone
      .ColorIndex = xlAutomatic
    End With
  xlSheet.Range('A' & Hat & ':A' & Hatter).ColumnWidth = 3
  xlSheet.Range('B' & Hat & ':B' & Hatter).ColumnWidth = 37
  xlSheet.Range('C' & Hat & ':C' & Hatter).ColumnWidth = 10
  xlSheet.Range('D' & Hat & ':D' & Hatter).ColumnWidth = 20
  xlSheet.Range('E' & Hat & ':E' & Hatter).ColumnWidth = 7
  xlSheet.Range('F' & Hat & ':F' & Hatter).ColumnWidth = 15
  xlSheet.Range('G' & Hat & ':G' & Hatter).ColumnWidth = 20
  xlSheet.Range('H' & Hat & ':H' & Hatter).ColumnWidth = 7
  xlSheet.Range('i' & Hat & ':i' & Hatter).ColumnWidth = 15
  For i = 1 To 9
    xlSheet.Cells(Hat - 1, i).Value = i
    xlSheet.Cells(Hat - 1, i).HorizontalAlignment = xlCenter
  Next i
  With xlSheet.Rows('1:' & Hatter)
    .RowHeight = 25.5
  End With
 '---------------End of Excel Macros Parth
'------------------------конец форматирования
' вывод данных
  Temp = 0
  i = Hat
 Do While Not rst2.EOF
    xlSheet.Cells(i, 1).HorizontalAlignment = xlCenter
    xlSheet.Cells(i, 1).FormulaR1C1 = IIf(IsNull(rst2.Fields('NumOfDem')), '', rst2.Fields('NumOfDem'))
    '''''''''
    '''''''''
    '''''''''
    i = i + 1
    rst2.MoveNext
 Loop
 
   xlApp.Application.Visible = True
 
' Закрывает Excel, вызвав метод Quit объекта Application.
  xlApp.Application.Quit
' Освобождает объектную переменную.
Deinitial:
  Set xlSheet = Nothing
  Set xlBook = Nothing
  Set xlApp = Nothing
  
  GoTo ExitLabel
 
ImportError:
  MsgBox ('Ошибка связи с объектом.' & Chr(13) & 'Возможно Microsoft Excel не установлен')
   Exit Sub
SheetError:
  MsgBox ('Ошибка Экспорта')
  GoTo Deinitial
  Exit Sub
NoDeal:
  MsgBox ('Выбирйте как следует!')
  GoTo Deinitial
  Exit Sub
  
ExitLabel:
  Exit Sub
Else
  MsgBox ('Нет данных')
End If
 
End Sub
0
begemot
13.08.2007, 15:41 9
Это всё понятно и круто...но
вот такая реализация слегка возмущает:
set exc=createobject('Excel.Application')
'-сдесь всё нормально, связь с EXCEL устанавливвается.
exc.visible=true
' а дальше почему-то???? что не делай с ОБЪЕКТОМ он не реагирует(всякие там сообщения об ошибках) EXCEL нормальный с ОФИСА97. Почему так бывает?

а и ещё, как всё-таки сделать следующее:
есть форма frm1 на ней ListBox lstbox1
есть вторая форма frm1 на ней надо воссоздать lstbox1, но при этом его там ЗАРАНЕЕ не должно быть?
я имею ввиду что-нибудь вида:
set lstbox2=new ....

есть такая возможность?
begemot
13.08.2007, 17:32 10
Set exc = CreateObject('Excel.Application')
Set ab = exc.ActiveWorkbook
ab.Range('A2') = 'a'

не работает почему?
0 / 0 / 0
Регистрация: 07.08.2007
Сообщений: 78
13.08.2007, 18:33 11
А попробую Gridlines=0 и печатай
0
begemot
13.08.2007, 19:34 12
что значит печатай?
PrintForm мне не пригодно
Printer.Print frm.msflexgrid или
Printer.Print msflexgrid
не работает!
КАК?!
0 / 0 / 0
Регистрация: 25.07.2007
Сообщений: 46
14.08.2007, 09:54 13
Сорри, строка
xlApp.Application.Quit
необходима если вы не показываете excel
xlApp.Application.Visible = false
А перед этим записываете все в файл
xlSheet.SaveAs App.Path & filename
если вы показываете excel
xlApp.Application.Visible = true
А дальше, запускается excel и вы видите файл с табличками, там уж печатаейте как хотите.
0
begemot
15.08.2007, 18:26 14
За Excel пасибо, а вот можно ли создать файл 'так' просто
Open name$ for Output as #1
print #1,value
close(1)
, а потом чтобы name$ Excel принял как 'родного' т.е. формат рассмотрел как табличный документ, есть такая возможность?

1.PrintForm печатает только в вертикальном положении. А если нужно, чтобы было в горизонтальном(landscape)? как заставить?
2.ещё как сделать:
Printer.Print frm.flexgrid
????
0 / 0 / 0
Регистрация: 25.07.2007
Сообщений: 46
16.08.2007, 09:41 15
бегемот, я для этого и пошел Excel бомбить, что не захотел геморроится со стандартными средствами печати и создания отчетов. А CrystalReport у меня не было тогда.
На счет создания 'так просто' могу сказать следующее: можешь сделать текстовый файл с разделителями (1222;23423;43434;4423, сохранить и загнать в Excel, он такие файлы понимает.
делаешь - открыть, тип файла - текстовый, а дальше диалог идет. Можешь в это время макрос записывать. Будет примерно следующее
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Sub Макрос1()
'
' Макрос1 Макрос
' Макрос записан 08.06.01
 
    Workbooks.OpenText FileName:='D:Temp_Dol', Origin:=xlWindows, StartRow _
        :=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
        ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=True, Comma:=False, _
        Space:=False, Other:=False, FieldInfo:=Array(Array(1, 2), Array(2, 2), Array( _
        3, 2), Array(4, 2), Array(5, 2), Array(6, 2), Array(7, 2), Array(8, 2), Array(9, 2), Array(10 _
        , 2))
End Sub
Надеюсь я все правильно понял в твоем вопросе.
0
0 / 0 / 0
Регистрация: 26.02.2007
Сообщений: 3
22.08.2007, 03:53 16
Можно воспользоваться свойством Picture этой самой MSHFlexGrid.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.08.2007, 03:53

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Как без перезагрузки страницы отправить письмо
<form name="form-application" id="contact-form" role="form" action="php/mail.php"...

Как отправить get-запрос на эту же страницу без перезагрузки?
Имеется сайт, на нем есть фильтрующие кнопки, при нажатии на которые контент страницы должен...

Как отправить переменную с js на php без перезагрузки страницы?
есть переменная a её нужно отравить в php код как это можно реализовать? <!DOCTYPE html>...

СРОЧНО! Как отправить файл на FTP без сохранения на ПК?
Здравствуйте! Мне нужно создать текстовый документ: echo "бла бла бла">1.txt Но я хочу, чтобы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.