Jump to content

Sistema de guia de cirurgia


Erasmo luan

Recommended Posts

Preciso de ajuda, estou criando um sistema de guia de cirurgia e preciso que o código passe por cada linha do datagridview1 e cada vez que o nome do medico aparecer ele colocar em outro datagrid2 quantas vez o nome apareceu, mas preciso fazer isso em quando ele lista os nome que estiverem datagridview1. "tipo um cont.se do excel" para quele que sabe o que este formular.

Agradeço que pode ajudar.😁

Link to comment
Share on other sites

Em 28/07/2023 às 03:42, Erasmo luan disse:

Preciso de ajuda, estou criando um sistema de guia de cirurgia e preciso que o código passe por cada linha do datagridview1 e cada vez que o nome do medico aparecer ele colocar em outro datagrid2 quantas vez o nome apareceu, mas preciso fazer isso em quando ele lista os nome que estiverem datagridview1. "tipo um cont.se do excel" para quele que sabe o que este formular.

Agradeço que pode ajudar.😁

Se é só para contar quantas vezes o nome do médico está presente nas linhas do datagridview não precisa de um segundo datagridview. Basta uma textbox ou um Label onde mostrar a informação. 

Para obter essa informação basta fazer um ciclo for que percorra toda a datagridview entre a linha 0 e o final obtido com datagridview.Rows.Count -1 e sempre que o valor da célula for igual ao nome que seleccionou implementa um contador que vai contado o número de vezes que o nome surge.

Agora se pretende que ao selecionar o nome na datagridview1, lhe aparece outros dados associados a esse nome numa datagridview2, o melhor procedimento é criar uma nova instrução SQL onde o comando select seja sujeito a seleção desse nome.

Edited by Cerzedelo
Link to comment
Share on other sites

Em 28/07/2023 às 03:42, Erasmo luan disse:

Preciso de ajuda, estou criando um sistema de guia de cirurgia e preciso que o código passe por cada linha do datagridview1 e cada vez que o nome do medico aparecer ele colocar em outro datagrid2 quantas vez o nome apareceu, mas preciso fazer isso em quando ele lista os nome que estiverem datagridview1. "tipo um cont.se do excel" para quele que sabe o que este formular.

Agradeço que pode ajudar.😁

Sempre que inserir uma linha na grid1 vai verificar na grid2 se esse nome já existe. Se existir incrementa o nº, se não existir adiciona nova linha na grid2 com o nome do médico e nº 1.

Quando o loop terminar a grid1 tem todos os registos e a grid 2 tem a lista de todos os nomes e o nº de vezes que cada nome apareceu.

Isto se estiver a inserir na grid1 linha a linha, se estiver a preecher pelo datasource tem de fazer um loop que vá linha a linha da grid1 e faça o mesmo mecanismo que indiquei em cima.

Link to comment
Share on other sites

Em 28/07/2023 às 10:03, iznougudpt disse:

Sempre que inserir uma linha na grid1 vai verificar na grid2 se esse nome já existe. Se existir incrementa o nº, se não existir adiciona nova linha na grid2 com o nome do médico e nº 1.

Quando o loop terminar a grid1 tem todos os registos e a grid 2 tem a lista de todos os nomes e o nº de vezes que cada nome apareceu.

Isto se estiver a inserir na grid1 linha a linha, se estiver a preecher pelo datasource tem de fazer um loop que vá linha a linha da grid1 e faça o mesmo mecanismo que indiquei em cima.

eu ate entendi mais não sei como fazer. teria com fazer o codigo de exemplo. e sim estou usando um datasource em sqlite.

 

vou explicar melhor.

E um sistema de Protocolo de guias de cirurgia onde crio uma protocolo com vários nomes de paciente e médicos diferente. e quero que quando o nome do medico aparecer na base de dados do protocolo seja contada numero de vez para cria uma indicado para qual médica emite mais guia de cirurgia e isso tem que aparecer para cada medico que esta na relação do corpo clinico que base de dados onde está os nome dos medico

 

Edited by Erasmo luan
Link to comment
Share on other sites

Em 28/07/2023 às 05:07, Cerzedelo disse:

Se é só para contar quantas vezes o nome do médico está presente nas linhas do datagridview não precisa de um segundo datagridview. Basta uma textbox ou um Label onde mostrar a informação. 

Para obter essa informação basta fazer um ciclo for que percorra toda a datagridview entre a linha 0 e o final obtido com datagridview.Rows.Count -1 e sempre que o valor da célula for igual ao nome que seleccionou implementa um contador que vai contado o número de vezes que o nome surge.

Agora se pretende que ao selecionar o nome na datagridview1, lhe aparece outros dados associados a esse nome numa datagridview2, o melhor procedimento é criar uma nova instrução SQL onde o comando select seja sujeito a seleção desse nome.

Seria interessante mas não quero precisar digitar o nome do medico pois ele esta em uma base de dados em sqlite.

Vou explicar melhor o que e o sistema.

E um sistema de Protocolo de guias de cirurgia onde crio uma protocolo com vários nomes de paciente e médicos diferente. e quero que quando o nome do medico aparecer na base de dados do protocolo seja contada numero de vez para cria uma indicado para qual médica emite mais guia de cirurgia

