frmConsumidoresDesabastecidos.frm
13.7 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
VERSION 5.00
Object = "{F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0"; "comdlg32.ocx"
Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.1#0"; "MSCOMCTL.OCX"
Begin VB.Form frmConsumidoresDesabastecidos
BorderStyle = 4 'Fixed ToolWindow
Caption = "Ligações cadastras nos trechos selecionados"
ClientHeight = 5205
ClientLeft = 45
ClientTop = 315
ClientWidth = 8940
LinkTopic = "Form1"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 5205
ScaleWidth = 8940
ShowInTaskbar = 0 'False
StartUpPosition = 2 'CenterScreen
Begin MSComDlg.CommonDialog cdl1
Left = 5520
Top = 1500
_ExtentX = 847
_ExtentY = 847
_Version = 393216
End
Begin VB.CommandButton cmdGerartxt
Caption = "Gerar txt"
Height = 315
Left = 6390
TabIndex = 4
Top = 4860
Width = 1215
End
Begin VB.TextBox txtQde
Alignment = 2 'Center
Enabled = 0 'False
Height = 285
Left = 1920
TabIndex = 2
Top = 4830
Width = 1215
End
Begin VB.CommandButton cmdOk
Caption = "Ok"
Height = 315
Left = 7680
TabIndex = 1
Top = 4860
Width = 1155
End
Begin MSComctlLib.ListView lv
Height = 4665
Left = 120
TabIndex = 0
Top = 120
Width = 8715
_ExtentX = 15372
_ExtentY = 8229
SortKey = 2
View = 3
LabelEdit = 1
Sorted = -1 'True
LabelWrap = -1 'True
HideSelection = 0 'False
FullRowSelect = -1 'True
GridLines = -1 'True
_Version = 393217
ForeColor = -2147483640
BackColor = -2147483643
BorderStyle = 1
Appearance = 1
NumItems = 5
BeginProperty ColumnHeader(1) {BDD1F052-858B-11D1-B16A-00C0F0283628}
Text = "Nro Ligação"
Object.Width = 2540
EndProperty
BeginProperty ColumnHeader(2) {BDD1F052-858B-11D1-B16A-00C0F0283628}
SubItemIndex = 1
Text = "Endereço"
Object.Width = 5292
EndProperty
BeginProperty ColumnHeader(3) {BDD1F052-858B-11D1-B16A-00C0F0283628}
SubItemIndex = 2
Text = "Usuário"
Object.Width = 5292
EndProperty
BeginProperty ColumnHeader(4) {BDD1F052-858B-11D1-B16A-00C0F0283628}
SubItemIndex = 3
Text = "Tel. Res."
Object.Width = 2646
EndProperty
BeginProperty ColumnHeader(5) {BDD1F052-858B-11D1-B16A-00C0F0283628}
SubItemIndex = 4
Text = "Tel. Com."
Object.Width = 2646
EndProperty
End
Begin VB.Label Label1
Caption = "Total de Ligações:"
BeginProperty Font
Name = "MS Sans Serif"
Size = 8.25
Charset = 0
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 225
Left = 150
TabIndex = 3
Top = 4890
Width = 1635
End
End
Attribute VB_Name = "frmConsumidoresDesabastecidos"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Dim conexao As New ADODB.connection
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 nStr As String
Dim strConn As String
Dim connection As Integer
'Função para apresentar os usuários afetados em uma manobra de rede
'
'init -
'Object_id_trecho - string com todos os object_id_s dos trechos de rede em que serão consultados os ramais pertencentes aos mesmos
'
Public Function init(Object_id_trecho As String) As Boolean
On Error GoTo Trata_Erro
'LoozeXP1.InitIDESubClassing
Dim TABELACOMERCIAL As String
Dim count2 As Integer
Dim lig As String
Dim str As String
Dim rs As ADODB.Recordset 'todas as ligações que estão localizadas nos trechos que estão conectados até encontrar uma válvula, os quais os object_id_s já foram fornecidos na estrada desta função
Dim itmx As ListItem 'lista com os dados dos consumidores que serão afetados pela manobra
Dim QtdeLig As Integer 'quantidade total de consumidores afetados pela manobra
Dim rs2 As ADODB.Recordset 'da tabela que possui os dados temporários das ligações
Dim fg As String
Dim fh As String
Dim fi As String
Dim fk As String
Dim fl As String
Dim fm As String
Dim numeroErro As String 'indica o número do erro que pode ocorrer
Dim ddd As String
Dim rsNro_Ligacao As ADODB.Recordset
numeroErro = "Erro não identificado"
count2 = 0
fg = "RAMAIS_AGUA"
fh = "RAMAIS_AGUA_LIGACAO"
fi = "NRO_LIGACAO"
fk = "ramais_agua"
fl = "OBJECT_ID_"
fm = "OBJECT_ID_TRECHO"
If frmCanvas.TipoConexao = 4 Then
'se for Postgres
If connection <> 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)
strConn = "DRIVER={PostgreSQL Unicode}; DATABASE=" + mBANCO + "; SERVER=" + mSERVIDOR + "; PORT=" + mPORTA + "; UID=" + mUSUARIO + "; PWD=" + nStr + "; ByteaAsLongVarBinary=1;"
conexao.Open strConn
connection = 10
End If
End If
'prepara consulta de todas as ligações que estão localizadas nos trechos que estão conectados até encontrar uma válvula, os quais os object_id_s já foram fornecidos na estrada desta função
If frmCanvas.TipoConexao <> 4 Then
'se for Oracle ou SQLServer
str = "SELECT ramais_agua_ligacao.nro_ligacao from ramais_agua_ligacao inner join ramais_agua on ramais_agua.object_id_=ramais_agua_ligacao.object_id_ where object_id_trecho in(" & Object_id_trecho & ")"
Set rs = Conn.execute(str)
Else
str = "SELECT " + """" + fh + """" + "." + """" + fi + """" + " from " + """" + fh + """" + " inner join " + """" + fg + """" + " on " + """" + fg + """" + "." + """" + fl + """" + "=" + """" + fh + """" + "." + """" + fl + """" + " where " + """" + fm + """" + " in(" & Object_id_trecho & ")"
Set rs = conexao.execute(str)
End If
'While Not rs.EOF
' lig = rs.Fields(0).value
' rs.MoveNext
'Wend
'rs.Close
TABELACOMERCIAL = GetQueryProcess(19) 'obtem o nome da tabela que possui os dados temporários das ligações
If frmCanvas.TipoConexao <> 4 Then
'é Oracle ou SQLServer
Dim dw As String
dw = "GS_TEMP"
Set rs2 = Conn.execute("SELECT * FROM GS_TEMP")
Else
'é Postgres
Set rs2 = conexao.execute("SELECT * FROM " + """" + "GS_TEMP" + """" + "")
End If
'conta o número total de linhas na tabela GS_TEMP
While Not rs2.EOF
count2 = count2 + 1
rs2.MoveNext
Wend
rs2.Close
If count2 >= 1 Then
If frmCanvas.TipoConexao <> 4 Then
ConnSec.execute "Delete From " & TABELACOMERCIAL
Else
conexao.execute "Delete From " + """" + TABELACOMERCIAL + """"
End If
End If
'Conn.execute ("INSERT INTO GS_TEMP(NRO_LIGACAO) VALUES (" & Object_id_trecho & ")")
Set rsNro_Ligacao = New ADODB.Recordset
'abre o recordset da tabela temporária de ligações cujo nome está definido no banco de dados em GetQueryProcess(19)
If frmCanvas.TipoConexao = 1 Then
'é SQLServer
rsNro_Ligacao.Open TABELACOMERCIAL, ConnSec, adOpenKeyset, adLockOptimistic, adCmdTable
ElseIf frmCanvas.TipoConexao = 2 Then
'é Oracle
ddd = "SELECT * FROM GS_TEMP"
rsNro_Ligacao.Open ddd, ConnSec, adOpenDynamic, adLockOptimistic
Else
'é Postgres
ddd = "SELECT * FROM " + """" + "GS_TEMP" + """" + ""
rsNro_Ligacao.Open ddd, conexao, adOpenDynamic, adLockOptimistic
End If
'adiciona os números de todas as ligações conectadas aos trechos de rede afetados pela pesquisa (nro_ligacao)
While Not rs.EOF
rsNro_Ligacao.AddNew 'adiciona nova linha na tabela GS_TEMP com todos os seguimentos (trechos de rede) que foram pintados. GS_TEMP já foi apagada anteriormente
rsNro_Ligacao.Fields(0).value = rs.Fields(0).value
rsNro_Ligacao.Update
rs.MoveNext
Wend
' rs.Close
'Lv.ListItems.Clear
' Set itmx = Lv.ListItems.Add(, , 0)
' itmx.SubItems(1) = 0
' itmx.SubItems(2) = 0
' itmx.SubItems(3) = 0
' itmx.SubItems(4) = 0
' txtQde = QtdeLig
' Me.Show vbModal
' 'LoozeXP1.EndWinXPCSubClassing
'prepara a querie para obter os dados das listas das ligações afetadas pela manobra
str = GetQueryProcess(18) 'vai consultar a vista que tem as ligações de água do comercial, mas somente aqueles trechos registrados em GS_TEMP
If frmCanvas.TipoConexao <> 4 Then
'caso SQLServer ou Oracle
numeroErro = "String conexão: " & str
Set rs = Conn.execute(str)
Else
'caso Postgres
Set rs = conexao.execute(str)
End If
'Set rs = ConnSec.execute("SELECT LI.NRO_LIGACAO, (LI.ENDERECO + '-' + ISNULL(LI.NUM_CASA,'') + '-' + ISNULL(LI.COMPL_LOGRADOURO,'') + '-' + ISNULL(LI.BAIRRO,'')) as Endereco, LI.CONSUMIDOR, LI.TEL_RES AS TELRES, LI.TEL_COM AS TELCOM FROM NXGS_V_LIG_COMERCIAL LI INNER JOIN gs_temp G ON G.NRO_LIGACAO = LI.NRO_LIGACAO")
'prepara a lista para ser apresentada na caixa de diálogo para o usuário
If frmCanvas.TipoConexao <> 4 Then
'caso SQLServer ou Oracle
lv.ListItems.Clear
While Not rs.EOF
Set itmx = lv.ListItems.Add(, , rs.Fields(0).value)
itmx.SubItems(1) = IIf(IsNull(rs.Fields(1).value), "", rs.Fields(1).value) 'foi inserido o IsNull, pois foi verificado que em alguns bancos comerciais algumas colunas podem vir com valores nulos o que ocasiona um erro
itmx.SubItems(2) = IIf(IsNull(rs.Fields(2).value), "", rs.Fields(2).value)
itmx.SubItems(3) = IIf(IsNull(rs.Fields(3).value), "", rs.Fields(3).value)
itmx.SubItems(4) = IIf(IsNull(rs.Fields(4).value), "", rs.Fields(4).value)
QtdeLig = QtdeLig + 1 'incrementa a quantidade total de ligações
rs.MoveNext
Wend
rs.Close
Else
'caso Postgres
lv.ListItems.Clear
While Not rs.EOF
Set itmx = lv.ListItems.Add(, , rs.Fields(0).value)
itmx.SubItems(1) = rs.Fields(1).value
itmx.SubItems(2) = rs.Fields(5).value
itmx.SubItems(3) = rs.Fields(6).value
itmx.SubItems(4) = rs.Fields(7).value
QtdeLig = QtdeLig + 1 'incrementa a quantidade total de ligações
rs.MoveNext
Wend
rs.Close
End If
txtQde = QtdeLig
Me.Show vbModal
'LoozeXP1.EndWinXPCSubClassing
init = True
Exit Function
Trata_Erro:
If Err.Number = 0 Or Err.Number = 20 Then
Resume Next
Else
ErroUsuario.Registra "frmConsumidoresDesabastecidos", "init, object_id selecionado: " & Object_id_trecho & " querie: " & numeroErro, CStr(Err.Number), CStr(Err.Description), True, glo.enviaEmails
init = False
End If
End Function
'Subrotina para gerar um arquivo texto, com os dados já gerados pela Função init, contendo todos os consumidores que serão afetados por uma manobra na rede
'
'
'
Private Sub cmdGerartxt_Click()
On Error GoTo Trata_Erro
Dim a As Integer
cdl1.filename = GetMyDocumentsDirectory() & "\ClientesAfetadosManobra_" & Format(Now, "YYYY-MM-DD-HHMMSS") & ".txt"
cdl1.Filter = "Arquivos texto (*.txt)|*.txt"
cdl1.ShowSave
If cdl1.filename <> "" Then
Open cdl1.filename For Output As #1
For a = 1 To lv.ListItems.count
Print #1, lv.ListItems.Item(a).Text & ";" & _
lv.ListItems.Item(a).SubItems(1) & ";" & _
lv.ListItems.Item(a).SubItems(2) & ";" & _
lv.ListItems.Item(a).SubItems(3) & ";" & _
lv.ListItems.Item(a).SubItems(4)
Next
Close #1
MsgBox "Arquivo gerado com sucesso e disponível no no seguinte endereço: " & cdl1.filename, vbInformation
Shell "notepad.exe " & cdl1.filename, vbNormalFocus
End If
Trata_Erro:
If Err.Number = 0 Or Err.Number = 20 Then
Resume Next
Else
ErroUsuario.Registra "frmConsumidoresDesabastecidos", "cmdGerartxt_Click", CStr(Err.Number), CStr(Err.Description), True, glo.enviaEmails
End If
End Sub
Private Sub cmdOK_Click()
Unload Me
End Sub