Ir para conteúdo
Fórum Script Brasil
  • 0

Instrução complexa em SQL


Welter

Pergunta

ACCESS 2003 - Visual Basic

Duas tabelas: Cliente e Movimento

Tenho que selecionar na tabela Movimento, para um cliente com código vindo de combobox, a soma dos lançamentos (Val) de uma determinada referência (Ref) da mesma data (CDat).

Usei a rotina:

Sub base()

Dim Banco As Database

Dim sqrst As String

Dim dybase As Recordset

Set Banco = OpenDatabase("c:\previ\previ.mdb")

Clien = Comb0.Column(0)

Set sqrst = Banco.OpenRecordset("select" _

& "cliente.código, sum (movimento.val)" _

& "as somadeval, movimento.ref, movimento.cdat" _

& "from cliente inner join movimento on cliente.código = movimento.cod" _

& "group by cliente.código, movimento.ref, movimento.cdat" _

& "having(((cliente.código)=clien) and ((movimento.ref)=2));")

Set dybase = Banco.OpenRecordset(sqrst)

End Sub

O sistema retorna a mensagem " Erro de compilação - o objeto é obrigatório " selecionando "Set sqrst".

Não consigo solução para o erro.

Onde está meu erro?

Agradeço pela ajuda dos companheiros

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Pelo que entendi sqrst é um tipo de dados (String) e não um objeto, logo você não pode utilizar a expressão Set sqrst =.

O correto a ser feito é:

sqrst = "select " _

& "cliente.código, sum (movimento.val) " _

& "as somadeval, movimento.ref, movimento.cdat " _

& "from cliente inner join movimento on cliente.código = movimento.cod " _

& "group by cliente.código, movimento.ref, movimento.cdat " _

& "having(((cliente.código)=clien) and ((movimento.ref)=2));"

Observe que eu acrescentei também um espaço no final de cada linha de texto para que a instrução sql não fique "grudada" gerando outro erro.

Espero ter ajudado.

abs.

:ninja:

Editado por João.Neto
Link para o comentário
Compartilhar em outros sites

  • 0
Pelo que entendi sqrst é um tipo de dados (String) e não um objeto, logo você não pode utilizar a expressão Set sqrst =.

O correto a ser feito é:

sqrst = "select " _

& "cliente.código, sum (movimento.val) " _

& "as somadeval, movimento.ref, movimento.cdat " _

& "from cliente inner join movimento on cliente.código = movimento.cod " _

& "group by cliente.código, movimento.ref, movimento.cdat " _

& "having(((cliente.código)=clien) and ((movimento.ref)=2));"

Observe que eu acrescentei também um espaço no final de cada linha de texto para que a instrução sql não fique "grudada" gerando outro erro.

Espero ter ajudado.

abs.

Caro João,

Funcionou perfeitamente. Estava comentendo um erro terrível ao colocar o "set" e não inserir os espaços.

Tive que inserir em "clien" os famigerados " e &, por causa do "tipo incompatível". Alguém, um dia, irá produzir um tratado sobre as aspas, o apóstrofo, o e comercial e outros símbolos, que sempre "derrubam" os novatos (com 68 anos), como eu.

Obrigado pela atenção.

Tenha um ano sempre NOVO!!

Welter

:ninja:

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,2k
×
×
  • Criar Novo...