Jump to content

eduardohaag

Members
  • Content count

    50
  • Joined

  • Last visited

Everything posted by eduardohaag

  1. eduardohaag

    Busca empresa com menos funcionarios

    Tive de utilizar subselect mesmo, em união com a função TOP. Obrigado pelo auxilio.
  2. Olá pessoal, Estou trabalhando em um projeto de estudo onde tenho uma tabela onde possui o cadastro de funcionários e a empresa onde trabalha. Preciso criar uma query que retorne o nome da empresa que possui a menor quantidade de funcionários. Tenho em minha mente que parece uma coisa simples, possivelmente utilizando as funções Count e MIN, mas não estou conseguindo chegar a um raciocino pra chegar nessa condição.
  3. eduardohaag

    Controle de trabalho usando threads

    Olá, Mais uma vez aqui estou eu com uma duvida que não estou conseguindo resolver. Estou desenvolvendo um ERP para a grafica da minha esposa. Nesse sistema existe um modulo que registra o tempo trabalhado. Para fazer isso existe um botão no formulário principal, que quando é clicado salva a hora na variável entrada, e quando clicado novamente ele registra no banco de dados o intervalo entre a entrada e saida. Até ai tudo ok. Porém as vezes a pessoa sai e esquece de clicar para registrar a saida. Então gostaria de fazer com que a cada 5 minutos fosse verificado se teve alteração na posição do ponteiro do mouse, porém permitindo que o usuário possa usar o programa. Procurando na internet descobri que para isso o melhor seria usar uma thread para fazer essa verificação da posição do mouse em segundo plano já que seria executado a cada 5 minutos e dessa forma travaria a execução do form principal. O problema está que quando ele detecta que mouse ficou parado por mais de 5 minutos e executa o codigo que salvo o intervalo no banco de dados acontece esse erro quando chega na linha "btEntrada.Text = "Registrar Entrada"" : "System.InvalidOperationException: 'Operação entre threads inválida: controle 'ToolStrip1' acessado de um thread que não é aquele no qual foi criado.' Li que tenho que usar algo como invoke e delegate, mas mesmo estudando não consegui entender como implementar. meu codigo é o seguinte: Imports System.ComponentModel Public Class Principal_content Dim saida As DateTime Dim tempo As TimeSpan Dim entrada As DateTime Dim ponteiro As Point Sub GerPonto() Do Threading.Thread.Sleep(5000) If ponteiro = Cursor.Position Then Call registraponto() End If ponteiro = Cursor.Position Loop End Sub Private Sub btEntrada_Click(sender As Object, e As EventArgs) Handles btEntrada.Click Call registraponto End Sub Sub registraponto() Dim trd = New Threading.Thread(AddressOf GerPonto) If btEntrada.Text = "Registrar Entrada" Then entrada = FormatDateTime(Now) btEntrada.Text = "Registrar Saida" btEntrada.ToolTipText = "Registrar Saida" btEntrada.Image = My.Resources.appointment_new_Ativo btEntrada.ForeColor = Color.Lime trd.Start() Else trd.Abort() saida = Now tempo = saida.Subtract(entrada) sql = "INSERT INTO ponto (Data, Entrada, Saida, Segundos) VALUES (#" & Format(entrada, "MM/dd/yyyy") & "#, #" & Format(entrada, "hh:mm:ss") & "#, #" & Format(saida, "hh:mm:ss") & "#, " & Replace(FormatNumber(tempo.TotalSeconds, 0, TriState.False, TriState.False, TriState.False), ",", ".") & ")" btEntrada.Text = "Registrar Entrada" btEntrada.Text = "Registrar Entrada" btEntrada.Image = My.Resources.appointment_new_desativo btEntrada.ForeColor = Color.Red AcessoDB.ExecutarComando(sql, CommandType.Text, Nothing, AcessoDB.TipoDeComando.ExecuteNonQuey) End If End Sub End Class
  4. eduardohaag

    Somar dados do Select e Agrupas

    Como não estou conseguindo resolver o problema. Decidi tratar o retorno da consulta direto no codigo do sistema. Sei que não é o ideal, mas é o que consigo fazer no momento. Ainda aguardo algum auxilio de vocês aqui. Obrigado.
  5. eduardohaag

    Somar dados do Select e Agrupas

    Boa noite pessoal, Esbarrei em um novo problema com consultas no meu sistema. Tenho um formulário no sistema que deverá apresentar todos os materiais utilizados em uma determinada Venda e seus respectivos estoques obtidos através da soma das entradas e saidas do estoque. Para isso devo buscar os dados em 3 tabelas do banco de dados sendo elas VendasProdutos, Composicao, Materiais e Estoque Eis que surge meu problema, como posso ter vários produtos na venda e alguns produtos usam os mesmos materiais, a consulta está retornando com os materiais duplicados, quando o que eu gostaria era que somasse de acordo com cada material. A query que estou usando para teste no acesso é a seguinte: SELECT Composicao.IdMaterial, materiais.descricao, Sum(Estoque.Quantidade) AS Estoque, [VendasProdutos]![Quantidade]*[Composicao]![Quantidade] AS TotalUtilizado FROM (VendasProdutos LEFT JOIN (materiais RIGHT JOIN Composicao ON materiais.ID = Composicao.IdMaterial) ON VendasProdutos.IdProduto = Composicao.IdProduto) LEFT JOIN Estoque ON materiais.ID = Estoque.IdMaterial GROUP BY Composicao.IdMaterial, materiais.descricao, [VendasProdutos]![Quantidade]*[Composicao]![Quantidade], VendasProdutos.IdVenda HAVING (((VendasProdutos.IdVenda)=1)); A consulta está retornando os dados dessa forma: E eu gostaria de que agrupasse por ex: ID Descricao Estoque TotalUtilizado 1 Capa Agenda 34 10 2 Miolo Agenda 27 5 Alguem Sabe como posso fazer isso? Desulpem pelo post gigante, mas não sabia como explicar melhor.
  6. eduardohaag

    Somar dados do Select e Agrupas

    Ja tentei de tudo o que me parecia Lógico, mas até agora não consegui alcançar o resultado esperado. O mais próximo que consegui foi com a query SELECT Composicao.IdMaterial, Materiais.descricao, Sum(Estoque.Quantidade) AS SomaDeQuantidade, Sum([VendasProdutos]![Quantidade]*[Composicao]![Quantidade]) AS QuantidadeMaterial FROM VendasProdutos LEFT JOIN ((Materiais LEFT JOIN Estoque ON Materiais.ID = Estoque.IdMaterial) RIGHT JOIN Composicao ON Materiais.ID = Composicao.IdMaterial) ON VendasProdutos.IdProduto = Composicao.IdProduto GROUP BY Composicao.IdMaterial, Materiais.descricao; Porém os valores nos retornos são totalmente maior do que deveria ser.
  7. eduardohaag

    Somar dados do Select e Agrupas

    Montei ela dentro do gerador de consulta do Access. Uso o Access pois me permite realizar os testes mais rapidos.
  8. Antes de expor minha duvida gostaria de dizer que pesquisei bastante a respeito e não consegui achar a solução.Meu problema é o seguinte:Estou trabalhando em um relatório que gera uma listagem de produtos que vendo e em uma das colunas deve constar o preço de custo do produto de acordo com os preços do materiais e quantidade de cada material utilizado.Estou trabalhando em VB utilizando banco de dados access.Problema está em fazer esse calculo do preço de custo direto na Query SQL.No banco de dados exitem as tabelas Produtos, Composição e MateriaisColunas: Produtos: ID, Descrição, PreçoVenda, PesoMateriais: ID, Descrição, PreçoCompra, Unidade...Composição: ID, IdProduto, IdMaterial, Quantidade.Precisaria que a consulta multiplicasse a quantidade de cada material utilizado para produzir o produto, pelo preço de compra do material e retornasse o valor total dos materiais utilizados.Não sei se fui muito claro, mas espero que alguém consiga me ajudar.Já agradeço de antemão
  9. eduardohaag

    [Resolvido] Calculos na consulta SQL

    Resolvido sim, obrigado pelo apoio.
  10. eduardohaag

    [Resolvido] Erro ao ler xml

    Optei por fazer criar um banco de dados com todos os feriados e fazer a consulta direto dentro do sistema sem usar o webservice. Obrigado pelo auxilio
  11. eduardohaag

    [Resolvido] Erro ao ler xml

    Olá estou criando um sistema onde preciso calcular a previsão de envio do pedido em dias uteis, para isso estou usando um webservice gratuito que retorna um xml, porém estou tendo o erroSystem.XML.XmlException: 'Dados no nível raiz inválidos. Linha 1, posição 1.' Meu código é Sub Preenchedata() Dim sql = "SELECT PrazoPadraoProducao FROM Configuracoes" Dim dr As DataTable = AcessoDB.ExecutarComando(sql, CommandType.Text, Nothing, AcessoDB.TipoDeComando.ExecuteDataTable) Dim ds As New DataSet Dim xml As String = "https://elekto.com.br/api/Calendars/br-BC/Add?initialDate=" & Now.Year & "-" & Now.Month & "-" & Now.Day & "&days=" & dr.Rows(0).Item(0) & "&type=work" ds.ReadXml(xml) e o xml retornado é <dateTime xmlns="http://schemas.microsoft.com/2003/10/Serialization/">2019-05-03T00:00:00Z</dateTime> Alguém tem alguma ideia de como posso eliminar o erro?
  12. eduardohaag

    [Resolvido] Erro ao ler xml

    Estava tentando passar o retorno para um dataset. A documentação do webservice esta em https://elekto.com.br/Blog/ComoConsumirApiDeCalendarios Estou tentando utilizar a parte de Calendars/:businessCalendarCode/Add.
  13. eduardohaag

    [Resolvido] Calculos na consulta SQL

    Consegue resolver colocando uma query dentro de outra, obrigado.
  14. eduardohaag

    Listas primarias e secundarias

    Obrigado pela dica. Agora sei pelo menos o nome do que devo procurar. Não tenho preguiça de pesquisar, não sabia por onde começar. Obrigado novamente.
  15. eduardohaag

    Listas primarias e secundarias

    Olá sou amador e iniciante em programação. Estou trabalhando em um projeto onde tenho uma tela com uma lista de pedidos, com varias colunas como, ID, cliente, previsão de entrega, valor total. Gostaria de colocar uma coluna com o texto "visualizar", que quando ocorresse um click, abrisse abaixo da linha selecionada uma lista secundaria com os produtos do pedido, quantidade, preço etc... Porém não tenho a menor noção de como fazer isso. Pode ser que exista algum controle que tenha essa possibilidade. Estou trabalhando com vb.net.
  16. eduardohaag

    Mudar reportviewer via codigo

    Bom tentei de tudo já e não tive sucesso. A unica solução que consegui é utilizar um reportviewer pra cada relatório a ser gerado.
  17. eduardohaag

    Mudar reportviewer via codigo

    Olá pessoal, Estou trabalhando em um projeto que preciso gerar diversos relatório, porém não queria ter de criar um Userform pra cada relatório, por isso criei um Userform com um reportviewer e crio os relatórios, e apenas faço a mudança de qual relatório exibir via código. Até ai tudo bem, meu problema surge nos relatórios que preciso usar um dataset para popular o mesmo. Tenho um dataset chamado "Same_relDataset.xsd" onde possui varios Datatable, como por exemplo "rel_ls_clientes" e "rel_ls_produtos", um para cada relatório. Preciso mudar a fonte de dados do reportviewer via código para que eu possa fazer em tempo de execução. Já li varios tutoriais principalmente sobre a instrução datasource.add do reportviewer mas até agora não obtive sucesso.
  18. eduardohaag

    Mudar reportviewer via codigo

    Sim o dataset está prenchido. Não utilizei essa linha porque apresenta o seguinte erro "Erro 16 Acesso à propriedade deve atribuir à propriedade ou usar seu valor." antes mesmo de executar. E não faço a menor ideia de como usar essa propriedade. A linha no vb.net ficou assim: relatórios.ReportViewer1.DataBindings()
  19. eduardohaag

    Mudar reportviewer via codigo

    Favor desconsiderar o código acima, e considerar o abaixo: Não apresenta nenhum erro, mas quando a janela do reportviewer abre, no lugar do relatório aparece "Não foi fornecida nenhuma instância de origem de dados para a origem de dados 'same_relDataSet'" Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\programa loja\same_rel.mdb") Dim cmd As OleDbCommand Dim sql As String Dim i As Integer = 0 Dim filtro As String conn.Open() '->>>>>>>> relatórios.ReportViewer2.Reset() relatórios.ReportViewer2.LocalReport.ReportEmbeddedResource = "Same_1._0___Alpha.Report3.rdlc" Dim rds As New ReportDataSource("same_relDataset_Table", getData()) relatórios.ReportViewer2.LocalReport.DataSources.Clear() relatórios.ReportViewer2.LocalReport.DataSources.Add(rds) relatórios.ReportViewer2.LocalReport.Refresh() '------>>>>> If tb_desc.Text = "" Then If cb_tipo.Text = "" Then filtro = "Nenhum" Else filtro = "Tipo => " & cb_tipo.Text End If Else If cb_tipo.Text = "" Then filtro = "Descrição => " & tb_desc.Text Else filtro = "Descrição => " & tb_desc.Text & " Tipo => " & cb_tipo.Text End If End If relatórios.ReportViewer2.LocalReport.SetParameters(New ReportParameter("filtro", filtro)) relatórios.ReportViewer2.LocalReport.SetParameters(New ReportParameter("qtd", lb_itens.Text)) relatórios.MdiParent = principal relatórios.Show() End Sub Private Sub rptGetDataset() Dim ds As New DataSet() ds.DataSetName = "same_relDataset" Dim sql As String = "" sql = "SELECT * FROM rel_ls_produtos" Dim da As New OleDbDataAdapter(sql, conn) da.Fill(ds) End Sub Private Function getData() As DataTable Dim dss As New DataSet() Dim sql As String = "" sql = "SELECT * FROM rel_ls_produtos" Dim da As New OleDbDataAdapter(sql, conn) da.Fill(dss) Dim dt As DataTable = dss.Tables(0) Return dt End Function
  20. eduardohaag

    Mudar reportviewer via codigo

    Segue abaixo. Pode ser que eu esteja cometendo algum erro muito simples, mas não estou conseguindo achar, até mesmo por ser um amador da programação rsrs. A principio o código roda sem problema algum, mas quando abre a janela do relatório ele não carrega data, simplesmente o reportviewer aparece em branco. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\programa loja\same_rel.mdb") Dim cmd As OleDbCommand Dim sql As String Dim i As Integer = 0 Dim filtro As String conn.Open() '->>>>>>>> relatórios.ReportViewer2.Reset() relatórios.ReportViewer2.LocalReport.ReportEmbeddedResource = "Same_1._0___Alpha.Report3.rdlc" Dim rds As New ReportDataSource("same_relDataset_Table", getData()) relatórios.ReportViewer2.LocalReport.DataSources.Clear() relatórios.ReportViewer2.LocalReport.DataSources.Add(rds) relatórios.ReportViewer2.LocalReport.Refresh() '------>>>>> conn.Close() relatórios.MdiParent = principal relatórios.Show() End Sub Private Sub rptGetDataset() Dim ds As New DataSet() ds.DataSetName = "same_relDataset" Dim sql As String = "" sql = "SELECT * FROM rel_ls_produtos" Dim da As New OleDbDataAdapter(sql, conn) da.Fill(ds) End Sub Private Function getData() As DataTable Dim dss As New DataSet() Dim sql As String = "" sql = "SELECT * FROM rel_ls_produtos" Dim da As New OleDbDataAdapter(sql, conn) da.Fill(dss) Dim dt As DataTable = dss.Tables(0) Return dt End Function
  21. eduardohaag

    Mudar reportviewer via codigo

    Desculpe é vb.net mesmo. Exatamente essa parte que fiz a conversão.
  22. eduardohaag

    Mudar reportviewer via codigo

    Conferi o link mas como sou meio noob em programação principalmente quando se trata de tratamento de dados, não consegui fazer funcionar aqui. Converti o código do link pra .net usando o http://converter.telerik.com/ e fiz as adaptações pro meu projeto, mas não funcionou.
  23. eduardohaag

    [Resolvido] Consulta ao banco de dados retornando NULL

    Deu certo, muito obrigado amigo
  24. Olá, tenho uma consulta a um banco de dados access feito com a seguinte query: "SELECT SUM(quantidade) FROM estoque WHERE codproduto=" & tb_cod.text & "" Quando não é encontrado o resultado no banco de dados referente a Clausula WHERE está me retornando NULL, porém eu uso o resultado dessa busca em alguns cálculos. Precisaria que caso o retorno fosse NULL fosse possivel usar o valor 0. Ja tentei fazer da seguinte maneira que li em outro forum mas não funcionou: "SELECT ISNULL(SUM(quantidade),0) FROM estoque WHERE codproduto=" & tb_cod.text & ""
  25. Olá, tenho uma consulta a um banco de dados access feito com a seguinte query: "SELECT SUM(quantidade) FROM estoque WHERE codproduto=" & tb_cod.text & "" Quando não é encontrado o resultado no banco de dados referente a Clausula WHERE está me retornando NULL, porém eu uso o resultado dessa busca em alguns cálculos. Precisaria que caso o retorno fosse NULL fosse possivel usar o valor 0. Ja tentei fazer da seguinte maneira que li em outro forum mas não funcionou: "SELECT ISNULL(SUM(quantidade),0) FROM estoque WHERE codproduto=" & tb_cod.text & ""
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.