GARREGAR_DATAGRIDVIEW
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,
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,
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
Obrigado.
Grato.
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
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
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....
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,
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,
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