Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

malainhocf

Qual a melhor maneira de preencher uma datagridwiew com dados do SQL SERVER

Recommended Posts

ribeiro55

Para mim, a maneira mais directa é encher uma DataTable com o Fill do DataAdapter, e dar a DataTable ao DataSource da DataGridView.


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites
malainhocf

No livro da fca tem uma maneira mas bastante complexa

Tem assim

--------------------------------------------------------------

Private Sub frmMedicos_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ' Mostra os médicos
        DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
        DataGridView1.AllowUserToAddRows = False
        DataGridView1.AllowUserToDeleteRows = False
        DataGridView1.EditMode = DataGridViewEditMode.EditProgrammatically

        Dim adapter_medicos As New consultasDataSetTableAdapters.medicosTableAdapter
        Dim tab_medicos As New consultasDataSet.medicosDataTable

        adapter_medicos.Fill(tab_medicos)

        Dim coluna As DataColumn
        For Each coluna In tab_medicos.Columns
            DataGridView1.Columns.Add(coluna.ColumnName, coluna.ColumnName)
        Next

        Dim linha As DataRow
        Dim idx_linha As Integer
        Dim idx_coluna As Integer

        idx_linha = 0

        For Each linha In tab_medicos.Rows
            Dim linha_datagrid As New DataGridViewRow
            DataGridView1.Rows.Add(linha_datagrid)
            idx_coluna = 0

            For Each coluna In tab_medicos.Columns
                DataGridView1.Rows(idx_linha).Cells(idx_coluna).Value = tab_medicos.Rows(idx_linha).Item(idx_coluna)
                idx_coluna = idx_coluna + 1
            Next
            idx_linha = idx_linha + 1
        Next
    End Sub

--------------------------------------------------------------

É bem complicado isso


Cumprimentos

Cesar Oliveira

Desenvolvo websites e aplicações web

http://www.profissionalweb.net

Share this post


Link to post
Share on other sites
ribeiro55

Sim, é um pouco moroso.

Depois de:

adapter_medicos.Fill(tab_medicos)

bastava

DataGridView1.DataSource = tab_medicos


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites
jpaulino

O mínimo dos mínimos:

            Dim connString As String = "..."
            Using da As New SqlDataAdapter("SELECT * FROM tabela", connString)
                Using ds As New DataSet
                    da.Fill(ds)
                    Me.DataGridView1.DataSource = ds.Tables(0).DefaultView
                End Using
            End Using

Share this post


Link to post
Share on other sites
Gooden

O mínimo dos mínimos:

            Dim connString As String = "..."
            Using da As New SqlDataAdapter("SELECT * FROM tabela", connString)
                Using ds As New DataSet
                    da.Fill(ds)
                    Me.DataGridView1.DataSource = ds.Tables(0).DefaultView
                End Using
            End Using

