none
dificuldade em carregar msflexgrid no vb6 RRS feed

  • Pergunta

  • Caros amigos, estou com problema em carregar os dados em uma msflexgrid do VB6, a rotina só está trazendo o ultimo registro, alguem pode me ajudar, agradeço desde já a atenção. Segue rotina.
    Private Sub CmdLocalizar_Click()
       vlrmov = 0
       saldomov = 0
       gridMov.Cols = 7
       gridMov.Row = 0
       gridMov.Col = 0
       gridMov.Text = "Empresa"
       gridMov.ColWidth(0) = 800
       gridMov.Col = 1
       gridMov.Text = "Documento"
       gridMov.ColWidth(1) = 800
       gridMov.Col = 2
       gridMov.Text = "Emissao"
       gridMov.ColWidth(2) = 1000
       gridMov.Col = 3
       gridMov.Text = "Vencimento"
       gridMov.ColWidth(3) = 1000
       gridMov.Col = 4
       gridMov.Text = "Historico"
       gridMov.ColWidth(4) = 5000
       gridMov.Col = 5
       gridMov.Text = "Valor"
       gridMov.ColWidth(5) = 1200
       gridMov.Col = 6
       gridMov.Text = "Status"
       gridMov.ColWidth(6) = 1000
       I = 1
       SQL = ""
       SQL = "select cod_banco,num_saldomov,num_saldobco from Tb_bancos " & _
             "where txt_banco = '" & CboBanco.Text & "' " & _
             "and txt_conta = " & CboConta.Text & ""
       Set conecta.rs = conecta.cn1.Execute(SQL)
       codigobco = conecta.rs!cod_banco
       saldomov = conecta.rs!num_saldomov
       saldobanco = conecta.rs!num_saldobco
       SQL = ""
       SQL = " select * from tb_receber where num_bco = " & Trim(codigobco) & "" & _
             " order by dat_vencimento"
       Set conecta.rs = conecta.cn1.Execute(SQL)
       If Not conecta.rs.EOF Then
          While Not conecta.rs.EOF
             codemp = conecta.rs!cod_pagto
             numdoc = conecta.rs!num_fatura
             emissao = conecta.rs!dat_emissao
             datvenc = conecta.rs!dat_vencimento
             txthist = conecta.rs!txt_historico
             numvrl = CDbl(conecta.rs!num_vlrfatura)
             Status = conecta.rs!flg_status
             vlrmov = numvrl + vlrmov
             SQL = ""
             SQL = " select txt_id from TB_EMPRESAS where cod_empresa = " & Trim(codemp) & " "
             Set conecta.rs = conecta.cn1.Execute(SQL)
             txtid = conecta.rs!txt_id
             gridMov.AddItem UCase(Trim(txtid)) & Chr(9) & _
                             numdoc & Chr(9) & _
                             emissao & Chr(9) & _
                             datvenc & Chr(9) & _
                             UCase(Trim(txthist)) & Chr(9) & _
                             numvrl & Chr(9) & _
                             UCase(Trim(Status)) & Chr(9), I
             I = I + 1
             vlrmov = CDbl(num_vlrfatura) + vlrmov
             conecta.rs.MoveNext
          Wend
       End If
       txtsaldoper.Text = Format(vlrmov, "###,###,###.#0")
       TxtSaldoMov.Text = Format(saldomov, "###,###,###.#0")
       TxtSaldoBanco.Text = Format(saldobanco, "###,###,###.#0")
    End Sub

    quarta-feira, 18 de dezembro de 2013 16:06

