USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Listar todos os funcionarios separando por codigo
SRick
LAVRAS
MG - BRASIL
ENUNCIADA !
Postada em 07/11/2013 09:45 hs            
Preciso de uma dica para fazer a seguinte consulta:

pelo menos a lógica para listar os codigos dos funcionario, sendo que após mudar o codigo do funcionario o programa some as horas daquele funcionario, mai ou menos assim:

Em um gridview preciso listar asssim:

COD FUNC.               DATA ENTRADA             DATA SAIDA  DESCONTO  TOTAL DIA

101101-9    25/09/2013 08:30:00  25/09/2013 18:00:00  02:00:00  07:30:00
101101-9    26/09/2013 08:30:00  26/09/2013 18:00:00  02:00:00  07:30:00
TOTAL                                                                                          15:00:00

102102-8    25/09/2013 08:30:00  25/09/2013 18:00:00  02:00:00  07:30:00
102102-8    26/09/2013 08:30:00  26/09/2013 18:00:00  02:00:00  07:30:00
TOTAL                                                                                          15:00:00

E ASSIM POR DIANTE......

Desde já agradeço a atenção.

Henrique


ABAIXO ESTÁ O CÓDIGO PARA LISTAR UM ÚNICO FUNCIONÁRIO: E ESTÁ FUNCIONANDO BELEZA. agora preciso para listar todos de uma vez só.