e isso tem que aparecer para cada medico que esta na relação do corpo clinico que base de dados onde está os nome dos medico.

  eu não tenho a menor ideia de como começa este código por isso pedir ajuda aqui.

 

Edited by Erasmo luan
Link to comment
Share on other sites

Em 27/07/2023 às 23:42, Erasmo luan disse:

Preciso de ajuda, estou criando um sistema de guia de cirurgia e preciso que o código passe por cada linha do datagridview1 e cada vez que o nome do medico aparecer ele colocar em outro datagrid2 quantas vez o nome apareceu, mas preciso fazer isso em quando ele lista os nome que estiverem datagridview1. "tipo um cont.se do excel" para quele que sabe o que este formular.

Agradeço que pode ajudar.😁

tente fazer sugerido por  o código iznougudpt, mas só ler primeira linha

 Public Sub contaguia()
        Dim cont As Integer

        For i = 0 To dgvProtocolo.RowCount - 1

            If fmGuiaCirurgiaPorMedico.dgvCorpoClinico.RowCount Then


                If fmGuiaCirurgiaPorMedico.dgvCorpoClinico.CurrentRow().Cells("Medico").Value = dgvProtocolo.Rows(i).Cells("MedicoR").Value.ToString Then
                    cont = cont + 1
                    fmGuiaCirurgiaPorMedico.dgvCorpoClinico.CurrentRow().Cells("GuiaCirurgia").Value = cont

                End If
            Else

            End If


        Next
    End Sub

e já tem dois nomes de médicos diferente que se repente e outro que não. O codigo le  a linha preenche com 4 ok ta certo mais as demais fica em branco

Link to comment
Share on other sites

Em 30/07/2023 às 05:05, Erasmo luan disse:

tente fazer sugerido por  o código iznougudpt, mas só ler primeira linha

 Public Sub contaguia()
        Dim cont As Integer

        For i = 0 To dgvProtocolo.RowCount - 1

            If fmGuiaCirurgiaPorMedico.dgvCorpoClinico.RowCount Then


                If fmGuiaCirurgiaPorMedico.dgvCorpoClinico.CurrentRow().Cells("Medico").Value = dgvProtocolo.Rows(i).Cells("MedicoR").Value.ToString Then
                    cont = cont + 1
                    fmGuiaCirurgiaPorMedico.dgvCorpoClinico.CurrentRow().Cells("GuiaCirurgia").Value = cont

                End If
            Else

            End If


        Next
    End Sub

e já tem dois nomes de médicos diferente que se repente e outro que não. O codigo le  a linha preenche com 4 ok ta certo mais as demais fica em branco

Quanto a questão de existirem 2 médicos com o mesmo nome, e a contagem ser em duplicado, resolve a questão se em vez do nome tiver um ID ou número mecanográfico do médico, dado que a partida cada médico tem um número único.

Em relação ao código que apresentou atente no seguinte: 

- primeiro o cont, convém ser iniciado ou seja cont=0

- segundo, simplifique a construção do seu código num passo a passo de forma a resolver o problema. Dentro do for e de forma manual onde tem 

Citação

fmGuiaCirurgiaPorMedico.dgvCorpoClinico.CurrentRow().Cells("Medico").Value = dgvProtocolo.Rows(i).Cells("MedicoR").Value.ToString Then

no igual passe o nome de um médico que tenha na base de dados, via string, i.e. entre aspas

-terceiro, a impressão do cont, deve ser efectuada fora do ciclo for, para a presentar a contagem correcta.

Se isto funcionar tem o seu problema em parte resolvido, o que tem que fazer a seguir é pegar o nome ou número do médico na linha que selecionar através do selectedrows ou do selectedcells e depois passar o valor via variável.

Link to comment
Share on other sites

Em 30/07/2023 às 12:31, Cerzedelo disse:

Quanto a questão de existirem 2 médicos com o mesmo nome, e a contagem ser em duplicado, resolve a questão se em vez do nome tiver um ID ou número mecanográfico do médico, dado que a partida cada médico tem um número único.

Em relação ao código que apresentou atente no seguinte: 

- primeiro o cont, convém ser iniciado ou seja cont=0

- segundo, simplifique a construção do seu código num passo a passo de forma a resolver o problema. Dentro do for e de forma manual onde tem 

no igual passe o nome de um médico que tenha na base de dados, via string, i.e. entre aspas

-terceiro, a impressão do cont, deve ser efectuada fora do ciclo for, para a presentar a contagem correcta.

Se isto funcionar tem o seu problema em parte resolvido, o que tem que fazer a seguir é pegar o nome ou número do médico na linha que selecionar através do selectedrows ou do selectedcells e depois passar o valor via variável.

Primeiramente obrigado mas não funcionou

e sobre o metodo selecterows ou selectedcells eu não quero ter que clicar quero isso automático.

Devo está fazendo alguma coisa errada pois não funcionou

a e detalhe eu estou usando este método dentro class que faz o carregamento do banco de dados a pois ele preencher o datasouce.

