frmExportaConsumos.frm
8.73 KB
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
VERSION 5.00
Begin VB.Form frmExportaConsumos
Caption = "Exportação de Consumidores com Consumos"
ClientHeight = 1950
ClientLeft = 60
ClientTop = 345
ClientWidth = 2730
LinkTopic = "Form2"
ScaleHeight = 1950
ScaleWidth = 2730
StartUpPosition = 3 'Windows Default
Begin VB.Timer Timer1
Left = 2280
Top = 1320
End
Begin VB.CommandButton Gerar
Caption = "Gerar Relatório"
Height = 375
Left = 600
TabIndex = 4
Top = 1320
Width = 1455
End
Begin VB.TextBox Ano
BeginProperty DataFormat
Type = 1
Format = "0"
HaveTrueFalseNull= 0
FirstDayOfWeek = 0
FirstWeekOfYear = 0
LCID = 1046
SubFormatType = 1
EndProperty
Height = 375
Left = 1080
TabIndex = 1
Text = "2013"
Top = 720
Width = 1215
End
Begin VB.ComboBox Mes
Height = 315
ItemData = "frmExportaConsumos.frx":0000
Left = 1080
List = "frmExportaConsumos.frx":0002
TabIndex = 0
Text = "1"
Top = 240
Width = 1215
End
Begin VB.Label LAno
Caption = "Ano"
Height = 375
Left = 360
TabIndex = 3
Top = 720
Width = 495
End
Begin VB.Label LMes
Caption = "Mês"
Height = 375
Left = 360
TabIndex = 2
Top = 240
Width = 495
End
End
Attribute VB_Name = "frmExportaConsumos"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
' Verifica se digitou corretamente o ano em que deseja o relatório de consumos
'
'
'
Private Sub Ano_LostFocus()
If IsNumeric(Me.Ano) = False Then
MsgBox ("O ano necessita ser um campo numérico")
End If
End Sub
Private Sub Form_Load()
Mes.AddItem "1"
Mes.AddItem "2"
Mes.AddItem "3"
Mes.AddItem "4"
Mes.AddItem "5"
Mes.AddItem "6"
Mes.AddItem "7"
Mes.AddItem "8"
Mes.AddItem "9"
Mes.AddItem "10"
Mes.AddItem "11"
Mes.AddItem "12"
varGlobais.pararExecucao = False 'indica que iniciará sem sem informar que deverá parar a execução
FrmMain.Timer1.Enabled = True 'habilita o timer
End Sub
Private Sub Form_Unload(Cancel As Integer)
FrmMain.Timer1.Enabled = False 'desahabilita o timer
End Sub
' Gera relatório
'
'
'
Private Sub Gerar_Click()
Dim CAMINHO, SQL As String
Dim rs As New ADODB.Recordset
Dim rs2 As New ADODB.Recordset
Dim rs3 As New ADODB.Recordset
Dim TB_GEOMETRIA As String
Dim mPROVEDOR As String
Dim mSERVIDOR As String
Dim mPORTA As String
Dim mBANCO As String
Dim mUSUARIO As String
Dim Senha As String
Dim decriptada As String
Dim conexao As New ADODB.connection
Dim strConn As String
Dim nStr As String
Dim count2 As Integer
Dim Mes As String
Dim Ano As String
Dim consumo As New CConsumo 'funções de conversão de l/s para m3/mês
Dim nomeArquivo As New CArquivo 'para o usuário selecionar onde será salvo o arquivo
CAMINHO = nomeArquivo.SelecionaDiretorio 'solicita ao usuário a seleção de um diretório
CAMINHO = CAMINHO + "\" + nomeArquivo.prefixo + "Exportação dos consumos nas ligações.txt" 'coloca um prefixo de data e hora em que o arquivo será gerado
Mes = frmExportaConsumos.Mes.Text
Ano = frmExportaConsumos.Ano.Text
If frmCanvas.TipoConexao = 4 Then
If count2 <> 10 Then
mSERVIDOR = ReadINI("CONEXAO", "SERVIDOR", App.path & "\CONTROLES\GEOSAN.ini")
mPORTA = ReadINI("CONEXAO", "PORTA", App.path & "\CONTROLES\GEOSAN.ini")
mBANCO = ReadINI("CONEXAO", "BANCO", App.path & "\CONTROLES\GEOSAN.ini")
mUSUARIO = ReadINI("CONEXAO", "USUARIO", App.path & "\CONTROLES\GEOSAN.ini")
Senha = ReadINI("CONEXAO", "SENHA", App.path & "\CONTROLES\GEOSAN.ini")
nStr = frmCanvas.FunDecripta(Senha)
decriptada = frmCanvas.Senha
strConn = "DRIVER={PostgreSQL Unicode}; DATABASE=" + mBANCO + "; SERVER=" + mSERVIDOR + "; PORT=" + mPORTA + "; UID=" + mUSUARIO + "; PWD=" + nStr + "; ByteaAsLongVarBinary=1;"
conexao.Open strConn
count2 = 10
End If
End If
If frmCanvas.TipoConexao <> 4 Then
SQL = "SELECT * FROM NXGS_V_LIG_COMERCIAL_CONSUMO N INNER JOIN RAMAIS_AGUA_LIGACAO R on R.NRO_LIGACAO / 10=N.NRO_LIGACAO_SEM_DV inner join NXGS_V_LIG_COMERCIAL F on R.NRO_LIGACAO / 10 = F.NRO_LIGACAO_SEM_DV WHERE N.ANO = " & Ano & " AND N.MES = " & Mes & " ORDER BY R.NRO_LIGACAO ASC"
rs.Open SQL, Conn, adOpenDynamic, adLockReadOnly
Else
'precisa atualizar esta querie para funcionar com o banco Postgres
SQL = "SELECT * FROM " + """" + "NXGS_V_LIG_COMERCIAL_CONSUMO" + """" + " N INNER JOIN " + """" + "RAMAIS_AGUA_LIGACAO" + """" + " R on CAST(R." + """" + "NRO_LIGACAO" + """" + " AS INTEGER)=N." + """" + "NRO_LIGACAO" + """" + "inner join " + """" + "NXGS_V_LIG_COMERCIAL" + """" + "F ON R." + """" + "NRO_LIGACAO" + """" + "=F." + """" + "NRO_LIGACAO" + """" + " ORDER BY R." + """" + "NRO_LIGACAO" + """" + " ASC"
rs.Open SQL, conexao, adOpenDynamic, adLockReadOnly
End If
frmExportaConsumos.Hide 'esconde a caixa de diálogo
If frmCanvas.TipoConexao <> 4 Then
Open CAMINHO For Output As #1
Print #1, "CONSUMIDOR;NRO_LIGACAO;CONSUMO MEDIDO (M3/MÊS);CONSUMO MÉDIO (M3/MES); CONSUMO MÉDIO (L/S);MES,ANO"
Do While Not rs.EOF = True
DoEvents 'para o VB poder escutar o timer e poder parar o processamento caso a tecla ESC tenha sido pressionada
If varGlobais.pararExecucao = True Then
varGlobais.pararExecucao = False
Screen.MousePointer = vbNormal
Close #1
rs.Close
Exit Sub
End If
FrmMain.sbStatusBar.Panels(2).Text = "Consumidor: " & rs!NRO_LIGACAO 'mostra na barra de status o consumidor que está sendo exportado
Print #1, rs!CONSUMIDOR & ";"; rs!NRO_LIGACAO & ";" & rs!consumo_medido & ";" & Round(consumo.lps2m3mes(rs!consumo_lps), 1) & ";" & Round(rs!consumo_lps, 5) & ";" & rs!Mes & ";" & rs!Ano
rs.MoveNext
Loop
Close #1
rs.Close
'MousePointer = vbDefault
Else
'precisa verificar esta implementação em Postgres
Open CAMINHO For Output As #1
Print #1, "CONSUMIDOR;NRO_LIGACAO;CONSUMO;COORDENADAS ESPACIAIS;MES,ANO"
Do While Not rs.EOF = True
Print #1, rs!CONSUMIDOR & ";"; rs!NRO_LIGACAO & ";" & rs!consumo_medido & ";" & rs3!spatial_data & ";" & rs!Mes & ";" & rs!Ano
rs.MoveNext
Loop
Close #1
rs.Close
End If
MsgBox "Arquivo exportado em " & CAMINHO & ".", vbInformation, "Exportação Concluída!"
Unload Me
Exit Sub
Trata_Erro:
If Err.Number = 0 Or Err.Number = 20 Then
Resume Next
Else
Close #1
rs.Close
ErroUsuario.Registra "frmExportaConsumidores", "Gerar_Click", CStr(Err.Number), CStr(Err.Description), True, glo.enviaEmails
End If
End Sub
' Configura um timer para caso o usuário selecione a tecla ESC ele pare a execução
'
' varGlobais.pararExecucao - contem a informação que deve ser configurada na rotina que deseja-se cancelar a execução. Lembrando-se de colocar um Doevents antes. Veja o exemplo abaixo
' o intervalo do timer está definido no MDIForm_Load
'
'DoEvents 'para o VB poder escutar o timer e poder parar o processamento caso a tecla ESC tenha sido pressionada
'If varGlobais.pararExecucao = True Then
' varGlobais.pararExecucao = False
' Screen.MousePointer = vbNormal
' Exit Sub
'End If
'
' O timer deve ser habilitado antes de entrar na rotina que requer cálculo intensivo. Veja o exemplo abaixo:
'FrmMain.Timer1.Enabled = True 'habilita o timer
'
Private Sub Timer1_Timer()
If GetAsyncKeyState(VK_ESCAPE) Then
MsgBox ("Comando cancelado.")
varGlobais.pararExecucao = True
End If
End Sub