Jump to content
dipacheco

Datareader em datatable

Recommended Posts

dipacheco

Pessoal... este código que vou postar em baixo nao deveria preencher a tabela toda com os valores do reader??

command = New SqlCommand("SELECT Data1,Data2 FROM Teste WHERE Codigo ='" & teste.TextBox2.Text & "'", connect)
        reader = command.ExecuteReader
        Dim tabela As New DataTable
        tabela.Load(reader)

É que depois faço um teste e ele só tem dados na row(0) e na row(1) e sao os ultimos dados lidos no reader... os primeiros nao ficam.

Share this post


Link to post
Share on other sites
Caça

Porque é que não preenches directamente o DataTable através de um DataAdatpter?


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
Caça

Tipo isto

Dim Da As New SqlClient.SqlDataAdapter("Consulta SQL", "Conecção à Base de Dados")
Dim Dt As New DataTable
Da.Fill(Dt)


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
dipacheco

era suposto ao fazer este codigo ela dar resultados... certo?

For Each row2 As DataRow In tabela.Rows
            TextBox5.Text = row2(2) & " ------- " & row2(3)
        Next

eu tenho pelo menos 6 dados que o meu select deveria retornar...

Share this post


Link to post
Share on other sites
dipacheco

mas nao retorna nada... lol fica a textbox vazia...

Dim command2 As New SqlClient.SqlDataAdapter("SELECT DataI,Sintomatologia FROM Consulta WHERE Codigo ='" & menuconsulta.TextBox2.Text & "'", connect)
Dim tabela As New DataTable
command2.Fill(tabela)

For Each row As DataRow In tabela.Rows
            TextBox5.Text = row(2) & " ------- " & row(3)
Next

Share this post


Link to post
Share on other sites
Caça

Quantas linhas está a retornar?

Verifica se está a entrar no ciclo.


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
dipacheco

está a retornar a 2 linhas

passo a explicar... na minha tabela sql tem varios codigos iguais (que tenho que ter), e ao encontrar esse codigo ele deveria tirar data e sintomas.

Tipo:

Codigo      Data      Sintomas

1              23-02    X

1              24-02    Y

2              24-02    Z

1              25-02    Q

Com o código que eu estou a fazer ele retorna a data da primeira linha e o sintoma da 2ª, ao pesquisar por codigo = 1. Porque será?

Share this post


Link to post
Share on other sites
dipacheco

NOTA: quando fazia com executereader ele sacava os dados todos... so q eu n colocava numa datatable... mas agora preciso ... basicamente preciso d criar a datatable com 2 colunas... e escrever o reader(0) e o reader(1) em colunas A,B... em ciclo enquanto reader.read

Como se faz isto?

Share this post


Link to post
Share on other sites
dipacheco

mesmo começando em zero deveria dar algo...

como posso imprimir a tabela toda?

Share this post


Link to post
Share on other sites
Caça

Já te certificaste se está a entrar no ciclo?


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
dipacheco

Dim aux As Integer = 0
        For Each row As DataRow In tabela.Rows
            'TextBox5.Text = row(aux)
            MsgBox(row(aux))
            aux += 1
        Next

Só imprime 2 valores... quando deveria imprimir 6!

Share this post


Link to post
Share on other sites
dipacheco

e pior... o select pede 2 campos quando o codigo é 1...

ele envia o 1º campo da primeira vez q encontra o codigo 1

e o 2º campo da segunda vez q encontra o codigo 1

qnd deveria mandar 1º e 2º campos mal encontrasse o codigo 1

Share this post


Link to post
Share on other sites
dipacheco

como assim? lol

eu fiz o q m disseste para fazer com o sqldataadapter... basicamente. pensei q preenchesse a tabela toda qnd fiz command2.fill(tabela) e nao o está a fazer.

Share this post


Link to post
Share on other sites
Caça

        For Each dr As DataRow In DT.Rows
            MsgBox(dr(0)) 'Devolve o registo da coluna 0 não o registo da linha 0..
        Next

Isto é um For Each não é um For normal


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
dipacheco

entendi... :) obrigado...

ha maneira de aceder a uma linha especifica para sacar os dados sem correr um ciclo for?

tipo... imagina que quero a primeira linha da tabela (coluna 1 e 2) para uma textbox. posso fazer isto?

Share this post


Link to post
Share on other sites
Caça
TextBox1.Text = DT.Rows(0)(0) & "-----" & DT.Rows(0)(1)


Pedro Martins

Não respondo a duvidas por PM

Share this post


Link to post
Share on other sites
dipacheco

ainda ando às voltas com isto! alguem m sabe dizer se consigo imprimir um datatable num report? se conseguir é mais simples pra mim!

Share this post


Link to post
Share on other sites
Caça

Já tens um tópico aberto sobre isso, coloca as duvidas nele.


Pedro Martins

Não respondo a duvidas por PM

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

×
×
  • Create New...

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.