codigo

 Public Sub contaguia()

        Dim cont As Integer = 0

        For i = 0 To dgvProtocolo.RowCount - 1

            If fmGuiaCirurgiaPorMedico.dgvCorpoClinico.RowCount - 1 Then

                If fmGuiaCirurgiaPorMedico.dgvCorpoClinico.CurrentRow().Cells("Medico").Value = dgvProtocolo.Rows(i).Cells("MedicoR").Value.ToString Then

                    cont = cont + 1

                End If

            Else

            End If


        Next

        fmGuiaCirurgiaPorMedico.dgvCorpoClinico.CurrentRow().Cells("GuiaCirurgia").Value = cont

 

mesmo quando coloco dgvProtocolo.Rows(i).Cells("MedicoR").Value = i.tostring da no mesmo

Link to comment
Share on other sites

Em 01/08/2023 às 01:22, Erasmo luan disse:

Primeiramente obrigado mas não funcionou

e sobre o metodo selecterows ou selectedcells eu não quero ter que clicar quero isso automático.

Devo está fazendo alguma coisa errada pois não funcionou

a e detalhe eu estou usando este método dentro class que faz o carregamento do banco de dados a pois ele preencher o datasouce.

codigo

 Public Sub contaguia()

        Dim cont As Integer = 0

        For i = 0 To dgvProtocolo.RowCount - 1

            If fmGuiaCirurgiaPorMedico.dgvCorpoClinico.RowCount - 1 Then

                If fmGuiaCirurgiaPorMedico.dgvCorpoClinico.CurrentRow().Cells("Medico").Value = dgvProtocolo.Rows(i).Cells("MedicoR").Value.ToString Then

                    cont = cont + 1

                End If

            Else

            End If


        Next

        fmGuiaCirurgiaPorMedico.dgvCorpoClinico.CurrentRow().Cells("GuiaCirurgia").Value = cont

 

mesmo quando coloco dgvProtocolo.Rows(i).Cells("MedicoR").Value = i.tostring da no mesmo

Se bem percebi, o que pretende é que por cada um dos médicos da base de dados, seja apresentada  a informação de quantas guias de cirurgia ele emitiu, isto de forma automática e para todos os médicos.

Embora isso seja possível ser feito programaticamente desde uma datagridview ou mesmo datasource, é um código muito complexo e pelos seus conhecimentos que mostrou será bastante complicado elaborá-lo.

Por isso, o mais rápido e mais fácil será utilizar a linguagem SQL através do comando SELECT Count() GROUP BY, que pode integrar com o vb.net ou em alternativa usar LINQ, que se encontra integrada no vb.net e lhe permite fazer querys a uma base de dados. 

Veja o seguinte exemplo e tente adaptar à sua situação:

Public Class Form1

Dim con As New OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source = C:\Ders\ders.mdb")
Dim cmd As OleDbCommand

Dim da As OleDbDataAdapter
Dim ds As New DataSet
Dim dt As DataTable()
Dim sql As String

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click


sql = "SELECT Count(medico), medico FROM protocolo GROUP BY medico"
Try
con.Open()
da = New OleDbDataAdapter(sql, con)
da.Fill(ds)


Dim DataGridView1 As New DataGridView

Controls.Add(DataGridView1)
DataGridView1.DataSource = (ds.Tables(0))
con.Close()
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub

Este exemplo utiliza um comando sql para slecionar os dados pretendidos na base de dados, e depois preenche uma datagridview com os dados dessa consulta.

 

 

Link to comment
Share on other sites

Em 01/08/2023 às 11:13, Cerzedelo disse:

Se bem percebi, o que pretende é que por cada um dos médicos da base de dados, seja apresentada  a informação de quantas guias de cirurgia ele emitiu, isto de forma automática e para todos os médicos.

Embora isso seja possível ser feito programaticamente desde uma datagridview ou mesmo datasource, é um código muito complexo e pelos seus conhecimentos que mostrou será bastante complicado elaborá-lo.

Por isso, o mais rápido e mais fácil será utilizar a linguagem SQL através do comando SELECT Count() GROUP BY, que pode integrar com o vb.net ou em alternativa usar LINQ, que se encontra integrada no vb.net e lhe permite fazer querys a uma base de dados. 

Veja o seguinte exemplo e tente adaptar à sua situação:

Public Class Form1

Dim con As New OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source = C:\Ders\ders.mdb")
Dim cmd As OleDbCommand

Dim da As OleDbDataAdapter
Dim ds As New DataSet
Dim dt As DataTable()
Dim sql As String

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click


sql = "SELECT Count(medico), medico FROM protocolo GROUP BY medico"
Try
con.Open()
da = New OleDbDataAdapter(sql, con)
da.Fill(ds)


Dim DataGridView1 As New DataGridView

Controls.Add(DataGridView1)
DataGridView1.DataSource = (ds.Tables(0))
con.Close()
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub

Este exemplo utiliza um comando sql para slecionar os dados pretendidos na base de dados, e depois preenche uma datagridview com os dados dessa consulta.

 

 

Obrigado eu adaptei o codigo para funcionar no sqlite deu certo

 

Link to comment
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
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.