Respostas

  • O problema é que vc esta redefinindo seu recordset no meio do laço.. veja:

     SQL = " select * from tb_receber where num_bco = " & Trim(codigobco) & "" & _
             " order by dat_vencimento"
       Set conecta.rs = conecta.cn1.Execute(SQL)

    SQL = ""
             SQL = " select txt_id from TB_EMPRESAS where cod_empresa = " & Trim(codemp) & " "
             Set conecta.rs = conecta.cn1.Execute(SQL)
             txtid = conecta.rs!txt_id

    Note que  conecta.rs é o mesmo... vc tem que ter outro recordset para a segunda consulta..

    Outra forma seria fazer um join na primeira consulta para nao ter que fazer isso a cada iteraçao..

    E por ultimo, abandonar o VB6 e abraçar o VB.NET.. ainda eu vou conseguir te convencer :)

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    quinta-feira, 19 de dezembro de 2013 14:04
    Moderador
  • Fulvio, bom dia, o meu problema que só está trazendo o ultimo registro, a rotina nao esta executando o loop para trazer os outros registros. Vc poderia me ajudar nessa questão?? 

    Será que RecordSet ta já no final então faça com essa rotina e me fale eu coloque um conecta.rs.MoveFirst

    Private Sub CmdLocalizar_Click()
       vlrmov = 0
       saldomov = 0
       gridMov.Cols = 7
       gridMov.Row = 0
       gridMov.Col = 0
       gridMov.Text = "Empresa"
       gridMov.ColWidth(0) = 800
       gridMov.Col = 1
       gridMov.Text = "Documento"
       gridMov.ColWidth(1) = 800
       gridMov.Col = 2
       gridMov.Text = "Emissao"
       gridMov.ColWidth(2) = 1000
       gridMov.Col = 3
       gridMov.Text = "Vencimento"
       gridMov.ColWidth(3) = 1000
       gridMov.Col = 4
       gridMov.Text = "Historico"
       gridMov.ColWidth(4) = 5000
       gridMov.Col = 5
       gridMov.Text = "Valor"
       gridMov.ColWidth(5) = 1200
       gridMov.Col = 6
       gridMov.Text = "Status"
       gridMov.ColWidth(6) = 1000
       I = 1
       SQL = ""
       SQL = "select cod_banco,num_saldomov,num_saldobco from Tb_bancos " & _
             "where txt_banco = '" & CboBanco.Text & "' " & _
             "and txt_conta = " & CboConta.Text & ""
       Set conecta.rs = conecta.cn1.Execute(SQL)
       codigobco = conecta.rs!cod_banco
       saldomov = conecta.rs!num_saldomov
       saldobanco = conecta.rs!num_saldobco
       SQL = ""
       SQL = " select * from tb_receber where num_bco = " & Trim(codigobco) & "" & _
             " order by dat_vencimento"
       Set conecta.rs = conecta.cn1.Execute(SQL)
       If Not conecta.rs.EOF Then
    	  conecta.rs.MoveFirst
          While Not conecta.rs.EOF
             codemp = conecta.rs!cod_pagto
             numdoc = conecta.rs!num_fatura
             emissao = conecta.rs!dat_emissao
             datvenc = conecta.rs!dat_vencimento
             txthist = conecta.rs!txt_historico
             numvrl = CDbl(conecta.rs!num_vlrfatura)
             Status = conecta.rs!flg_status
             vlrmov = numvrl + vlrmov
             SQL = ""
             SQL = " select txt_id from TB_EMPRESAS where cod_empresa = " & Trim(codemp) & " "
             Set conecta.rs = conecta.cn1.Execute(SQL)
             txtid = conecta.rs!txt_id
             gridMov.AddItem UCase(Trim(txtid)) & Chr(9) & _
                             numdoc & Chr(9) & _
                             emissao & Chr(9) & _
                             datvenc & Chr(9) & _
                             UCase(Trim(txthist)) & Chr(9) & _
                             numvrl & Chr(9) & _
                             UCase(Trim(Status)) & Chr(9), I
             I = I + 1
             vlrmov = CDbl(num_vlrfatura) + vlrmov
             conecta.rs.MoveNext
          Wend
       End If
       txtsaldoper.Text = Format(vlrmov, "###,###,###.#0")
       TxtSaldoMov.Text = Format(saldomov, "###,###,###.#0")
       TxtSaldoBanco.Text = Format(saldobanco, "###,###,###.#0")
    End Sub
    Esse Link ta ótimo da uma lida também: http://www.macoratti.net/vb6_msfg.htm



    Fulvio Cezar Canducci Dias


    quinta-feira, 19 de dezembro de 2013 13:07
  • Bom dia Luiz_fco,

    Caso tenha encontrado alguma solução poste a mesma para auxiliar outros usuários, e não esqueça de marcar como resposta caso alguma solução passada lhe ajude.

    Att,


    Giovani Cruzara – Microsoft Contingent Staff

    Esse conteúdo é 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 é 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.

    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:48
    segunda-feira, 23 de dezembro de 2013 13:15
  • Giovani, bom dia, com certeza irei marca sim. Obrigado pelo lembrete.
    • Marcado como Resposta Luiz_fco sexta-feira, 27 de dezembro de 2013 11:16
    quinta-feira, 26 de dezembro de 2013 12:21
  • Siga esse exemplo:

    http://www.macoratti.net/vb_flex2.htm


    Fulvio Cezar Canducci Dias

    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:49
    quinta-feira, 19 de dezembro de 2013 01:08
  • Fulvio, coloquei o conecta.rs.MoveFirst no local indicado, não deu certo , agora nem o ultimo registro ele trouxe.

     

    Willian encontrou o problema dá uma olhada!

    Se ta sobrepondo o Rs !!! é por causa disso!


    Fulvio Cezar Canducci Dias

    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:49
    quinta-feira, 19 de dezembro de 2013 14:51
  • Duas coisas:

    1- Datas no SQL Server tem que estar entre apostrofos, deste jeito:

    and dat_vencimento between '2013-01-01' and '2013-01-31'

    2 - O formato mais indicado (pois é universal) é YYYY-MM-DD... outros formatos vao depender da configuraçao do regional e da configuraçao do SQL SErver... 

    Entao para funcionar o  correto é 

    SQL = " select * from tb_receber where num_bco = " & Trim(codigobco) & "" & _
             " and dat_vencimento between '" & format(cdate(datincial.text),"yyyy-MM-dd") & "' and '" & format(cdate(datfinal.text),"yyyy-MM-dd") & "'" & _
             " order by dat_vencimento"

    Para o join, estude este artigo:

    http://www.sqlserverdicas.com/2011/03/juncoes-entre-tabelas-joins.html

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------


    quinta-feira, 19 de dezembro de 2013 16:57
    Moderador
  • Se da erro na compilaçao é porque um dos seus "&_" esta errado.. 

    Particularmente e u nao gosta de usar esse tipo de estrutura.. Prefiro assim:

    SQL = ""
    SQL = "SELECT r.cod_pagto,r.num_fatura,r.dat_emissao,r.dat_vencimento,r.txt_historico, r.num_vlrfatura,r.flg_satatus, e.cod_empresa,e.txt_id, b.cod_banco"
    SQL = SQL & " FROM  TB_RECEBER r "
    SQL = SQL & "    INNER JOIN TB_EMPRESAS e ON r.cod_pagto = e.cod_empresa" 
    SQL = SQL & "    INNER JOIN TB_BANCOS b ON r.num_bco = b.cod_banco" 
    SQL = SQL & " WHERE b.cod_banco = " & codigobco & " AND r.dat_vencimento BETWEEN '" & Format(CDate(datincial.Text), "yyyy-MM-dd") & "' AND '" & Format(CDate(datfinal.Text), "yyyy-MM-dd") & "'"
    SQL = SQL & " ORDER BY r.dat_vencimento"

    alem de ficar mais organizado.. fica mais facil de debugar.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------


    quinta-feira, 19 de dezembro de 2013 18:31
    Moderador
  • MAs o erro é na compilaçao ou quando vc roda o programa?

    Poste aqui exatamente a mensagem recebida.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:48
    quinta-feira, 19 de dezembro de 2013 18:59
    Moderador
  • Ok... o que vc postou nao é o que vc esta usando.

    O problema é o TB_BANCOS AS B (esse "as" é que nao pode existir)

    Seu codigo aqui deve dar certo:

    SQL = ""
    SQL = "SELECT r.cod_pagto,r.num_fatura,r.dat_emissao,r.dat_vencimento,r.txt_historico, r.num_vlrfatura,r.flg_satatus, e.cod_empresa,e.txt_id, b.cod_banco"
    SQL = SQL & " FROM  TB_RECEBER r "
    SQL = SQL & "    INNER JOIN TB_EMPRESAS e ON r.cod_pagto = e.cod_empresa" 
    SQL = SQL & "    INNER JOIN TB_BANCOS b ON r.num_bco = b.cod_banco" 
    SQL = SQL & " WHERE b.cod_banco = " & codigobco & " AND r.dat_vencimento BETWEEN '" & Format(CDate(datincial.Text), "yyyy-MM-dd") & "' AND '" & Format(CDate(datfinal.Text), "yyyy-MM-dd") & "'"
    SQL = SQL & " ORDER BY r.dat_vencimento"

    Att

     

    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:48
    quinta-feira, 19 de dezembro de 2013 19:54
    Moderador
  • Outro detalhe... Por que vc faz um join com TB_BANCO????

    Creio que essa tabela seja sub-utilizada na sua query.. ficaria mais simples:

    SQL = ""
    SQL = "SELECT r.cod_pagto,r.num_fatura,r.dat_emissao,r.dat_vencimento,r.txt_historico, r.num_vlrfatura,r.flg_satatus, e.cod_empresa,e.txt_id, r.num_bco "
    SQL = SQL & " FROM  TB_RECEBER r "
    SQL = SQL & "    INNER JOIN TB_EMPRESAS e ON r.cod_pagto = e.cod_empresa" 
    SQL = SQL & " WHERE r.num_bco = " & codigobco & " AND r.dat_vencimento BETWEEN '" & Format(CDate(datincial.Text), "yyyy-MM-dd") & "' AND '" & Format(CDate(datfinal.Text), "yyyy-MM-dd") & "'"
    SQL = SQL & " ORDER BY r.dat_vencimento"

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------



    quinta-feira, 19 de dezembro de 2013 19:58
    Moderador
  • Faça o seguinte, antes da linha:

      Set conecta.rs = conecta.cn1.Execute(SQL)

    coloque um 

    Msgbox(SQL)

    e depois poste a imagem aqui.

    Creio que algo nao esta sendo substituido corretamente no sql


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:48
    sexta-feira, 20 de dezembro de 2013 15:08
    Moderador
  • O nome do campo "r.flg_satatus" esta correto? Verifique a sintaxe de cada um dos campos para ver se correspondem ao nome no banco de dados.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------


    sexta-feira, 20 de dezembro de 2013 20:41
    Moderador

