Usuário com melhor resposta
Utilizando o VB6 quando insiro um select no meu programa da um numero incompatível com o que eu executo o sql.

Pergunta
-
Utilizando o VB6 quando insiro um select no meu programa da um numero incompatível com o que eu executo o sql.
Eu executo no sql da o numero real, e quando eu insiro no VB e comparo com os dados no sql esta dando um numero diferente. Estou utilizando esta programação:
Private Sub CarregaGridCase() Dim sql3 As String Dim rs As rdoResultset Dim i As Integer On Error GoTo TrataErro sql3 = "" sql3 = sql3 + "SELECT nu_ric, dt_hr_entrada data, TO_CHAR(min_dt_hr_entrada,'HH24:MI') entrada," sql3 = sql3 + "TO_CHAR(max_dt_hr_saida,'HH24:MI') saida, " sql3 = sql3 + " abs(round((max_dt_hr_saida - min_dt_hr_entrada) * 1440)) tempo_0515, he," sql3 = sql3 + " CASE WHEN round((min_dt_hr_entrada - inicio) * 1440) >= -14 AND" sql3 = sql3 + " round((min_dt_hr_entrada - inicio) * 1440) <= 15 THEN" sql3 = sql3 + " CASE WHEN round((max_dt_hr_saida - fim) * 1440) >= 0 AND" sql3 = sql3 + " Round ((max_dt_hr_saida - fim) * 1440) <= 15 THEN round((fim - inicio) * 1440)" sql3 = sql3 + " Else CASE WHEN Round((max_dt_hr_saida - fim) * 1440) >= 0 THEN" sql3 = sql3 + " Round ((max_dt_hr_saida - inicio) * 1440) - 15" sql3 = sql3 + " Else Round ((max_dt_hr_saida - inicio) * 1440)" sql3 = sql3 + " End" sql3 = sql3 + " End" sql3 = sql3 + " WHEN round((min_dt_hr_entrada - inicio) * 1440) < -14 THEN" sql3 = sql3 + " CASE WHEN round((max_dt_hr_saida - fim) * 1440) >= -14 AND" sql3 = sql3 + " Round ((max_dt_hr_saida - fim) * 1440) <= 15 THEN round((fim - min_dt_hr_entrada) * 1440) - 15" sql3 = sql3 + " Else CASE WHEN round((max_dt_hr_saida - fim) * 1440) >= 0 THEN" sql3 = sql3 + " Round ((max_dt_hr_saida - min_dt_hr_entrada) * 1440) - 30" sql3 = sql3 + " Else Round ((max_dt_hr_saida - min_dt_hr_entrada) * 1440) - 15" sql3 = sql3 + " End" sql3 = sql3 + " End" sql3 = sql3 + " WHEN round((min_dt_hr_entrada - inicio) * 1440) > 15 THEN" sql3 = sql3 + " CASE WHEN round((max_dt_hr_saida - fim) * 1440) >= -14 AND" sql3 = sql3 + " Round ((max_dt_hr_saida - fim) * 1440) <= 15 THEN round((fim - min_dt_hr_entrada) * 1440)" sql3 = sql3 + " Else CASE WHEN round((max_dt_hr_saida - fim) * 1440) >= 0 THEN" sql3 = sql3 + " Round ((max_dt_hr_saida - min_dt_hr_entrada) * 1440) - 15" sql3 = sql3 + " Else Round ((max_dt_hr_saida - min_dt_hr_entrada) * 1440)" sql3 = sql3 + " End" sql3 = sql3 + " End" sql3 = sql3 + " END tempo_0516, TO_CHAR(inicio,'HH24:MI') inicio_exp, TO_CHAR(fim,'HH24:MI') fim_exp" sql3 = sql3 + " FROM (SELECT a.nu_ric, TRUNC(a.dt_hr_entrada) dt_hr_entrada," sql3 = sql3 + " DECODE(a.he,'A',to_date(to_char(TRUNC(a.dt_hr_entrada)) || ' ' ||" sql3 = sql3 + " substr(to_char(hr_inicio_expediente,'0000'),2,2) || ':' ||" sql3 = sql3 + " substr(to_char(hr_inicio_expediente,'0000'),4,2) || ':00','dd/mm/yyyy hh24:mi:ss')," sql3 = sql3 + " TO_DATE(TO_CHAR(MIN(a.dt_hr_entrada),'DD/MM/YYYY HH24:MI'),'DD/MM/YYYY HH24:MI:SS')) min_dt_hr_entrada," sql3 = sql3 + " DECODE(a.he,'A',to_date(to_char(TRUNC(a.dt_hr_entrada)) || ' ' ||" sql3 = sql3 + " substr(to_char(hr_fim_expediente,'0000'),2,2) || ':' ||" sql3 = sql3 + " substr(to_char(hr_fim_expediente,'0000'),4,2) || ':00','dd/mm/yyyy hh24:mi:ss')," sql3 = sql3 + " TO_DATE(TO_CHAR(MAX(a.dt_hr_saida),'DD/MM/YYYY HH24:MI'),'DD/MM/YYYY HH24:MI:SS')) max_dt_hr_saida," sql3 = sql3 + " a.he, to_date(to_char(TRUNC(a.dt_hr_entrada)) || ' ' ||" sql3 = sql3 + " substr(to_char(hr_inicio_expediente,'0000'),2,2) || ':' ||" sql3 = sql3 + " substr(to_char(hr_inicio_expediente,'0000'),4,2) || ':00','dd/mm/yyyy hh24:mi:ss') inicio," sql3 = sql3 + " to_date(to_char(TRUNC(a.dt_hr_entrada)) || ' ' ||" sql3 = sql3 + " substr(to_char(hr_fim_expediente,'0000'),2,2) || ':' ||" sql3 = sql3 + " substr(to_char(hr_fim_expediente,'0000'),4,2) || ':00','dd/mm/yyyy hh24:mi:ss') fim," sql3 = sql3 + " TO_DATE(TO_CHAR(MIN(a.dt_hr_entrada),'DD/MM/YYYY HH24:MI'),'DD/MM/YYYY HH24:MI:SS') entrada_real," sql3 = sql3 + " TO_DATE(TO_CHAR(MAX(a.dt_hr_saida),'DD/MM/YYYY HH24:MI'),'DD/MM/YYYY HH24:MI:SS') saida_real" sql3 = sql3 + " FROM detran.controle_ponto a, detran.operadores b" sql3 = sql3 + " Where a.nu_ric =" + txtRG.Text sql3 = sql3 + " AND TRUNC(a.dt_hr_entrada) >= to_date('" + txtDtInicio.Text + "','dd/mm/yyyy')" sql3 = sql3 + " AND TRUNC(a.dt_hr_entrada) <= to_date('" + txtDtFim.Text + "','dd/mm/yyyy')" sql3 = sql3 + " AND b.nu_ricoper = a.nu_ric" sql3 = sql3 + " GROUP BY a.nu_ric, TRUNC(a.dt_hr_entrada), a.he, b.hr_inicio_expediente, b.hr_fim_expediente)" Set rs = cnSUN.OpenResultset(sql3, rdOpenKeyset, rdConcurLock, rdFetchLongColumns) If Not rs.EOF() Then MSFlexGrid3.Rows = rs.RowCount + 1 For i = 1 To rs.RowCount MSFlexGrid3.Row = i MSFlexGrid3.Col = 0 MSFlexGrid3.Text = rs!nu_ric MSFlexGrid3.Col = 1 MSFlexGrid3.Text = rs!Data MSFlexGrid3.Col = 2 MSFlexGrid3.Text = rs!entrada MSFlexGrid3.Col = 3 MSFlexGrid3.Text = rs!saida MSFlexGrid3.Col = 4 MSFlexGrid3.Text = rs!tempo_0515 MSFlexGrid3.Col = 5 MSFlexGrid3.Text = rs!he MSFlexGrid3.Col = 6 MSFlexGrid3.Text = rs!tempo_0516 MSFlexGrid3.Col = 7 MSFlexGrid3.Text = rs!inicio_exp MSFlexGrid3.Col = 8 MSFlexGrid3.Text = rs!fim_exp rs.MoveNext Next Else MsgBox "Valores não encontrado.", vbCritical End If rs.Close Exit Sub TrataErro: MsgBox "ERRO na Tabela ENTRADA / SAIDA: " & Err.Description, vbCritical End Sub
Alguém poderia me ajudar, Desde já agradeço pela compreensão.
Respostas
Todas as Respostas
-
Utilizando o VB6 quando insiro um select no meu programa da um numero incompatível com o que eu executo o sql.
Eu executo no sql da o numero real, e quando eu insiro no VB e comparo com os dados no sql esta dando um numero diferente. Estou utilizando esta programação:
Private Sub CarregaGridCase()
Dim sql3 As String
Dim rs As rdoResultset
Dim i As Integer
On Error GoTo TrataErro
sql3 = ""
sql3 = sql3 + "SELECT nu_ric, dt_hr_entrada data, TO_CHAR(min_dt_hr_entrada,'HH24:MI') entrada,"
sql3 = sql3 + "TO_CHAR(max_dt_hr_saida,'HH24:MI') saida, "
sql3 = sql3 + " abs(round((max_dt_hr_saida - min_dt_hr_entrada) * 1440)) tempo_0515, he,"
sql3 = sql3 + " CASE WHEN round((min_dt_hr_entrada - inicio) * 1440) >= -14 AND"
sql3 = sql3 + " round((min_dt_hr_entrada - inicio) * 1440) <= 15 THEN"
sql3 = sql3 + " CASE WHEN round((max_dt_hr_saida - fim) * 1440) >= 0 AND"
sql3 = sql3 + " Round ((max_dt_hr_saida - fim) * 1440) <= 15 THEN round((fim - inicio) * 1440)"
sql3 = sql3 + " Else CASE WHEN Round((max_dt_hr_saida - fim) * 1440) >= 0 THEN"
sql3 = sql3 + " Round ((max_dt_hr_saida - inicio) * 1440) - 15"
sql3 = sql3 + " Else Round ((max_dt_hr_saida - inicio) * 1440)"
sql3 = sql3 + " End"
sql3 = sql3 + " End"
sql3 = sql3 + " WHEN round((min_dt_hr_entrada - inicio) * 1440) < -14 THEN"
sql3 = sql3 + " CASE WHEN round((max_dt_hr_saida - fim) * 1440) >= -14 AND"
sql3 = sql3 + " Round ((max_dt_hr_saida - fim) * 1440) <= 15 THEN round((fim - min_dt_hr_entrada) * 1440) - 15"
sql3 = sql3 + " Else CASE WHEN round((max_dt_hr_saida - fim) * 1440) >= 0 THEN"
sql3 = sql3 + " Round ((max_dt_hr_saida - min_dt_hr_entrada) * 1440) - 30"
sql3 = sql3 + " Else Round ((max_dt_hr_saida - min_dt_hr_entrada) * 1440) - 15"
sql3 = sql3 + " End"
sql3 = sql3 + " End"
sql3 = sql3 + " WHEN round((min_dt_hr_entrada - inicio) * 1440) > 15 THEN"
sql3 = sql3 + " CASE WHEN round((max_dt_hr_saida - fim) * 1440) >= -14 AND"
sql3 = sql3 + " Round ((max_dt_hr_saida - fim) * 1440) <= 15 THEN round((fim - min_dt_hr_entrada) * 1440)"
sql3 = sql3 + " Else CASE WHEN round((max_dt_hr_saida - fim) * 1440) >= 0 THEN"
sql3 = sql3 + " Round ((max_dt_hr_saida - min_dt_hr_entrada) * 1440) - 15"
sql3 = sql3 + " Else Round ((max_dt_hr_saida - min_dt_hr_entrada) * 1440)"
sql3 = sql3 + " End"
sql3 = sql3 + " End"
sql3 = sql3 + " END tempo_0516, TO_CHAR(inicio,'HH24:MI') inicio_exp, TO_CHAR(fim,'HH24:MI') fim_exp"
sql3 = sql3 + " FROM (SELECT a.nu_ric, TRUNC(a.dt_hr_entrada) dt_hr_entrada,"
sql3 = sql3 + " DECODE(a.he,'A',to_date(to_char(TRUNC(a.dt_hr_entrada)) || ' ' ||"
sql3 = sql3 + " substr(to_char(hr_inicio_expediente,'0000'),2,2) || ':' ||"
sql3 = sql3 + " substr(to_char(hr_inicio_expediente,'0000'),4,2) || ':00','dd/mm/yyyy hh24:mi:ss'),"
sql3 = sql3 + " TO_DATE(TO_CHAR(MIN(a.dt_hr_entrada),'DD/MM/YYYY HH24:MI'),'DD/MM/YYYY HH24:MI:SS')) min_dt_hr_entrada,"
sql3 = sql3 + " DECODE(a.he,'A',to_date(to_char(TRUNC(a.dt_hr_entrada)) || ' ' ||"
sql3 = sql3 + " substr(to_char(hr_fim_expediente,'0000'),2,2) || ':' ||"
sql3 = sql3 + " substr(to_char(hr_fim_expediente,'0000'),4,2) || ':00','dd/mm/yyyy hh24:mi:ss'),"
sql3 = sql3 + " TO_DATE(TO_CHAR(MAX(a.dt_hr_saida),'DD/MM/YYYY HH24:MI'),'DD/MM/YYYY HH24:MI:SS')) max_dt_hr_saida,"
sql3 = sql3 + " a.he, to_date(to_char(TRUNC(a.dt_hr_entrada)) || ' ' ||"
sql3 = sql3 + " substr(to_char(hr_inicio_expediente,'0000'),2,2) || ':' ||"
sql3 = sql3 + " substr(to_char(hr_inicio_expediente,'0000'),4,2) || ':00','dd/mm/yyyy hh24:mi:ss') inicio,"
sql3 = sql3 + " to_date(to_char(TRUNC(a.dt_hr_entrada)) || ' ' ||"
sql3 = sql3 + " substr(to_char(hr_fim_expediente,'0000'),2,2) || ':' ||"
sql3 = sql3 + " substr(to_char(hr_fim_expediente,'0000'),4,2) || ':00','dd/mm/yyyy hh24:mi:ss') fim,"
sql3 = sql3 + " TO_DATE(TO_CHAR(MIN(a.dt_hr_entrada),'DD/MM/YYYY HH24:MI'),'DD/MM/YYYY HH24:MI:SS') entrada_real,"
sql3 = sql3 + " TO_DATE(TO_CHAR(MAX(a.dt_hr_saida),'DD/MM/YYYY HH24:MI'),'DD/MM/YYYY HH24:MI:SS') saida_real"
sql3 = sql3 + " FROM detran.controle_ponto a, detran.operadores b"
sql3 = sql3 + " Where a.nu_ric =" + txtRG.Text
sql3 = sql3 + " AND TRUNC(a.dt_hr_entrada) >= to_date('" + txtDtInicio.Text + "','dd/mm/yyyy')"
sql3 = sql3 + " AND TRUNC(a.dt_hr_entrada) <= to_date('" + txtDtFim.Text + "','dd/mm/yyyy')"
sql3 = sql3 + " AND b.nu_ricoper = a.nu_ric"
sql3 = sql3 + " GROUP BY a.nu_ric, TRUNC(a.dt_hr_entrada), a.he, b.hr_inicio_expediente, b.hr_fim_expediente)"
Set rs = cnSUN.OpenResultset(sql3, rdOpenKeyset, rdConcurLock, rdFetchLongColumns)
If Not rs.EOF() Then
MSFlexGrid3.Rows = rs.RowCount + 1
For i = 1 To rs.RowCount
MSFlexGrid3.Row = i
MSFlexGrid3.Col = 0
MSFlexGrid3.Text = rs!nu_ric
MSFlexGrid3.Col = 1
MSFlexGrid3.Text = rs!Data
MSFlexGrid3.Col = 2
MSFlexGrid3.Text = rs!entrada
MSFlexGrid3.Col = 3
MSFlexGrid3.Text = rs!saida
MSFlexGrid3.Col = 4
MSFlexGrid3.Text = rs!tempo_0515
MSFlexGrid3.Col = 5
MSFlexGrid3.Text = rs!he
MSFlexGrid3.Col = 6
MSFlexGrid3.Text = rs!tempo_0516
MSFlexGrid3.Col = 7
MSFlexGrid3.Text = rs!inicio_exp
MSFlexGrid3.Col = 8
MSFlexGrid3.Text = rs!fim_exp
rs.MoveNext
Next
Else
MsgBox "Valores não encontrado.", vbCritical
End If
rs.Close
Exit Sub
TrataErro:
MsgBox "ERRO na Tabela ENTRADA / SAIDA: " & Err.Description, vbCritical
End SubAlguém poderia me ajudar, Desde já agradeço pela compreenção
- Mesclado Marcos SJ quinta-feira, 13 de agosto de 2015 18:54 THREAD DUPLICADA
-
voce poderia dar um exemplo disso o que voce falou:
"Eu executo no sql da o numero real, e quando eu insiro no VB e comparo com os dados no sql esta dando um numero diferente."
Eu nao consigo visualizar o problema somente olhando para o codigo.
att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
- Marcado como Resposta Rian Rodrigues terça-feira, 11 de agosto de 2015 12:49
- Não Marcado como Resposta Rian Rodrigues terça-feira, 11 de agosto de 2015 12:49
-
-
o erro que esta dando mais é da tabela tempo_0516, pois ele não esta conseguindo identificar a case que fiz, dentro do select.
Por exemplo O tempo_0516 = 490 no sql
mas no programa ele da 485
Estou achando que o problema é no:
Set rs = cnSUN.OpenResultset(sql3, rdOpenKeyset, rdConcurLock, rdFetchLongColumns)
-
"
Estou achando que o problema é no:
Set rs = cnSUN.OpenResultset(sql3, rdOpenKeyset, rdConcurLock, rdFetchLongColumns)
"
Nao acho que o problema seja ai... estou achando que o problema seja aqui:
sql3 = sql3 + " Where a.nu_ric =" + txtRG.Text sql3 = sql3 + " AND TRUNC(a.dt_hr_entrada) >= to_date('" + txtDtInicio.Text + "','dd/mm/yyyy')" sql3 = sql3 + " AND TRUNC(a.dt_hr_entrada) <= to_date('" + txtDtFim.Text + "','dd/mm/yyyy')" sql3 = sql3 + " AND b.nu_ricoper = a.nu_ric"
Voce tem ceteza absoluta que vc executa o mesmo SQL dentro do vb e dento do SQl?
Eu faria o seguinte: eu colocaria um breakpoint na linha:
Set rs = cnSUN.OpenResultset(sql3, rdOpenKeyset, rdConcurLock, rdFetchLongColumns)
inspecionar a variavel SQL3, copiar o conteudo e colar no SQL.
É isso o que vc faz?
Mas com certeza nao faz sentido que o ADO mude o comportamento de uma query SQL.
Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
- Marcado como Resposta Marcos SJ quinta-feira, 13 de agosto de 2015 18:53
-
Bom dia Rian,
Poderia identar o código e depois informar em qual parte do código está com dificuldade?
Atenciosamente
Marcos Roberto de Souza Junior
Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
-
Olá Rian Rodrigues,
Para qualquer outra dúvida referente ao seu projeto peço que abra uma nova thread. Peço que foque no ponto em específico no qual tem dúvida quando for postar o trecho de código.
Atenciosamente
Marcos Roberto de Souza Junior
Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.