GARREGAR_DATAGRIDVIEW

FERRAZ 10/09/2015 11:48:40
#451222
Boa tarde a todos.

Amigos como faço para popular um datagridview e digitar em um textbox um nome qualquer e o mesmo focar no grid.

Tentei baixar alguns exemplos aqui no site mais não conseguir ao clicar no botão download o mesmo não baixa nada porém solicita minha avaliação, por este motivo não coloco um começo de codigo.

Grato,
FERRAZ 10/09/2015 12:43:21
#451226
Estou tentando criar uma function para popular e procurar no datagridview um registro qualquer no bd mysql;

  Public Function Psq_Bd(ByVal Campo As String) As DataTable
Dim Sql As String
Sql = ([Ô]SELECT * FROM TbFerrtas Where Nome Like [ô][Ô] & TxtNome.Text & [Ô]%[ô] Order By Registro DESC LIMIT 1[Ô])

Dim ds As New DataSet
Dim Conexao As New Conn
Dim objConexao As New MySqlConnection(Conexao.strCon)
objConexao.Open()
DtaGdView.DataSource = ds.Tables([Ô]TbFerrtas[Ô])


objConexao.Close()
Return DtaGdView.DataSource
End Function


Favor estou com muita dificuldade no .net mais vou conseguir pegar a rotina e depois dessa luta eu nunca mais vou parar de programar por problemas pessoas.

Grato,
ACCIOLLY 10/09/2015 15:36:36
#451240
Resposta escolhida
Para selecionar um linha conforme um registro basta fazer um loop

Ex:
Colunas: Código | Nome | DataNascimento
01 |Alice | 31/03/1974
02 |Sofia | 30/11/2010

Se eu for fazer uma busca por Nome, então o indice do meu data grid será 1(já que temos 3 colunas e o indice delas será 0,1,2)

Vamos lá

Dim criterio As String = Text1.Text [ô]pega o texto pra procurar
Dim qtLinhas As Integer = DataGridView.Rows.Count [ô]pega a quantidade de linhas

For linha As Integer = 0 To linha < qtLinhas
if DataGridView1.Rows(linha).Cells(1).Value.ToString = criterio Then
DataGridView1.Rows(linha).Selected = true;
End If

Next

Repare que no IF (Cells(1)) o numero 1 representa a posição da coluna dentro do datagrid sempre começando do 0
FERRAZ 10/09/2015 15:54:06
#451241
Acciolly, estou eu querendo me adaptar com o .net.


Obrigado.
FERRAZ 10/09/2015 16:09:54
#451242
Acciolly, bom vou montar a buscar certinho depois que eu popular o grid, ainda não conseguir realizar essa missão, favor vc pode me passar uma instrução.

Grato.
NICKOSOFT 10/09/2015 18:52:33
#451246
veja bem....
pra popular o grid com o código q vc usou inicialmente, não pode ser function....
veja q por padrão function retorna algo....e vc teoricamente já populou o grid, não entendi pq usou o limit 1 pra pegar apenas um registro e popular dessa forma o grid, pq recebe um parâmetro nessa function se não o utiliza, mas reparei q vc não fez exatamente a consulta pra poder popular o grid
preenchendo o grid, ta em access mas vc adapta sem problemas
  
Dim Sql As String = [Ô]select * from cadcliente order by data asc[Ô]

Dim conexao As OleDbConnection
conexao = New OleDbConnection([Ô]Provider=Microsoft.ACE.OLEDB.12.0;data source=[Ô] & Application.StartupPath & [Ô]\empresarial.accdb;[Ô])
conexao.Open()

Dim ds As DataSet = Nothing
Dim da As New OleDbDataAdapter(Sql, conexao)
ds = New DataSet()
da.Fill(ds)
DataGridView1.DataSource = ds.Tables(0)

pesquisa apenas adaptando e corrigindo detalhes do código postado pelo colega
  
Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
Dim criterio As String = TextBox1.Text [ô]pega o texto pra procurar
Dim qtLinhas As Integer = DataGridView1.Rows.Count [ô]pega a quantidade de linhas

For linha As Integer = 0 To qtLinhas - 1
If DataGridView1.Rows(linha).Cells(2).Value.ToString = criterio Then
DataGridView1.Rows(linha).Selected = True
Exit For
End If
Next
End Sub

