Jump to content
eduardohaag

Controle de trabalho usando threads

Recommended Posts

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

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By rtavix
      Pessoal eu sou iniciante na programação, e irei detalhar todo o processo resumidamente que estou fazendo no momento. Eu tenho uma pagina web que realiza uma consulta através de uma determinada data. Tenho um dropdow e dentro dele eu tenho a Opção Mês base e Período, caso eu selecione o Mês base devo carregar um campo de data informando o mes e o ano e em seguida eu tenho dois radio button escrito a opção Sim e Não e caso escolho fazer o filtro por periodo, deverei carregar um capo de data automaticamente para informar um determinado periodo preenchendo a data de inicio dd/MM/yyyy até a data final dd/MM/yyyy, após escolher Mês base ou por Período dentro do dropDow e carregar o campo de data automaticamente onde o usuário informará a data, consequentemente o mesmo irá escolher se a opção é de Liberação Sim ou Não (radio button) acho que é assim que se escreve rs, caso ele realiza sua escolha, deverá carregar os seguintes dados na grid:
      AnoMêsBase, inscEstadual, razaoSocial e NME_ABREV.
      Observação: No meu banco de dados a coluna AnoMesBase está dessa forma por exemplo 032018, sempre irá vir dessa forma, a data nunca será formatado o campo.
      Porém não estou conseguindo trazer as informações que está no banco de dados.
      Até agora implementei as seguintes classes:
       
      using System; using System.Collections.Generic; using System.Linq; using System.Text; using NHibernate.Mapping.Attributes; namespace Dominio.Domain { [Serializable] [Class(Table = "DAP_EMPRESA", NameType = typeof(Empresa), Lazy = false)] public class Empresa { private int codigo; private string inscEstadual; private string razaoSocial; private string nomeAbreviado; private DateTime dataCadastro; private string cnpj; [Id(Column = "ID_EMPRESA", Name = "Codigo", Generator = "increment", UnsavedValue = "0")] public int Codigo { get { return codigo; } set { codigo = value; } } [Property(Column = "INSC_ESTADUAL", Lazy = false)] public string InscEstadual { get { return inscEstadual; } set { inscEstadual = value; } } [Property(Column = "RAZAO_SOCIAL", Lazy = false)] public string RazaoSocial { get { return razaoSocial; } set { razaoSocial = value; } } [Property(Column = "NME_ABREV", Lazy = false)] public string NomeAbreviado { get { return nomeAbreviado; } set { nomeAbreviado = value; } } [Property(Column = "DAT_CADASTRO", Lazy = false)] public DateTime DataCadastro { get { return dataCadastro; } set { dataCadastro = value; } } [Property(Column = "CNPJ", Lazy = false)] public string Cnpj { get { return cnpj; } set { cnpj = value; } } } } using NHibernate.Mapping.Attributes; using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace Dominio.Domain { [Serializable] [Class(Table = "DAP_FINANCIAMENTO", NameType = typeof(Financiamento), Lazy = false)] public class Financiamento { private int codigo; // private Empresa empresa; // private decimal vlrFinanciamento;// private string inscEstadual;// private string anoMesBase; // private string anoMesFaturamento; // private decimal vlrICMSPrevisto; // private decimal totalRecolhimento; // private DateTime datUltimoRecolhimento; // private decimal totalLiberacao; // private DateTime datLiberacao; // private DateTime datUltimaLiberacao; // private decimal totalDevolucao; // private string descObservacao; // private DateTime dataDevolucao; // private DateTime dataCadastramento; // private int mesBase; // private int mesFat; // [Id(Column = "ID_FINANCIAMENTO", Name = "Codigo", Generator = "increment", UnsavedValue = "0")] public int Codigo { get { return codigo; } set { codigo = value; } } [ManyToOne(0, Name = "Empresa", ClassType = typeof(Empresa), Column = "ID_EMPRESA", Lazy = Laziness.False)] public Empresa Empresa { get { return empresa; } set { empresa = value; } } [Property(Column = "VLR_FINANCIAMENTO", Lazy = false)] public decimal VlrFinanciamento { get { return vlrFinanciamento; } set { vlrFinanciamento = value; } } [Property(Column = "INSC_ESTADUAL", Lazy = false)] public string InscEstadual { get { return inscEstadual; } set { inscEstadual = value; } } [Property(Column = "ANO_MES_BASE", Lazy = false)] public string AnoMesBase { get { return anoMesBase; } set { anoMesBase = value; } } [Property(Column = "ANO_MES_FATURA", Lazy = false)] public string AnoMesFaturamento { get { return anoMesFaturamento; } set { anoMesFaturamento = value; } } [Property(Column = "VLR_ICMS_PREVISTO", Lazy = false)] public decimal VlrICMSPrevisto { get { return vlrICMSPrevisto; } set { vlrICMSPrevisto = value; } } [Property(Column = "TOTAL_RECOLHIDO", Lazy = false)] public decimal TotalRecolhimento { get { return totalRecolhimento; } set { totalRecolhimento = value; } } [Property(Column = "DATA_ULTIMO_RECOL", Lazy = false)] public DateTime DatUltimoRecolhimento { get { return datUltimoRecolhimento; } set { datUltimoRecolhimento = value; } } [Property(Column = "TOTAL_LIBERACAO", Lazy = false)] public decimal VlrTotalLiberacao { get { return totalLiberacao; } set { totalLiberacao = value; } } [Property(Column = "DAT_ULTIMA_LIBERACAO", Lazy = false)] public DateTime DatUltimaLiberacao { get { return datUltimaLiberacao; } set { datUltimaLiberacao = value; } } [Property(Column = "TOTAL_DEVOLUCAO", Lazy = false)] public decimal TotalDevolucao { get { return totalDevolucao; } set { totalDevolucao = value; } } [Property(Column = "DSC_OBSERVACAO", Lazy = false)] public string DescObservacao { get { return descObservacao; } set { descObservacao = value; } } [Property(Column = "DAT_LIBERACAO", Lazy = false)] public DateTime DatLiberacao { get { return datLiberacao; } set { datLiberacao = value; } } [Property(Column = "MES_BASE", Lazy = false)] public int MesBase { get { return mesBase; } set { mesBase = value; } } } } using Dominio.Domain; using NHibernate; using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace Dominio.DataAccess { public class FinanciamentoDAO { public static List<Financiamento> ListarTodos() { try { ISession sessao = NhibernateHelper.SessaoCorrente; Financiamento financiamento = new Financiamento(); ICriteria criterios = sessao.CreateCriteria(financiamento.GetType()); return criterios.List<Financiamento>().ToList(); } catch (Exception e) { throw new Exception(e.ToString()); } } public static void InserirOuAtualizar(Financiamento financiamento) { ISession sessao = NhibernateHelper.SessaoCorrente; ITransaction transacao = sessao.BeginTransaction(); try { sessao.SaveOrUpdate(financiamento); transacao.Commit(); } catch (Exception e) { transacao.Rollback(); throw new Exception(e.ToString()); } } public static void Deletar(Financiamento financiamento) { ISession sessao = NhibernateHelper.SessaoCorrente; ITransaction transacao = sessao.BeginTransaction(); try { sessao.Delete(financiamento); transacao.Commit(); } catch (Exception e) { transacao.Rollback(); throw new Exception(e.ToString()); } } internal static Financiamento BuscarPorInscEstadual(string InscEstadual) { try { ISession sessao = NhibernateHelper.SessaoCorrente; Financiamento financiamento = new Financiamento(); ICriteria criterios = sessao.CreateCriteria(financiamento.GetType()); criterios.Add(NHibernate.Criterion.Expression.Eq("InscEstadual", InscEstadual)); return criterios.UniqueResult() as Financiamento; } catch (Exception e) { throw new Exception(e.ToString()); } } internal static Financiamento BuscarPorIDFinanciamento(int COD_FINANCIAMENTO) { try { ISession sessao = NhibernateHelper.SessaoCorrente; Financiamento financiamento = new Financiamento(); ICriteria criterios = sessao.CreateCriteria(financiamento.GetType()); criterios.Add(NHibernate.Criterion.Expression.Eq("Codigo", COD_FINANCIAMENTO)); return criterios.UniqueResult() as Financiamento; } catch (Exception e) { throw new Exception(e.ToString()); } } internal static List<Financiamento> ListarPorEmpresa(int ID_EMPRESA) { ISession sessao = NhibernateHelper.SessaoCorrente; Financiamento financiamento; try { financiamento = new Financiamento(); ICriteria criterios = sessao.CreateCriteria(financiamento.GetType()); criterios.CreateAlias("Empresa", "e").Add(NHibernate.Criterion.Expression.Eq("e.Codigo", ID_EMPRESA)); return criterios.List<Financiamento>().ToList(); } catch (Exception e) { throw new Exception(e.ToString()); } } } } using Dominio.DataAccess; using Dominio.Domain; using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace Dominio.APL { public class AplFinanciamento { public void gravar(Financiamento financiamento) { FinanciamentoDAO.InserirOuAtualizar(financiamento); } public void deletar(Financiamento financiamento) { FinanciamentoDAO.Deletar(financiamento); } public List<Financiamento> listarTodas() { return FinanciamentoDAO.ListarTodos(); } public Financiamento buscarPorInscEstadual(string InscEstadual) { return FinanciamentoDAO.BuscarPorInscEstadual(InscEstadual); } public Financiamento buscarPorIDFinanciamento(int IDFinanciamento) { return FinanciamentoDAO.BuscarPorIDFinanciamento(IDFinanciamento); } public List<Financiamento> listarFinanciamentoPorEmpresa(int idEmpresa) { return FinanciamentoDAO.ListarPorEmpresa(idEmpresa); } } }  
      Esse é meu .cs porém não estou conseguindo fazer funcionar, porque me retorna tudo null ao compilar o código e desconfio que a minha lógica esteja errada.
       
      using Dominio.APL; using Dominio.Domain; using dap.Models; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; namespace dapView.Relatorios.RelFinancLiberadoMesBase { public partial class RelFinancLiberadoMesBase : System.Web.UI.Page { private AplFinanciamento aplFinanciamento = new AplFinanciamento(); private List<Financiamento> financiamento = new List<Financiamento>(); private static bool keyJS { get; set; } protected void Page_Load(object sender, EventArgs e) { keyJS = true; // CarregarComboLiberado(); if (!IsPostBack) { GerenciadorUsuarioPagina.funcao = "RELFIN01"; //btnImprime.Visible = false; } } //Carrega os dados relacionando o tipo de liberação por data //private void CarregarComboLiberado() // { // ddlLiberado.Items.Add("---------Selecione----------"); // ddlLiberado.Items.Add("Mês Base"); // ddlLiberado.Items.Add("Período"); // } protected void btnConsultar_Click(object sender, EventArgs e) { CarregaRelatorio(); } protected void ddlLiberado_SelectedIndexChanged(object sender, EventArgs e) { } public void CarregaRelatorio() { financiamento = aplFinanciamento.listarTodas(); var dados = (from financiamento in financiamento where DateTime.Compare(financiamento.DatUltimaLiberacao, Convert.ToDateTime(txtMesBase.Text.ToString())) == 0 group financiamento by new { financiamento.Codigo, financiamento.Empresa.InscEstadual, financiamento.Empresa.RazaoSocial, financiamento.Empresa.Cnpj, financiamento.Empresa.NomeAbreviado, financiamento.AnoMesBase } into g select new { codigo = g.Key.Codigo, AnoMesBase = g.Key.AnoMesBase, InscricaoEstadual = g.Key.InscEstadual, RazaoSocial = g.Key.RazaoSocial, Cnpj = g.Key.Cnpj, NmeAbreviado = g.Key.NomeAbreviado }).OrderBy(o => o.codigo).ToList(); if (dados.Count() > 0) { //Carrega os dados da gridview de consulta gv.DataSource = dados; gv.DataBind(); gv.UseAccessibleHeader = true; gv.HeaderRow.TableSection = TableRowSection.TableHeader; //Carrega os dados da gridview usada para imprimir gvImprimir.DataSource = dados; gvImprimir.DataBind(); gvImprimir.UseAccessibleHeader = true; gvImprimir.HeaderRow.TableSection = TableRowSection.TableHeader; //mostra botão imprimir //btnImprime.Visible = true; } else { if (keyJS) chamarSwal("aviso", "Não foram encontrados financiamentos para essa data."); // btnImprime.Visible = false; } } private void chamarSwal(string tipo, string mensagem) { var body = (HtmlGenericControl)(Page.Master.FindControl("body")); body.Attributes["onload"] = $"{tipo}(\"{mensagem}\")"; keyJS = false; } } } Esse é o meu html
       
      <%@ Page Title="" Language="C#" MasterPageFile="~/Content/MasterPage.Master" AutoEventWireup="true" CodeBehind="RelFinanciamento.aspx.cs" Inherits="dapView.Relatorios.RelFinancLiberadoMesBase.RelFinancLiberadoMesBase" %> <asp:Content ID="head" ContentPlaceHolderID="headPlaceHolder" runat="server"> <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css"> <script src="../JsRelatorioFinancLiberadoMesBase.js"></script> <script> var d = "16/09/2019" // date received from card function filldate() { document.getElementById('cardexpirydate').value = d.split('/').reverse().join("-"); } </script> <script> function exibir_ocultar(val) { if (val.value == 'LiberadoMesBase') { document.getElementById('periodo').style.display = 'none'; document.getElementById('MesBase').style.display = 'block'; document.getElementById('periodo').style.display = 'none'; } else { document.getElementById('periodo').style.display = 'block'; document.getElementById('MesBase').style.display = 'none'; } }; </script> </asp:Content> <asp:Content ID="ContentForm" ContentPlaceHolderID="formPlaceHolder" runat="server"> <asp:ScriptManager runat="server"></asp:ScriptManager> <div class="row"> <div class="col-md-12"> <div class="content-box"> <div class="box-title">Financiamento</div> <div class="box-body"> <div id="triage"> <label for="category">Liberado:</label> <div class="form-inline"> <div class="col-md-2"> <label class="radio-inline control-label"> <input checked="checked" name="TaskLog.TaskTypeId" type="radio" value="2"> SIM </label> <label class="radio-inline control-label"> <input id="TaskLog_TaskTypeId" name="TaskLog.TaskTypeId" type="radio" value="1"> NÃO </label> </div> <div id="category-select"> <select onchange="exibir_ocultar(this)" class="col-md-3 form-control" id="category" name="category" style="width: auto"> <option value="LiberadoMesBase">-----------Selecione----------</option> <option value="LiberadoMesBase">Mês Base</option> <option value="LiberadoPeriodo">Período</option> </select> </div> </div> <br /> <div class="row"> <div class="form-group"> <label class="radio-inline control-label"> <input type="radio" name="optradio" checked>Sim</label> <label class="radio-inline"> <input type="radio" name="optradio">Não</label> </div> <br /> <div id="periodo"> <asp:TextBox type="Month" Style="width: 10%" runat="server" ClientIDMode="Static" class="form-control " ID="TextBox1" MaxLength="30"></asp:TextBox> <br /> </div> <br /> <div id="MesBase"> <asp:TextBox type="date" Style="width: 10%" runat="server" ClientIDMode="Static" class="form-control " ID="TextBox2" MaxLength="30"></asp:TextBox> <br /> </div> </div> </div> <div class="row"> <div class="content-box content-box-tabela" id="tabela" style="visibility: hidden"> <asp:GridView class="col-md-12" CssClass="tabela-padrao tabela-padrao-borda dataTable" runat="server" AutoGenerateColumns="False" PageSize="9" ID="gv" Width="100%"> <Columns> <asp:TemplateField HeaderText="Empresa" ItemStyle-HorizontalAlign="Left"> <ItemTemplate> <asp:Label ID="lblCodigo" runat="server" Text='<%# Bind("Codigo") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Valor Financiamento" ItemStyle-HorizontalAlign="Center"> <ItemTemplate> <asp:Label ID="lblValorFinanciamento" runat="server" Text='<%# Bind("ValorFinanciamento") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Inscricao Estadual" ItemStyle-HorizontalAlign="Center"> <ItemTemplate> <asp:Label ID="lblInscricaoEstadual" runat="server" Text='<%# Bind("InscricaoEstadual") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Ano mes base" ItemStyle-HorizontalAlign="Right"> <ItemTemplate> <asp:Label ID="lblAnoMesBase" runat="server" Text='<%# Bind("AnoMesBase") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> </Columns> <PagerStyle CssClass="" HorizontalAlign="Center" /> </asp:GridView> </div> </div> </div> <div class="box-footer"> <button runat="server" class="btn btn-padrao" id="btnConsultar" onserverclick="btnConsultar_Click">Consultar</button> </div> </div> <%--IMPRIMIR--%> <div class="container" style="visibility: hidden" id="ConteinerImprimir"> <div class="table" runat="server" style="margin: 0 auto; width: auto;"> <div class="row"> <div class="col-lg-12"> <img src="http://internet.sefaz.es.gov.br/imagens/topo_brasao.png" alt=""> <br> <br> </div> </div> <div class="row" runat="server" style="border-bottom: 2px solid #B0BEC5"> <div class="col-lg-5"> <strong>Financiamento</strong> </div> <div class="col-lg-5" style="text-align: end;" runat="server" id="totalRegistros"></div> </div> </div> <div class="row"> <div class="content-box content-box-tabela"> <asp:GridView class="col-md-12 grid" runat="server" AutoGenerateColumns="False" PageSize="9" ID="gvImprimir" GridLines="None" RowStyle-HorizontalAlign="Center" Width="100%"> <Columns> <asp:TemplateField HeaderText="Empresa" ItemStyle-HorizontalAlign="Left"> <ItemTemplate> <asp:Label ID="lblCodigo" runat="server" Text='<%# Bind("Codigo") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Valor Financiamento" ItemStyle-HorizontalAlign="Center"> <ItemTemplate> <asp:Label ID="lblValorFinanciamento" runat="server" Text='<%# Bind("ValorFinanciamento") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Inscricao Estadual" ItemStyle-HorizontalAlign="Center"> <ItemTemplate> <asp:Label ID="lblInscricaoEstadual" runat="server" Text='<%# Bind("InscricaoEstadual") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Ano mes base" ItemStyle-HorizontalAlign="Right"> <ItemTemplate> <asp:Label ID="lblAnoMesBase" runat="server" Text='<%# Bind("AnoMesBase") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> </Columns> <PagerStyle CssClass="" HorizontalAlign="Center" /> </asp:GridView> </div> </div> </div> </div> </div> </asp:Content>  
      Se alguém puder me ajudar, agradeço.
    • By Rhael Andrade
      Bom Dia.
      Gostaria de saber se consigo manipular o tamanha de uma coluna tablix usando reportviewer.
      tenho uma coluna A que se caso a coluna B a visualização dela for false, a coluna A aumentaria a largura da colunar.
      isso seria possível no reportviewer?
      der de já agradeço a atenção de todos.
    • By Bruno Soars
      Prezados, bom dia.
      sou novo no desenvolvimento em ASP. O antigo desenvolvedor sumiu e deixou uma bomba para eu resolver. Temo uma pagina na nossa intranet no qual a mesma e nosso serviço de chamados. Quando coloca todos os dados solicitados a mesma apresenta o seguinte erro:
       
      Persits.MailSender.4 error '800a0004'
      Connect has been reset by server.
      /INTRANET/suporte/index.asp, line 88

      Já estudei na internet as formas de resolver este problema, porém sem solução. Alguém no forum pode me ajudar neste erro? segue abaixo o código completo.
      <% Set con = Server.CreateObject("ADODB.Connection") con.open "PROVIDER=SQLOLEDB;DATA SOURCE=10.10.0.3;UID=microuni;PWD=microuni;DATABASE=intranet;Polling=true" empresa=request.form("edtempresa") departamento=request.form("edtdepartamento") usuario=request.form("edtusuario") categoria=request.form("edtcategoria") motivo=request.form("edtmotivo") descricao=request.form("edtdescricao") if empresa <> "" and departamento <> "" and usuario <> "" and categoria <> "" and motivo <> "" and descricao <> "" then set prioridadeemail= con.execute("select email,prioridade,ramal from tab_suporte_usuarios where usuario='" &usuario& "'") email=prioridadeemail("email") prioridade=prioridadeemail("prioridade") ramal=prioridadeemail("ramal") sql="insert into tab_suporte(categoria,motivo,usuario,data,descricao,situacao,empresa,departamento,emailresp,prioridade,ramal) values ('" & categoria & "','" & motivo & "','" & usuario & "',getdate(),'" & descricao & "','Pendente','" & empresa & "','" & departamento & "', '" &email& "', '" & prioridade& "','" & ramal & "')" 'response.write(sql) con.execute(sql) set cod=con.execute("select max(codigo) as codigo from tab_suporte") codigo = cod("codigo") total = codigo set emailsql=con.execute("select email,prioridade,ramal from tab_suporte_usuarios where usuario='" &usuario& "'") emailresp=emailsql("email") prioridade=emailsql("prioridade") ramal=emailsql("ramal") sql="SELECT right(('0' + rtrim(convert(char(2), DATEPART(d, data)))), 2) + '/' + right(('0' + rtrim(convert(char(2), DATEPART(m, data)))), 2) + '/' + convert(char(4), DATEPART(yyyy, data)) + ' - ' + right(('0' + rtrim(convert(char(2), DATEPART(hh, data)))), 2) + ':' + right(('0' + rtrim(convert(char(2), DATEPART(mi, data)))), 2) as data from tab_suporte where codigo='" & codigo & "'" set data=con.execute(sql) sqlfim="SELECT right(('0' + rtrim(convert(char(2), DATEPART(d, data + '03:00')))), 2) + '/' + right(('0' + rtrim(convert(char(2), DATEPART(m, data + '03:00')))), 2) + '/' + convert(char(4), DATEPART(yyyy, data + '03:00')) + ' às ' + right(('0' + rtrim(convert(char(2), DATEPART(hh, data + '03:00')))), 2) + ':' + right(('0' + rtrim(convert(char(2), DATEPART(mi, data + '03:00')))), 2) + ' horas' as datafim from tab_suporte where codigo='" & codigo & "'" set datafinal=con.execute(sqlfim) body = "************************* CHAMADO DE SUPORTE ***************************" & chr(13) & chr(13) body =body & "Número do Chamado...: " & codigo & chr(13) body =body & "Data - Hora.........: " & data("data") & chr(13) body =body & "Empresa.............: " & ucase(empresa) & chr(13) body =body & "Departamento........: " & ucase(departamento) & chr(13) body =body & "Usuário.............: " & ucase(usuario) & chr(13) body =body & "e-Mail..............: " & emailresp & chr(13) body =body & "Ramal...............: " & ramal & chr(13) body =body & "Categoria...........: " & categoria & chr(13) body =body & "Motivo..............: " & motivo & chr(13) body =body & "Nível de Prioridade.: " & prioridade & chr(13) & chr(13) body =body & "************************ DESCRIÇÃO DO CHAMADO **************************" & chr(13) & chr(13) body =body & descricao & chr(13) & chr(13) body =body & "**************************** OBSERVAÇÕES *******************************" & chr(13) & chr(13) body =body & "O prazo máximo para o atendimento deste chamado é até o dia " & datafinal("datafim") & "." & chr(13) & chr(13) body =body & "************************************************************************" body2 = "************************* CHAMADO DE SUPORTE ***************************" & chr(13) & chr(13) body2 =body2 & "Número do Chamado...: " & codigo & chr(13) body2 =body2 & "Data - Hora.........: " & data("data") & chr(13) body2 =body2 & "Empresa.............: " & ucase(empresa) & chr(13) body2 =body2 & "Departamento........: " & ucase(departamento) & chr(13) body2 =body2 & "Usuário.............: " & ucase(usuario) & chr(13) body2 =body2 & "Categoria...........: " & categoria & chr(13) body2 =body2 & "Motivo..............: " & motivo & chr(13) & chr(13) body2 =body2 & "************************ DESCRIÇÃO DO CHAMADO **************************" & chr(13) & chr(13) body2 =body2 & descricao & chr(13) & chr(13) body2 =body2 & "**************************** OBSERVAÇÕES *******************************" & chr(13) & chr(13) body2 =body2 & "O prazo máximo de atendimento deste chamado é de 03 (três) horas, portanto, se até o dia " & datafinal("datafim") & " você ainda não tiver obtido um retorno de nossa equipe, por favor entre em contato através do ramal 247 e informe o código " & codigo & "." & chr(13) & chr(13) body2 =body2 & "************************************************************************" 'response.write(body) 'response.write(body2) Set objmail = Server.CreateObject("Persits.MailSender") objmail.Host = "email-ssl.com.br" objmail.From = "suporte@centerlab.com.br" objmail.FromName = "Equipe de Suporte GENOMA" objmail.AddAddress "suporte@centerlab.com.br" objmail.Subject = "Equipe de Suporte GENOMA" objmail.IsHTML = True objmail.Body = body objmail.Send if Err.Number <> 0 then Response.write "Error: " & Err.description end if Set objmail2 = Server.CreateObject("Persits.MailSender") objmail2.Host = "email-ssl.com.br" objmail2.From = "suporte@centerlab.com.br" objmail2.FromName = "Equipe de Suporte GENOMA" objmail2.AddAddress "suporte@centerlab.com.br" objmail2.Subject = "Equipe de Suporte GENOMA" objmail2.IsHTML = True objmail2.Body = body2 objmail2.Send if Err.Number <> 0 then Response.write "Error: " & Err.description end if msg = codigo session("usuario")="" empresa="" departamento="" usuario="" categoria="" motivo="" descricao="" end if %> <html> <head> <meta http-equiv="Content-Language" content="pt-br"> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta name="GENERATOR" content="Microsoft FrontPage 6.0"> <meta name="ProgId" content="FrontPage.Editor.Document"> <title>:: Central de Suporte GENOMA ::</title> <script language="javascript"> function verificaeenvia(){ if (document.formulario.edtempresa.value=='' || document.formulario.edtdepartamento.value=='' || document.formulario.edtusuario.value=='' || document.formulario.edtcategoria.value=='' || document.formulario.edtmotivo.value=='' || document.formulario.edtdescricao.value==''){ alert('É necessário o preenchimento de todos os campos.'); } else{ document.formulario.submit(); } } </script> </head> <body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" rightmargin="0" bottommargin="0"> <table border="0" width="100%" cellspacing="0" cellpadding="0" height="100%"> <tr> <td valign="top" rowspan="2"><img src="index.1suporte.gif" width="64" height="473" border="0"></td> <td width="51%" height="44" bgcolor="#F5F5F5"> <p align="right"><b><font face="Arial" color="#808080">Solicitação de Suporte</font><font face="Arial" size="3"> </font></b></td> <td width="42%" bgcolor="#2E5E92" height="183" rowspan="2" valign="middle" align="right"> <p align="center"><font color="#FFFFFF"><font face="Verdana" size="1"><strong>Departamento de Informática</strong><br> <em>Cada vez mais agilizando o<br> atendimento aos seus usuários.</em></font></font></p> <p align="center"> </p> <p align="center"> </p> <p align="center"> </p> <p align="center"><font size="1" color="#FFFFFF" face="Tahoma"><b>* O prazo máximo para retorno é de<br> até 3 horas. Caso não seja atendido<br> dentro deste período, por favor<br> comunique no ramal 247.</b></font></p> </td> </tr> <tr> <td width="51%" height="139" valign="top"> <form method="POST" action="index.asp" name="formulario"> <table border="0" width="96%" cellspacing="0" cellpadding="0" height="351"> <tr> <td height="6" align="left" valign="middle"> </td> <td height="6"></td> </tr> <tr> <td width="23%" height="12" align="left" valign="middle"><font face="Verdana" size="1" color="#446B93"><strong> Empresa:</strong></font></td> <td height="12" valign="middle"><font face="Arial" size="1" color="#446B93"> <select name="edtempresa" size="1" id="edtempresa" style="background-color: #F5F5F5; font-family: Arial; font-size: 8 pt; border: 1 solid #C0C0C0" onChange="document.formulario.edtdepartamento.value=''; document.formulario.edtusuario.value=''; document.formulario.submit();"> <option value="<%=empresa%>" selected><%=empresa%></option> <% sql="select * from tab_suporte_empresas where empresa <> '" & empresa & "'" set valorescmb=Con.execute(sql) if not valorescmb.eof then valorescmb.movefirst while not valorescmb.eof%> <option value="<%=valorescmb("empresa")%>"><%=valorescmb("empresa")%></option> <% valorescmb.movenext wend end if %> </select><%if empresa="" then response.write " Selecione a sua empresa." end if%> </font></td> </tr> <tr> <td width="23%" height="30" align="l  
    • By Michel Ol!ver
      Olá galera, estou com  um pequeno problema.. 
      gostaria de duplicar minha estrutura do report viewer dentro de um laço de repetição
       
       
      Tem possibilidade ?
       
      Exemplo do código abaixo : 
      ReportParameter[] parametros = { //cabecalho new ReportParameter("fazenda", ObjPropriedade.nome), new ReportParameter("lavoura", oArea.descricao + " (" + tamLavoura.ToString() + " Ha)"), new ReportParameter("cultura", ObjCiclo.Cultura.nome), new ReportParameter("resteva", resteva), new ReportParameter("dataPlantio", ObjCiclo.dataPlantio.Value.ToShortDateString()), new ReportParameter("dataColheita", ObjCiclo.dataColheita.Value.ToShortDateString()), new ReportParameter("unidade", ObjCiclo.Cultura.UnidadeMedida.nome), new ReportParameter("minima", ObjCiclo.prodMinima.ToString()), new ReportParameter("maxima", ObjCiclo.prodMaxima.ToString()), } reportAnalises.LocalReport.DataSources.Add(new ReportDataSource("dsCicloInter", lstRelCicloInter)); reportAnalises.LocalReport.DataSources.Add(new ReportDataSource("dsFertilizanteInter", lstRelFertilizanteInter)); reportAnalises.LocalReport.DataSources.Add(new ReportDataSource("dsMediaFertilizanteInter", lstMediaRelFertilizanteInter)); Tentei colocar um laço de repetição nessa estrutura, mas somente me apresenta um relatório. 
       
    • By Estevão Alves Avelino
      Estou com duvidas de como pegar os dados digitados no DataGridView e jogar dentro de variáveis, se alguém souber uma maneira de fazer isso ficarei muito grato!
×

Important Information

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