frmAlteraConsumoPorPoligono.frm
13.4 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
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
VERSION 5.00
Begin VB.Form frmAlteraConsumoPorPoligono
BorderStyle = 3 'Fixed Dialog
Caption = "Alteração de Consumo por Polígono"
ClientHeight = 5370
ClientLeft = 45
ClientTop = 435
ClientWidth = 7980
LinkTopic = "Form1"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 5370
ScaleWidth = 7980
ShowInTaskbar = 0 'False
StartUpPosition = 2 'CenterScreen
Begin VB.CommandButton cmdAtribuir
Caption = "Atribuir"
Height = 405
Left = 6615
TabIndex = 7
Top = 4860
Width = 1170
End
Begin VB.CommandButton cmdCancelar
Caption = "Fechar"
Height = 405
Left = 5385
TabIndex = 6
Top = 4860
Width = 1170
End
Begin VB.Frame Frame1
Caption = "Ligações de água selecionadas pelo polígono"
Height = 4485
Left = 150
TabIndex = 0
Top = 210
Width = 7650
Begin VB.TextBox Text1
Appearance = 0 'Flat
BeginProperty Font
Name = "Lucida Console"
Size = 9
Charset = 0
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 300
Left = 180
Locked = -1 'True
TabIndex = 8
Text = " Tipo Quantidade Economias Consumo LPS Medido"
Top = 345
Width = 7275
End
Begin VB.Frame Frame7
Caption = "Consumo (médio/ligação)"
Height = 1035
Left = 180
TabIndex = 2
Top = 3240
Width = 2745
Begin VB.OptionButton optLitrosSegundo
Caption = "LPS"
Height = 285
Left = 150
TabIndex = 5
Top = 615
Width = 870
End
Begin VB.OptionButton optMetroCubico
Caption = "M³/Mês"
Height = 285
Left = 150
TabIndex = 4
Top = 285
Value = -1 'True
Width = 900
End
Begin VB.TextBox txtConsumo
Alignment = 1 'Right Justify
Height = 315
Left = 1290
TabIndex = 3
Text = "0.00"
ToolTipText = "Informe o consumo médio de uma ligação"
Top = 435
Width = 1215
End
End
Begin VB.ListBox lstTipos
Appearance = 0 'Flat
BeginProperty Font
Name = "Lucida Console"
Size = 9
Charset = 0
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 2340
ItemData = "frmAlteraConsumoPorPoligono.frx":0000
Left = 180
List = "frmAlteraConsumoPorPoligono.frx":0007
Style = 1 'Checkbox
TabIndex = 1
Top = 630
Width = 7275
End
End
End
Attribute VB_Name = "frmAlteraConsumoPorPoligono"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private Sub cmdAtribuir_Click()
On Error GoTo Trata_Erro
Dim i, j As Integer
Dim strCMD As String
Dim strTipo As String
Dim strHidro As String
Dim dblConsumo As Double
Dim strConsumo As String
Dim a As String
Dim b As String
Dim c As String
Dim d As String
Dim e As String
Dim f As String
Dim g As String
Dim h As String
Dim ii As String
Dim jj As String
Dim k As String
Dim l As String
'CAPTA QUAIS TIPOS SERÃO ALTERADOS
MousePointer = vbHourglass
For i = 0 To lstTipos.ListCount - 1
If lstTipos.Selected(i) = True Then
strTipo = ""
For j = 1 To Len(Me.lstTipos.list(i)) 'PROCURA O TIPO DA LIGAÇÃO
If IsNumeric(mid(Me.lstTipos.list(i), j, 1)) = False Then
strTipo = strTipo & mid(Me.lstTipos.list(i), j, 1)
Else
strTipo = Trim(strTipo)
Exit For
End If
Next
strHidro = ""
j = 0
Do While Not j = 3 'PROCURA O sim ou nao PARA HIDROMETRADO
j = j + 1
f = Len(Me.lstTipos.list(i)) - j + 1
If IsNumeric(mid(Me.lstTipos.list(i), f, 1)) = False Then
strHidro = mid(Me.lstTipos.list(i), f, 1) & strHidro
End If
Loop
If Trim(strTipo) = "" Then
MousePointer = vbDefault
MsgBox "Não foi possível identificar o tipo da ligação.", vbExclamation, ""
Exit Sub
End If
'CAPTURA O CONSUMO DIGITADO E CONVERTE SE NECESSÁRIO
If CDbl(Me.txtConsumo.Text) > 0 Then
If Me.optMetroCubico.value = True Then
'SE FOR METRO CUBICO, CONVERTE PARA LITROS POR SEGUNDO
dblConsumo = Replace(Me.txtConsumo.Text, ".", ",") * 0.00038580246
Else
dblConsumo = Replace(Me.txtConsumo.Text, ".", ",")
End If
Else
dblConsumo = 0
End If
strConsumo = Replace(dblConsumo, ",", ".") ' converte a virgula para ponto para comando SQL
If frmCanvas.TipoConexao = 1 Then
strCMD = "UPDATE RAMAIS_AGUA_LIGACAO SET CONSUMO_LPS = '" & strConsumo & "' WHERE OBJECT_ID_ IN (SELECT OBJECT_ID_ FROM POLIGONO_SELECAO WHERE USUARIO = '" & strUser & "' AND TIPO = 2) and TIPO = '" & strTipo & "' AND HIDROMETRADO = '" & strHidro & "'"
ElseIf frmCanvas.TipoConexao = 2 Then
strCMD = "UPDATE RAMAIS_AGUA_LIGACAO R SET CONSUMO_LPS = '" & strConsumo & "' WHERE EXISTS (SELECT 1 FROM POLIGONO_SELECAO P WHERE R.OBJECT_ID_ = P.OBJECT_ID_ AND P.USUARIO = '" & strUser & "' AND P.TIPO = 2) and TIPO = '" & strTipo & "' AND HIDROMETRADO = '" & strHidro & "'"
ElseIf frmCanvas.TipoConexao = 4 Then
a = "RAMAIS_AGUA_LIGACAO"
b = "CONSUMO_LPS"
c = "OBJECT_ID_"
d = "POLIGONO_SELECAO"
e = "TIPO"
f = "HIDROMETRADO"
strCMD = "UPDATE " + """" + a + """" + " SET " + """" + b + """" + " = '" & strConsumo & "' WHERE " + """" + c + """" + " IN (SELECT " + """" + c + """" + " FROM " + """" + d + """" + " WHERE " + """" + "USUARIO" + """" + " = '" & strUser & "' AND " + """" + e + """" + " = '2') and " + """" + e + """" + " = '" & strTipo & "' AND " + """" + f + """" + " = '" & strHidro & "'"
End If
Conn.execute (strCMD)
End If
Next
CarregaList
MousePointer = vbDefault
' 'FAZ UM SELECT CONTANDO QUANTAS LIGAÇÕES SERÃO AFETADAS PELO COMANDO
' Dim rs As New ADODB.Recordset
'
' strCMD = "SELECT COUNT(NRO_LIGACAO) AS QTD FROM RAMAIS_AGUA_LIGACAO WHERE OBJECT_ID_ IN ("
' strCMD = strCMD & "SELECT OBJECT_ID_ FROM RAMAIS_AGUA WHERE OBJECT_ID_ IN (SELECT OBJECT_ID_ FROM POLIGONO_SELECAO WHERE USUARIO = '" & strUser & "' AND TIPO = 2)"
' strCMD = strCMD & ") AND TIPO IN (" & strTP & ")"
'
'
'
' If rs.EOF = False Then
' If CLng(rs!qtd) > 0 Then
'
' If MsgBox("De acordo com a seleção, serão alteradas " & rs!qtd & " ligações." & Chr(13) & Chr(13) & "Deseja continuar?", vbDefaultButton2 + vbQuestion + vbYesNo, "") = vbYes Then
'
' 'PREPARA O COMANDO SQL
' strCMD = "UPDATE RAMAIS_AGUA_LIGACAO SET CONSUMO_LPS = " & strConsumo & " WHERE OBJECT_ID_ IN ("
' strCMD = strCMD & "SELECT OBJECT_ID_ FROM RAMAIS_AGUA WHERE OBJECT_ID_ IN (SELECT OBJECT_ID_ FROM POLIGONO_SELECAO WHERE USUARIO = '" & strUser & "' AND TIPO = 2)"
' strCMD = strCMD & ") AND TIPO IN (" & strTP & ")"
'
' MousePointer = vbHourglass
'
' 'EXECUTA A ATUALIZAÇÃO
' Conn.execute (strCMD)
'
' MousePointer = vbDefault
' MsgBox "Atualização concluída!", vbInformation, ""
' End If
'
' Else
' MsgBox "Nenhuma ligação do Tipo selecionado foi encontrada na selecão.", vbInformation, ""
' End If
' Me.cmdCancelar.Caption = "Fechar"
' End If
' rs.Close
Trata_Erro:
If Err.Number = 0 Or Err.Number = 20 Then
Resume Next
ElseIf Err.Number = 13 Then
MsgBox "Insira somente números para valores de consumo.", vbExclamation, ""
Err.Clear
Else
MsgBox Err.Number & " " & Err.Description
Err.Clear
End If
MousePointer = vbDefault
End Sub
Private Sub cmdCancelar_Click()
Unload Me
End Sub
Private Sub Form_Load()
CarregaList
End Sub
Private Function CarregaList() As Boolean
On Error GoTo Trata_Erro
Dim rs As New ADODB.Recordset
Dim str As String
Dim strTipo As String
Dim strQTD As String
Dim strEcon As String
Dim strCons As String
Dim strHidro As String
Dim a As String
Dim b As String
Dim c As String
Dim d As String
Dim e As String
Dim f As String
Dim g As String
Dim h As String
Dim ii As String
Dim jj As String
Dim k As String
Dim l As String
a = "TIPO"
b = "ECONOMIAS"
c = "CONSUMO_LPS"
d = "HIDROMETRADO"
e = "RAMAIS_AGUA_LIGACAO"
f = "OBJECT_ID_"
g = "POLIGONO_SELECAO"
h = "USUARIO"
If frmCanvas.TipoConexao = 1 Then
str = "SELECT DISTINCT TIPO, COUNT(TIPO) AS QTD, SUM(ECONOMIAS) AS ECON, SUM(CONSUMO_LPS) AS CONSUMO,HIDROMETRADO AS HIDRO FROM RAMAIS_AGUA_LIGACAO WHERE OBJECT_ID_ IN (SELECT OBJECT_ID_ FROM POLIGONO_SELECAO WHERE USUARIO = '" & strUser & "' AND TIPO = 2) GROUP BY TIPO, HIDROMETRADO ORDER BY TIPO, HIDROMETRADO"
ElseIf frmCanvas.TipoConexao = 2 Then
str = "SELECT DISTINCT TIPO, COUNT(TIPO) AS " + """" + "QTD" + """" + ", SUM(ECONOMIAS) AS " + """" + "ECON" + """" + ", SUM(CONSUMO_LPS) AS " + """" + "CONSUMO" + """" + ",HIDROMETRADO AS " + """" + "HIDRO" + """" + " FROM RAMAIS_AGUA_LIGACAO RAL WHERE EXISTS (SELECT 1 FROM POLIGONO_SELECAO P WHERE RAL.OBJECT_ID_ = P.OBJECT_ID_ AND P.USUARIO = '" & strUser & "' AND P.TIPO = 2) GROUP BY TIPO, HIDROMETRADO ORDER BY TIPO, HIDROMETRADO"
Else
'SELECT DISTINCT "TIPO", COUNT("TIPO") AS QTD, SUM("ECONOMIAS") AS ECON, SUM("CONSUMO_LPS") AS CONSUMO,"HIDROMETRADO" AS HIDRO FROM "RAMAIS_AGUA_LIGACAO" WHERE EXISTS (SELECT 1 FROM "POLIGONO_SELECAO" WHERE "RAMAIS_AGUA_LIGACAO"."OBJECT_ID_" = "POLIGONO_SELECAO"."OBJECT_ID_" AND "POLIGONO_SELECAO"."USUARIO" = 'Administrador' AND "POLIGONO_SELECAO"."TIPO" = '2') GROUP BY "TIPO", "HIDROMETRADO" ORDER BY "TIPO", "HIDROMETRADO"
str = "SELECT DISTINCT " + """" + a + """" + ", COUNT(" + """" + a + """" + ") AS " + """" + "QTD" + """" + ", SUM(" + """" + b + """" + ") AS " + """" + "ECON" + """" + ", SUM(" + """" + c + """" + ") AS " + """" + "CONSUMO" + """" + "," + """" + d + """" + " AS " + """" + "HIDRO" + """" + " FROM " + """" + e + """" + " WHERE " + """" + f + """" + "IN (SELECT " + """" + f + """" + " FROM " + """" + g + """" + " WHERE " + """" + h + """" + " = '" & strUser & "' AND " + """" + a + """" + " = 2) GROUP BY " + """" + a + """" + ", " + """" + d + """" + " ORDER BY " + """" + a + """" + ", " + """" + d + """" + ""
'MsgBox str
'MsgBox "ARQUIVO DEBUG SALVO"
'WritePrivateProfileString "A", "A", str, App.path & "\DEBUG.INI"
End If
'O RESULTADO DO SELECT É ALGO COMO TIPO
'CORTADO 61 65 .11612643 nao
'CORTADO 132 143 .50921627 sim
'FICTÍCIA 3 3 .00000000 nao
'LIGADO 109 119 .24729915 nao
'LIGADO 1748 2171 8.50811021 sim
'LIGADO EM ANALISE 152 184 .49035469 nao
'LIGADO EM ANALISE 229 251 .54128078 sim
'SUPRIMIDO 6 6 .00810185 nao
Me.lstTipos.Clear
Set rs = New ADODB.Recordset
rs.Open str, Conn, adOpenDynamic, adLockOptimistic
If rs.EOF = False Then
Do While Not rs.EOF
If rs!tipo <> "" Then strTipo = rs!tipo Else strTipo = ""
If rs!qtd <> "" Then strQTD = rs!qtd Else strQTD = ""
If rs!econ <> "" Then strEcon = rs!econ Else strEcon = ""
If rs!CONSUMO <> "" Then strCons = rs!CONSUMO Else strCons = ""
If rs!hidro <> "" Then strHidro = rs!hidro Else strHidro = ""
'os campos são redimensionados para formar uma grade virtual no ListView
str = strTipo & Space(21 - Len(strTipo)) & strQTD & Space(12 - Len(strQTD)) & strEcon & Space(11 - Len(strEcon)) & strCons & Space(16 - Len(strCons)) & strHidro
Me.lstTipos.AddItem str
rs.MoveNext
DoEvents
Loop
End If
rs.Close
Set rs = Nothing
Trata_Erro:
If Err.Number = 0 Or Err.Number = 20 Then
Resume Next
Else
MsgBox Err.Number & " - " & Err.Description
End If
End Function