Erasmo luan Posted July 28, 2023 at 02:42 AM Report Share #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.😁 Link to comment Share on other sites More sharing options...
Cerzedelo Posted July 28, 2023 at 08:07 AM Report Share #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 Link to comment Share on other sites More sharing options...
iznougudpt Posted July 28, 2023 at 01:03 PM Report Share #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. Link to comment Share on other sites More sharing options...
Erasmo luan Posted July 30, 2023 at 03:11 AM Author Report Share #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 Link to comment Share on other sites More sharing options...
Erasmo luan Posted July 30, 2023 at 03:24 AM Author Report Share #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 Link to comment Share on other sites More sharing options...
Erasmo luan Posted July 30, 2023 at 04:05 AM Author Report Share #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 Link to comment Share on other sites More sharing options...
Cerzedelo Posted July 30, 2023 at 03:31 PM Report Share #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. Link to comment Share on other sites More sharing options...
Erasmo luan Posted August 1, 2023 at 12:22 AM Author Report Share #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 Link to comment Share on other sites More sharing options...
Cerzedelo Posted August 1, 2023 at 02:13 PM Report Share #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. Link to comment Share on other sites More sharing options...
Erasmo luan Posted August 3, 2023 at 12:14 AM Author Report Share #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 Link to comment Share on other sites More sharing options...
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