Erasmo luan Posted July 28, 2023 at 02:42 AM Report #631591 Posted July 28, 2023 at 02:42 AM 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.😁
Cerzedelo Posted July 28, 2023 at 08:07 AM Report #631592 Posted July 28, 2023 at 08:07 AM (edited) 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 July 28, 2023 at 08:07 AM by Cerzedelo
iznougudpt Posted July 28, 2023 at 01:03 PM Report #631596 Posted July 28, 2023 at 01:03 PM 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.
Erasmo luan Posted July 30, 2023 at 03:11 AM Author Report #631601 Posted July 30, 2023 at 03:11 AM (edited) 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 July 30, 2023 at 04:01 AM by Erasmo luan
Erasmo luan Posted July 30, 2023 at 03:24 AM Author Report #631602 Posted July 30, 2023 at 03:24 AM (edited) 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 July 30, 2023 at 03:58 AM by Erasmo luan
Erasmo luan Posted July 30, 2023 at 04:05 AM Author Report #631603 Posted July 30, 2023 at 04:05 AM 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
Cerzedelo Posted July 30, 2023 at 03:31 PM Report #631604 Posted July 30, 2023 at 03:31 PM 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.
Erasmo luan Posted August 1, 2023 at 12:22 AM Author Report #631619 Posted August 1, 2023 at 12:22 AM 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
Cerzedelo Posted August 1, 2023 at 02:13 PM Report #631620 Posted August 1, 2023 at 02:13 PM 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.
Erasmo luan Posted August 3, 2023 at 12:14 AM Author Report #631636 Posted August 3, 2023 at 12:14 AM 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
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now