Imports Microsoft.Office.Interop
Imports System.Threading.Thread
Imports System.Globalization
Public Class Pesquisa
    Dim aidtra(1) As Integer
    Dim anrpm(1) As String
    Dim adte(1) As DateTime
    Dim adts(1) As DateTime
    Dim aservico(1) As String
    Dim adesconto(1) As String
    Dim atotalhoras(1) As string
    Dim pegatotal As String
    Dim vnomepega As String
    Private Sub Pesquisa_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        dgvTrabalho.AlternatingRowsDefaultCellStyle.BackColor = Color.LightYellow
        dgvTrabalho.Columns(0).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
        dgvTrabalho.Columns(1).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
        dgvTrabalho.Columns(2).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
        dgvTrabalho.Columns(3).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
        dgvTrabalho.Columns(4).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
        dgvTrabalho.Columns(5).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
        PopulaCombo()
        ' Sortmode = nosortable
    End Sub
    Private Sub PopulaCombo()
        Dim cs As String = My.Settings.PontoConnectionString
        Dim conect As New OleDb.OleDbConnection
        conect.ConnectionString = cs
        Try
            conect.Open()
            Dim selcom As New OleDb.OleDbCommand
            selcom.Connection = conect
            selcom.CommandText = "SELECT NRPM from Servidores order by NRPM"
            Dim vleitor As OleDb.OleDbDataReader
            vleitor = selcom.ExecuteReader()
            Dim c As Integer = 0
            cmbNPM.Items.Clear()
            Do While vleitor.Read
                c = c + 1
                ReDim Preserve anrpm(c)
                anrpm(c) = vleitor("NRPM")
                cmbNPM.Items.Add(anrpm(c))
            Loop
            cmbNPM.Text = "Escolha..."
            conect.Close()
        Catch ex As Exception
            MessageBox.Show("Erro de carregamento do combobox!" & vbCrLf & ex.Message, "ERRO", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    End Sub
    Private Sub btnProcessa_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnProcessa.Click
        Dim cs As String = My.Settings.PontoConnectionString
        Dim conect As New OleDb.OleDbConnection
        Dim NPOLICIA As String
        NPOLICIA = cmbNPM.Text
        conect.ConnectionString = cs
        Try
            conect.Open()
            Dim selcom As New OleDb.OleDbCommand
            selcom.Connection = conect
            If CDate(dtpi.Text) > CDate(dtpf.Text) Then
                MessageBox.Show("A data inicial não pode ser maior que a final.", "ERRO", MessageBoxButtons.OK, MessageBoxIcon.Error)
                dtpi.Focus()
                Exit Sub
            End If
            '-----------------------------------------------------------------------
            selcom.CommandText = "SELECT NRPM from Servidores Where NRPM = '" & cmbNPM.Text & "'"
            Dim vexiste As String = selcom.ExecuteScalar
            If Not vexiste = cmbNPM.Text Then
                MessageBox.Show("ERRO. Servidor não está cadastrado no sistema.", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Warning)
                Return
            End If
            '------------------------------------------------------------------------
            selcom.CommandText = "SELECT NOME from Servidores Where NRPM = '" & cmbNPM.Text & "'"
            Dim vnome As String = selcom.ExecuteScalar
            selcom.CommandText = "SELECT  PGRAD from Servidores Where NRPM = '" & cmbNPM.Text & "'"
            Dim vgrad As String = selcom.ExecuteScalar
            selcom.CommandText = "SELECT  NRPM from Servidores Where NRPM = '" & cmbNPM.Text & "'"
            Dim vnrpm As String = selcom.ExecuteScalar
            lblNRPM.Text = vnrpm
            lblNome.Text = vnome
            lblPgrad.Text = vgrad
            vnomepega = lblNome.Text
            '------------------------------------------------------------------------
            selcom.CommandText = "select * from Horas where DATA_ENTRADA>= #" + dtpi.Value.ToString("MM/dd/yyyy 00:00:00") + "# AND DATA_SAIDA <= #" + dtpf.Value.ToString("MM/dd/yyyy 23:59:59") + "# AND NRPM =  '" & NPOLICIA & "' order by DATA_ENTRADA"
            Dim vleitor As OleDb.OleDbDataReader
            vleitor = selcom.ExecuteReader()
            Dim c As Integer = 0
            dgvTrabalho.Rows.Clear()
            Do While vleitor.Read
                c = c + 1
                ReDim Preserve anrpm(c)
                ReDim Preserve aidtra(c)
                ReDim Preserve adte(c)
                ReDim Preserve adts(c)
                ReDim Preserve aservico(c)
                ReDim Preserve adesconto(c)
                ReDim Preserve atotalhoras(c)
                anrpm(c) = vleitor("NRPM")
                aidtra(c) = vleitor("ID")
                adte(c) = vleitor("DATA_ENTRADA")
                adts(c) = vleitor("DATA_SAIDA")
                aservico(c) = vleitor("SERVICO")
                adesconto(c) = vleitor("DESCONTO")
                atotalhoras(c) = vleitor("TOTAL_HORAS")
                dgvTrabalho.Rows.Add(anrpm(c), adte(c), adts(c), aservico(c), adesconto(c), atotalhoras(c))
            Loop
            calcula_hora()
            dgvTrabalho.Rows.Add("Total de Horas:")
            dgvTrabalho.Rows(c).Cells(5).Value = pegatotal
            ToolStripStatusLabel1.Text = "Total de registros retornados na pesquisa: " & dgvTrabalho.RowCount - 1
            conect.Close()
        Catch ex As Exception
            MessageBox.Show("Erro na execução da pesquisa!" & vbCrLf & ex.Message, "ERRO", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
        'Dim datetime1 As String = "2010/11/16 160:00:00"
        'Dim datetime2 As String = "2010/11/16 180:02:00"
        'Dim diferenca As TimeSpan = Convert.ToDateTime(datetime2) - Convert.ToDateTime(datetime1)
        'MessageBox.Show(diferenca.ToString())
    End Sub
    Private Sub btnSair_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSair.Click
        Me.Close()
    End Sub
    Private Sub btnExcel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExcel.Click
        If (dgvTrabalho.RowCount = 0) Then
            MessageBox.Show("Nenhum dado para exportar para o Excel", "Controle de Horas Trabalhadas", MessageBoxButtons.OK, MessageBoxIcon.Information)
        Else
            ExportToExcel(Me.dgvTrabalho, xlsOption.xlsOpen)
        End If
    End Sub
    Enum xlsOption
        xlsSaveAs
        xlsOpen
    End Enum
    '''
    ''' Exporta a informação de uma DataGridView para o Microsoft Excel
    '''
    ''' Nome da DataGridView
    ''' SaveAs ou Open
    ''' Nome completo do ficheiro
    Public Sub ExportToExcel(ByVal dgvName As DataGridView, ByVal [option] As xlsOption, Optional ByVal fileName As String = "")
        Dim objExcelApp As New Excel.Application()
        Dim objExcelBook As Excel.Workbook
        Dim objExcelSheet As Excel.Worksheet

        Try

            ' Se foi seleccionada a opção xlsSaveAs e não foi indicado ficheiro
            If [option] = xlsOption.xlsSaveAs And fileName = String.Empty Then
                MessageBox.Show("É necessário indicar um nome para o ficheiro")
                Exit Sub
            End If

            ' Altera o tipo/localização para Inglês. Existe incompatibilidade
            ' entre algumas versões de Excel vs Sistema Operativo
            Dim oldCI As CultureInfo = CurrentThread.CurrentCulture
            CurrentThread.CurrentCulture = New CultureInfo("en-US")

            ' Adiciona um workbook e activa a worksheet actual
            objExcelBook = objExcelApp.Workbooks.Add
            objExcelSheet = CType(objExcelBook.Worksheets(1), Excel.Worksheet)

            ' Ciclo nos cabeçalhos para escrever os títulos a bold/negrito
            Dim dgvColumnIndex As Int16 = 1
            For Each col As DataGridViewColumn In dgvName.Columns
                objExcelSheet.Cells(1, dgvColumnIndex) = col.HeaderText
                objExcelSheet.Cells(1, dgvColumnIndex).Font.Bold = True
                dgvColumnIndex += 1
            Next

            ' Ciclo nas linhas/células
            Dim dgvRowIndex As Integer = 2

            For Each row As DataGridViewRow In dgvName.Rows

                Dim dgvCellIndex As Integer = 1

                For Each cell As DataGridViewCell In row.Cells
                    objExcelSheet.Cells(dgvRowIndex, dgvCellIndex) = cell.Value
                    dgvCellIndex += 1
                Next

                dgvRowIndex += 1

            Next

            ' Ajusta o largura das colunas automaticamente
            objExcelSheet.Columns.AutoFit()

            ' Caso a opção seja gravar (xlsSaveAs) grava o ficheiro e fecha
            ' o Workbook/Excel. Caso contrário (xlsOpen) abre o Excel
            If [option] = xlsOption.xlsSaveAs Then
                objExcelBook.SaveAs(fileName)
                objExcelBook.Close()
          
   
Lu
não registrado
ENUNCIADA !
Postada em 11/12/2013 09:50 hs   
Não sei se entendi direito, mas nesse caso acho que é mais fácil fazer o select já retornando a quantidade acumulada de horas por funcionário...

select funcionario,sum(horas) from tabela group by funcionario order by funcionario

   
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página