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

Dataenvironment1 - Data Report


Fireboard

Pergunta

Em meu formulário criei um menu com várias opções de consulta. Cada opção deve filtrar os dados de acordo com o campo específico da minha tabela.

Exemplo: Quero filtrar os campos com data de vencimento = 10/09/2005, fiz o seguinte: set sql = dataenvironment1.connection1.execute (" select * from tblocacao where dtvcto = ' & xdata & " ' " )

xdata é a variável que recebe o valor digitado pelo usuário;

tblocacao é a tabela do banco de dados

Quando executo esta linha é exibida a mensagem:

Run Time Error ' 3704 ':

Operação não permitida quando o objeto está fechado.

Alguém pode mer dizer no que estou errando?

Muito Obrigado

Link para o comentário
Compartilhar em outros sites

12 respostass a esta questão

Posts Recomendados

  • 0

Há como eu saber se está aberto ou não?

Quando abro o programa e chamo este relatório sem abrir qualquer outra parte do programa é exibido este erro de que não está aberto, mas se chamo outro relatório antes desse e depois chamo este relatório é exibida uma outra mensagem de erro, diferente desta.

O quê poderá ser?

Obrigado

Link para o comentário
Compartilhar em outros sites

  • 0

OK, obrigado, resolvi este problema, mas, tenho outro. Uso a seguinte instrução:

set sql = dataenvironment1.connection1.execute (" select * from tblocacao where dtvcto = ' & xdata & " ' " )

Determinei para que sejam exibidos no relatório somente os registros que tenham a data igual a "xdata", mas quando é exibido o relatório, todos os registros do meu banco de dados são exibidos e não somente os iguais a variavel xdata.

No que posso estar errando?

Muito Obrigado

Link para o comentário
Compartilhar em outros sites

  • 0

set sql = dataenvironment1.connection1.execute("select * from tblocacao where DateValue(dtvcto) = DateValue('" & xdata & "')")

Ainda não deu certo, substitui o comando set sql por um objeto data1, depois de executada esta linha, executo o comando data1.refresh e chamo um objeto listview e faço um loop para exibir os dados filtrados, mas são exibidos todos os registros da tabela. O que poderá ser?

Link para o comentário
Compartilhar em outros sites

  • 0

Mesmo assim não filtrou os dados, coloquei abaixo a rotina inteira, o que poderá ser ?

Dim x As Date

Private Sub cmdretornar_Click()

Unload frmccacvcto

End Sub

Private Sub Command1_Click()

atualiza_lista (x)

End Sub

Public Function atualiza_lista(x As Date)

On Error Resume Next

Set bdlocacao = OpenDatabase(App.Path & "\entulho.mdb")

Set tbloca = bdlocacao.OpenRecordset("locacao", dbOpenTable)

Set tbcliente = bdlocacao.OpenRecordset("clientes", dbOpenTable)

tbloca.index = "indlocvcac"

Set SQL = "select * from tblocacao where DateValue(dtvcto) = DateValue('" & x & "')"

Do While tbloca.EOF = False

tbcliente.index = "indcli"

tbcliente.Seek ("="), tbloca("codcli")

If tbcliente.NoMatch = False Then

Set newitem = lstv2.ListItems.Add(, , tbcliente("nome"))

newitem.SubItems(1) = " " & Format(tbcliente("fone"), "####-####")

newitem.SubItems(2) = " " & (Format(tbcliente("endereco"), 38))

newitem.SubItems(3) = " " & Left(tbcliente("bairro"), 38)

Else

Set newitem = lstv2.ListItems.Add(, , tbloca("codcli"))

End If

newitem.SubItems(4) = " " & (Format(tbloca("valor"), "standard"))

newitem.SubItems(5) = " " & (Format(tbloca("datavcac"), "dd/mm/yyyy"))

tbloca.MoveNext

Loop

End Function

Private Sub txt1_keypress(keyascii As Integer)

If keyascii = 13 Then

If IsDate(txt1.Text) Then

x = txt1.Text

SendKeys "{tab}"

keyascii = 0

Else

txt1.SetFocus

txt1.SelStart = 0

txt1.SelLength = Len(txt1.Text)

End If

End If

End Sub

Obrigado

Link para o comentário
Compartilhar em outros sites

  • 0

Bom, notei uma pá de coisas no seu código:

Por que você declara "x" lá no topo se você vai passá-lo para a função?

Por que você não pega o valor da textbox e passa direto para a função ao invés de utilizar uma variável pública para armazená-lo?

Por que você utiliza "Set SQL" para definir uma string?

E, a mais importante de todas, por que você não abriu uma tabela (assim como fez com tbLoca e tbCliente) com essa SQL?

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Boa noite Graymalkin, obrigado pela ajuda.

Realmente, posso melhorar este código!

Mas a minha dúvida fica em relação aos código em sql, estou iniciando meus estudos em sql, e não sei como fazê-los. Você poderia me mostrar como faço isso na minha rotina?

Valeu mesmo

Muito Obrigado

Link para o comentário
Compartilhar em outros sites

  • 0

Realmente, posso melhorar este código!

smile.gif

Mas a minha dúvida fica em relação aos código em sql, estou iniciando meus estudos em sql, e não sei como fazê-los. Você poderia me mostrar como faço isso na minha rotina?

Bom, basicamente seria isso aqui:

SQL = "select * from tblocacao where DateValue(dtvcto) = DateValue('" & x & "')"
set tabela = bdlocacao.OpenRecordset(SQL)

Daí, basta você percorrer "tabela" como com qualquer outro recordset. Certo? wink.gif

Abraços,

Graymalkin

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,2k
    • Posts
      652k
×
×
  • Criar Novo...