exatamente. ou se nao se usares isso em muitos sitios fazes uma funçao que das a datagrid (byref) e a query e depois e so chamar a funçao :(

tipo

PreencheGrid(datagridview1,"Select idcliente nome from clientes")

Share this post


Link to post
Share on other sites
ribeiro55

Vai tal e qual como vem da base de dados.

Cada coluna da datagridview obedece ao datatype da base de dados.

Agora, se o que estás a querer saber é se ela adivinha que uma string a que chames data, é para formatar como data... não adivinha.

Aí terias de usar ali a técnica do livro, para controlares tudo o que entra, e como entra.


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites
jpaulino

Agora, se o que estás a querer saber é se ela adivinha que uma string a que chames data, é para formatar como data... não adivinha.

Aí terias de usar ali a técnica do livro, para controlares tudo o que entra, e como entra.

Não obrigatóriamente!

Podes sempre formatar após carregares os dados. Exemplo:

Me.DataGridView1.Columns("ID").DefaultCellStyle.Format = "dd-MM-yyyy"

Share this post


Link to post
Share on other sites
ribeiro55

Olha, bem lembrado :(

Aí tens malainhocf :(


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites
ribeiro55

Percebi a dica, muito obrigado

Estou sempre a aprender

Estamos sempre a aprender.


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites
bioshock

Eu pessoalmente gosto de usar wizards com unha a unha e não vejo mal nenhum.

Mas cabe a cada um decidir o que melhor gosta.

Share this post


Link to post
Share on other sites
jpaulino

Eu pessoalmente gosto de usar wizards com unha a unha e não vejo mal nenhum.

Mas cabe a cada um decidir o que melhor gosta.

Quando começares a querer flexibilidade, controlo do código e melhor diagnóstico, deixas de usar wizards :(

Share this post


Link to post
Share on other sites
bioshock

Quando começares a queres flexibilidade, controlo do código e melhor diagnóstico, deixas de usar wizards :(

Podes-me dar exemplos em concreto? Eu de alguma forma concordo contigo, no php, pelo menos no dreamweaver, existem certos "wizards", por exemplo de autenticação, e pessoalmente prefiro unha a unha porque podem surgir problemas devido aos wizards.

Share this post


Link to post
Share on other sites
malainhocf

No ColdFusion gosto de escrever tudo a unha, só uso o dreamweaver para me ajudar a escrever o código e para ser mais rápido a escrever o código

No PHP também é como com o ColdFusion,

Mas não existe linguagem mais fácil de aprender do que o ColdFusion


Cumprimentos

Cesar Oliveira

Desenvolvo websites e aplicações web

http://www.profissionalweb.net

Share this post


Link to post
Share on other sites
malainhocf

E se o campo for um campo chamado activo em que tanto pode ter na base de dados um S ou um N e eu quero formatar o S para Sim e o N para Não

Posso fazer isso ?

Obrigado


Cumprimentos

Cesar Oliveira

Desenvolvo websites e aplicações web

http://www.profissionalweb.net

Share this post


Link to post
Share on other sites
passado

Existe outras formas, que depois de carregares os dados testas o que esta na celula e consuante isso ele altera o conteudo, eu usava este método para colocar imagens consoante o que a base de dados tinha 

Share this post


Link to post
Share on other sites
ByMySlf

Existe outras formas, que depois de carregares os dados testas o que esta na celula e consuante isso ele altera o conteudo, eu usava este método para colocar imagens consoante o que a base de dados tinha 

Como é óbvio, existem sempre várias formas de fazer as coisas.

Mas se já está a efectuar uma query à BD para trazer os dados e tem a possibilidade que estes venham devidamente formatados, acho desnecessário andar a efectuar a formatação dos mesmos através do código.

Share this post


Link to post
Share on other sites
passado

Como é óbvio, existem sempre várias formas de fazer as coisas.

Mas se já está a efectuar uma query à BD para trazer os dados e tem a possibilidade que estes venham devidamente formatados, acho desnecessário andar a efectuar a formatação dos mesmos através do código.

Parti do principio que ele poderia nao saber fazer a formatação, alteração na query...

e dar a conhecer outras formas poderia ele nao conhecer de por exemplo em vez de texto colocar imagens....

Share this post


Link to post
Share on other sites
malainhocf

Olá, bom dia,

Dêm-me um exemplo como posso fazer isso na consulta a base de dados e como alterar os campos depois deles já terem sido colocados na datagridview

Obrigado


Cumprimentos

Cesar Oliveira

Desenvolvo websites e aplicações web

http://www.profissionalweb.net

Share this post


Link to post
Share on other sites
ByMySlf

Parti do principio que ele poderia nao saber fazer a formatação, alteração na query...

e dar a conhecer outras formas poderia ele nao conhecer de por exemplo em vez de texto colocar imagens....

Exacto, passado. Com a minha resposta apenas estava a referir qual achava a melhor forma de o fazer.

malainhocf, agora estou sem tempo, mas assim que seja possível tento explicar.

Share this post


Link to post
Share on other sites
ByMySlf

Na query SQL metes algo como isto...

CASE WHEN nomedocampo='S' THEN 'SIM' WHEN nomedocampo='N' THEN 'NÃO' END as nomedocampo

Share this post


Link to post
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

×

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.