Todas as Respostas

  • Siga esse exemplo:

    http://www.macoratti.net/vb_flex2.htm


    Fulvio Cezar Canducci Dias

    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:49
    quinta-feira, 19 de dezembro de 2013 01:08
  • Fulvio, bom dia, o meu problema que só está trazendo o ultimo registro, a rotina nao esta executando o loop para trazer os outros registros. Vc poderia me ajudar nessa questão?? 
    quinta-feira, 19 de dezembro de 2013 12:50
  • Fulvio, bom dia, o meu problema que só está trazendo o ultimo registro, a rotina nao esta executando o loop para trazer os outros registros. Vc poderia me ajudar nessa questão?? 

    Será que RecordSet ta já no final então faça com essa rotina e me fale eu coloque um conecta.rs.MoveFirst

    Private Sub CmdLocalizar_Click()
       vlrmov = 0
       saldomov = 0
       gridMov.Cols = 7
       gridMov.Row = 0
       gridMov.Col = 0
       gridMov.Text = "Empresa"
       gridMov.ColWidth(0) = 800
       gridMov.Col = 1
       gridMov.Text = "Documento"
       gridMov.ColWidth(1) = 800
       gridMov.Col = 2
       gridMov.Text = "Emissao"
       gridMov.ColWidth(2) = 1000
       gridMov.Col = 3
       gridMov.Text = "Vencimento"
       gridMov.ColWidth(3) = 1000
       gridMov.Col = 4
       gridMov.Text = "Historico"
       gridMov.ColWidth(4) = 5000
       gridMov.Col = 5
       gridMov.Text = "Valor"
       gridMov.ColWidth(5) = 1200
       gridMov.Col = 6
       gridMov.Text = "Status"
       gridMov.ColWidth(6) = 1000
       I = 1
       SQL = ""
       SQL = "select cod_banco,num_saldomov,num_saldobco from Tb_bancos " & _
             "where txt_banco = '" & CboBanco.Text & "' " & _
             "and txt_conta = " & CboConta.Text & ""
       Set conecta.rs = conecta.cn1.Execute(SQL)
       codigobco = conecta.rs!cod_banco
       saldomov = conecta.rs!num_saldomov
       saldobanco = conecta.rs!num_saldobco
       SQL = ""
       SQL = " select * from tb_receber where num_bco = " & Trim(codigobco) & "" & _
             " order by dat_vencimento"
       Set conecta.rs = conecta.cn1.Execute(SQL)
       If Not conecta.rs.EOF Then
    	  conecta.rs.MoveFirst
          While Not conecta.rs.EOF
             codemp = conecta.rs!cod_pagto
             numdoc = conecta.rs!num_fatura
             emissao = conecta.rs!dat_emissao
             datvenc = conecta.rs!dat_vencimento
             txthist = conecta.rs!txt_historico
             numvrl = CDbl(conecta.rs!num_vlrfatura)
             Status = conecta.rs!flg_status
             vlrmov = numvrl + vlrmov
             SQL = ""
             SQL = " select txt_id from TB_EMPRESAS where cod_empresa = " & Trim(codemp) & " "
             Set conecta.rs = conecta.cn1.Execute(SQL)
             txtid = conecta.rs!txt_id
             gridMov.AddItem UCase(Trim(txtid)) & Chr(9) & _
                             numdoc & Chr(9) & _
                             emissao & Chr(9) & _
                             datvenc & Chr(9) & _
                             UCase(Trim(txthist)) & Chr(9) & _
                             numvrl & Chr(9) & _
                             UCase(Trim(Status)) & Chr(9), I
             I = I + 1
             vlrmov = CDbl(num_vlrfatura) + vlrmov
             conecta.rs.MoveNext
          Wend
       End If
       txtsaldoper.Text = Format(vlrmov, "###,###,###.#0")
       TxtSaldoMov.Text = Format(saldomov, "###,###,###.#0")
       TxtSaldoBanco.Text = Format(saldobanco, "###,###,###.#0")
    End Sub
    Esse Link ta ótimo da uma lida também: http://www.macoratti.net/vb6_msfg.htm



    Fulvio Cezar Canducci Dias


    quinta-feira, 19 de dezembro de 2013 13:07
  • Fulvio, coloquei o conecta.rs.MoveFirst no local indicado, não deu certo , agora nem o ultimo registro ele trouxe.

     
    quinta-feira, 19 de dezembro de 2013 13:39
  • O problema é que vc esta redefinindo seu recordset no meio do laço.. veja:

     SQL = " select * from tb_receber where num_bco = " & Trim(codigobco) & "" & _
             " order by dat_vencimento"
       Set conecta.rs = conecta.cn1.Execute(SQL)

    SQL = ""
             SQL = " select txt_id from TB_EMPRESAS where cod_empresa = " & Trim(codemp) & " "
             Set conecta.rs = conecta.cn1.Execute(SQL)
             txtid = conecta.rs!txt_id

    Note que  conecta.rs é o mesmo... vc tem que ter outro recordset para a segunda consulta..

    Outra forma seria fazer um join na primeira consulta para nao ter que fazer isso a cada iteraçao..

    E por ultimo, abandonar o VB6 e abraçar o VB.NET.. ainda eu vou conseguir te convencer :)

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    quinta-feira, 19 de dezembro de 2013 14:04
    Moderador
  • Fulvio, coloquei o conecta.rs.MoveFirst no local indicado, não deu certo , agora nem o ultimo registro ele trouxe.

     

    Willian encontrou o problema dá uma olhada!

    Se ta sobrepondo o Rs !!! é por causa disso!


    Fulvio Cezar Canducci Dias

    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:49
    quinta-feira, 19 de dezembro de 2013 14:51
  • Willian, boa tarde....pode crer vc vai conseguir sim...RSRSRS.... vc pode me ajudar com o exemplo, pois nao sei mexer com o join  e também poderia ver o que estaria de errado na rotina onde preciso fazer a consulta no intervalo de data, quando coloco a linha com BETWEEN  na consulta nao traz nada. Segue abaixo rotina.

    SQL = " select * from tb_receber where num_bco = " & Trim(codigobco) & "" & _

    " and dat_vencimento between " & datincial.text & " and " & datfinal.text & " " & _ " order by dat_vencimento" Set conecta.rs = conecta.cn1.Execute(SQL)

    quinta-feira, 19 de dezembro de 2013 15:35
  • Duas coisas:

    1- Datas no SQL Server tem que estar entre apostrofos, deste jeito:

    and dat_vencimento between '2013-01-01' and '2013-01-31'

    2 - O formato mais indicado (pois é universal) é YYYY-MM-DD... outros formatos vao depender da configuraçao do regional e da configuraçao do SQL SErver... 

    Entao para funcionar o  correto é 

    SQL = " select * from tb_receber where num_bco = " & Trim(codigobco) & "" & _
             " and dat_vencimento between '" & format(cdate(datincial.text),"yyyy-MM-dd") & "' and '" & format(cdate(datfinal.text),"yyyy-MM-dd") & "'" & _
             " order by dat_vencimento"

    Para o join, estude este artigo:

    http://www.sqlserverdicas.com/2011/03/juncoes-entre-tabelas-joins.html

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------


    quinta-feira, 19 de dezembro de 2013 16:57
    Moderador
  • Willian, entendi. fiz os acertos na função e na compilação da o erro

    " Erro de sintaxe(operador faltando) na expressão de consulta"

    'r.cod_pagto = e.cod_empresa inner join tb_bancos b on r.num_bco = b.cod_banco'.

    Não estou conseguindo localizar esse erro..

       SQL = ""
       SQL = " SELECT r.cod_pagto,r.num_fatura,r.dat_emissao,r.dat_vencimento,r.txt_historico," & _
             " r.num_vlrfatura,r.flg_satatus," & _
             " e.cod_empresa,e.txt_id," & _
             " b.cod_banco FROM " & _
             " TB_RECEBER r INNER JOIN TB_EMPRESAS e ON r.cod_pagto = e.cod_empresa" & _
             " INNER JOIN TB_BANCOS b ON r.num_bco = b.cod_banco " & _
             " WHERE b.cod_banco = " & codigobco & " AND " & _
             " r.dat_vencimento BETWEEN '" & Format(CDate(datincial.Text), "yyyy-MM-dd") & "' AND " & _
             " '" & Format(CDate(datfinal.Text), "yyyy-MM-dd") & "'" & _
             " ORDER BY r.dat_vencimento"
       Set conecta.rs = conecta.cn1.Execute(SQL)

    quinta-feira, 19 de dezembro de 2013 17:40
  • Se da erro na compilaçao é porque um dos seus "&_" esta errado.. 

    Particularmente e u nao gosta de usar esse tipo de estrutura.. Prefiro assim:

    SQL = ""
    SQL = "SELECT r.cod_pagto,r.num_fatura,r.dat_emissao,r.dat_vencimento,r.txt_historico, r.num_vlrfatura,r.flg_satatus, e.cod_empresa,e.txt_id, b.cod_banco"
    SQL = SQL & " FROM  TB_RECEBER r "
    SQL = SQL & "    INNER JOIN TB_EMPRESAS e ON r.cod_pagto = e.cod_empresa" 
    SQL = SQL & "    INNER JOIN TB_BANCOS b ON r.num_bco = b.cod_banco" 
    SQL = SQL & " WHERE b.cod_banco = " & codigobco & " AND r.dat_vencimento BETWEEN '" & Format(CDate(datincial.Text), "yyyy-MM-dd") & "' AND '" & Format(CDate(datfinal.Text), "yyyy-MM-dd") & "'"
    SQL = SQL & " ORDER BY r.dat_vencimento"

    alem de ficar mais organizado.. fica mais facil de debugar.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------


    quinta-feira, 19 de dezembro de 2013 18:31
    Moderador
  • Willian, sei que estou abusando, fiz as alterações e mesmo assim continua dando o erro....

    teria algo a ver com relacionamento dos campo dentro do banco..???

    quinta-feira, 19 de dezembro de 2013 18:55
  • MAs o erro é na compilaçao ou quando vc roda o programa?

    Poste aqui exatamente a mensagem recebida.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:48
    quinta-feira, 19 de dezembro de 2013 18:59
    Moderador
  • quando roda pelo F8 ou diretamente pela execução....
    quinta-feira, 19 de dezembro de 2013 19:47
  • 
    quinta-feira, 19 de dezembro de 2013 19:50
  • Ok... o que vc postou nao é o que vc esta usando.

    O problema é o TB_BANCOS AS B (esse "as" é que nao pode existir)

    Seu codigo aqui deve dar certo:

    SQL = ""
    SQL = "SELECT r.cod_pagto,r.num_fatura,r.dat_emissao,r.dat_vencimento,r.txt_historico, r.num_vlrfatura,r.flg_satatus, e.cod_empresa,e.txt_id, b.cod_banco"
    SQL = SQL & " FROM  TB_RECEBER r "
    SQL = SQL & "    INNER JOIN TB_EMPRESAS e ON r.cod_pagto = e.cod_empresa" 
    SQL = SQL & "    INNER JOIN TB_BANCOS b ON r.num_bco = b.cod_banco" 
    SQL = SQL & " WHERE b.cod_banco = " & codigobco & " AND r.dat_vencimento BETWEEN '" & Format(CDate(datincial.Text), "yyyy-MM-dd") & "' AND '" & Format(CDate(datfinal.Text), "yyyy-MM-dd") & "'"
    SQL = SQL & " ORDER BY r.dat_vencimento"

    Att

     

    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:48
    quinta-feira, 19 de dezembro de 2013 19:54
    Moderador
  • Outro detalhe... Por que vc faz um join com TB_BANCO????

    Creio que essa tabela seja sub-utilizada na sua query.. ficaria mais simples:

    SQL = ""
    SQL = "SELECT r.cod_pagto,r.num_fatura,r.dat_emissao,r.dat_vencimento,r.txt_historico, r.num_vlrfatura,r.flg_satatus, e.cod_empresa,e.txt_id, r.num_bco "
    SQL = SQL & " FROM  TB_RECEBER r "
    SQL = SQL & "    INNER JOIN TB_EMPRESAS e ON r.cod_pagto = e.cod_empresa" 
    SQL = SQL & " WHERE r.num_bco = " & codigobco & " AND r.dat_vencimento BETWEEN '" & Format(CDate(datincial.Text), "yyyy-MM-dd") & "' AND '" & Format(CDate(datfinal.Text), "yyyy-MM-dd") & "'"
    SQL = SQL & " ORDER BY r.dat_vencimento"

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------



    quinta-feira, 19 de dezembro de 2013 19:58
    Moderador
  • Caro Willian, bom dia, efetuei as alterações sugeridas, trocou a mensagem de erro por esta, poderia passar para vc o sistema para dar um olha..?

    sexta-feira, 20 de dezembro de 2013 10:49
  • Faça o seguinte, antes da linha:

      Set conecta.rs = conecta.cn1.Execute(SQL)

    coloque um 

    Msgbox(SQL)

    e depois poste a imagem aqui.

    Creio que algo nao esta sendo substituido corretamente no sql


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:48
    sexta-feira, 20 de dezembro de 2013 15:08
    Moderador
  • Willian, segue as mensagens de erro.

    Caso não consiga falar com vc ainda hoje, feliz natal.......

    sexta-feira, 20 de dezembro de 2013 17:15
  • O nome do campo "r.flg_satatus" esta correto? Verifique a sintaxe de cada um dos campos para ver se correspondem ao nome no banco de dados.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------


    sexta-feira, 20 de dezembro de 2013 20:41
    Moderador
  • Bom dia Luiz_fco,

    Caso tenha encontrado alguma solução poste a mesma para auxiliar outros usuários, e não esqueça de marcar como resposta caso alguma solução passada lhe ajude.

    Att,


    Giovani Cruzara – Microsoft Contingent Staff

    Esse conteúdo é 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 é 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.

    • Marcado como Resposta Giovani Cr terça-feira, 24 de dezembro de 2013 13:48
    segunda-feira, 23 de dezembro de 2013 13:15
  • Giovani, bom dia, com certeza irei marca sim. Obrigado pelo lembrete.
    • Marcado como Resposta Luiz_fco sexta-feira, 27 de dezembro de 2013 11:16
    quinta-feira, 26 de dezembro de 2013 12:21
  • Deu certo, obrigado
    sexta-feira, 27 de dezembro de 2013 11:17
  • deu certo, obrigado.....feliz ano novo....
    sexta-feira, 27 de dezembro de 2013 11:17