ACCIOLLY 10/09/2015 23:20:33
#451251
é quenem o nosso colega NIKOSOFT Falou. Pois pelo que entendi vc popula sua grid com vários registros e dentre esses registros na grid vc vai fazer uma busca que vai usar como critério o valor dentro de um textbox. Caso a sua busca na grid encontre algo, a linha deve ser selecionada ou focada como vc mesmo disse.
Mas a sua SQL já tá retornando apenas o ultimo registro do banco. Portanto a grid só vai ter uma linha. Pra solucionar isso é só retirar o DESC LIMIT 1 que tá resolvido. A cláusula [Ô]ORDER BY campoTabela[Ô] é pra dizer que ela vai estar na ordem do campo da tabela, [Ô]ASC[Ô] ou [Ô]DESC[Ô] é pra dizer se vai ser na ordem crescente ou decrescente, e [Ô]LIMIT[Ô] é pra limitar a pesquisa. Daí [Ô]DESC LIMIT 1[Ô] quer dizer que vai selecionar apenas 1 registro na ordem decrescente, ou seja, o ultimo.

[txt-color=#0000f0]Lembrando que você deve atentar-se ao indice do grid. Suponhando que ele tenha 3 colunas os indices dela serão 0(coluna1),1(coluna2),2(coluna3) especificamente nessa ordem.[/txt-color]

Desde já agradeço o nosso colega NIKOSOFT por ter corrigido o problema no loop. Eu não costumo trabalhar com VB e sim com o C#. O que fiz foi apenas uma adaptação, e fazer isso sem a IDE instalada é meio complicado! rsrsrs
Poxa cara por minutos eu fiquei me perguntando, qual a diferença

Disso:
For linha As Integer = 0 To linha < qtLinhas


pra isso:

For linha As Integer = 0 To qtLinhas - 1


Não me leve a mal é que como eu disse eu só fiz uma adaptação que no c# é assim:

for(int linha = 0; linha < qtLinhas; linha++)


Mas aí eu fiz o teste de mesa e entendi! rsrsrsr

Té mais
NICKOSOFT 11/09/2015 00:06:57
#451252
kkk na verdade isso eu não entendi
  
For linha As Integer = 0 To linha < qtLinhas

no vb estaria dizendo faca linha = 0 até linha menor q qtlinhas o q no meu entendimento na primeira interação já sairia, pq linha seria 0 e qtlinhas teoricamente maior q 0
notei o costume com c# pelo ; dentro do if
agora resta ver se vai servir pro colega, se ele vai adaptar sem problemas ao banco dele, essa migração não é fácil, qnd vim do vb5 pro .net já vim entrando no sistema de camadas q foi duro, tentei deixar mais simples possível e todo num evento so pra não criar confusão....
FERRAZ 11/09/2015 07:49:27
#451258
Acciolly, Nickosoft, bom dia.

Olha eu fico fiz de fazer parte desse forum, tenho todo certeza que vou entender o .net porque posso contar com a força de todos aqui. Obrigado amigos.

Vou pegar as intruções de vcs e depois posto o resultado para acompanhamento de todos.

Grato,
FERRAZ 11/09/2015 11:55:33
#451273
Amigos, tudo bem.

Olha fiz as adaptações e não populou onde estou errando vejam;
Citação:

Imports MySql.Data.MySqlClient
Imports System
Imports MySql.Data
Imports MySql.Data.MySqlClient.MySqlDataReader
Imports MySql.Data.MySqlClient.MySqlConnection
Imports Abbcinto.Conn
Public Class FrmBd

Private Sub FrmBd_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim Sql As String = ([Ô]SELECT * FROM TbFerrtas Where Nome Like [ô][Ô] & TxtNome.Text & [Ô]%[ô] Order By Registro[Ô])
Dim Conexao As MySqlConnection
Conexao = New MySqlConnection([Ô]server=[Ô] & [Ô]localhost[Ô] & [Ô]; user id=[Ô] & [Ô]root[Ô] & [Ô]; password=[Ô] & [Ô]1[Ô] & [Ô]; database=[Ô] & [Ô]Transpetro[Ô] & [Ô];Convert Zero Datetime=True;Allow User Variables=True[Ô])
Conexao.Open()
Dim ds As DataSet = Nothing
Dim da As New MySqlDataAdapter(Sql, Conexao)
ds = New DataSet()
da.Fill(ds)
DtaGdView.DataSource = ds.Tables([Ô]TbFerrtas[Ô])
Conexao.Close()

End Sub

End Class



Detalhe eh que não tem mesagem de erro algum, porem não popula.

Grato,
NICKOSOFT 11/09/2015 14:01:26
#451286
pq vc passa um filtro pra query?
ele vai no máximo alimentar sua grid com os registros q o nome seja igual ao txtnome%
e aqui
 DtaGdView.DataSource = ds.Tables([Ô]TbFerrtas[Ô])  
informe assim
DtaGdView.DataSource = ds.Tables(0)   

não me recordo, mas acho q se cria sem nome a tb ela não pode ser chamado por nome
Página 1 de 2 [18 registro(s)]
Tópico encerrado , respostas não são mais permitidas