none
Utilizando o VB6 quando insiro um select no meu programa da um numero incompatível com o que eu executo o sql. RRS feed

  • 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.

                                                                                                      

    terça-feira, 11 de agosto de 2015 12:43

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 Sub 

    Algué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
    terça-feira, 11 de agosto de 2015 12:40
  • 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
    terça-feira, 11 de agosto de 2015 12:45
    Moderador
  • Obrigado por me tentar ajudar, já conseguir resolver o problema.
    • Marcado como Resposta Marcos SJ quinta-feira, 13 de agosto de 2015 18:58
    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)

    terça-feira, 11 de agosto de 2015 13:04
  • "

    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
    terça-feira, 11 de agosto de 2015 13:54
    Moderador
  • 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.

    quarta-feira, 12 de agosto de 2015 12:16
  • 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.

    quinta-feira, 13 de agosto de 2015 18:59