Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

brissolare

Linha e Coluna do DataReader

Recommended Posts

Fala Pessoal,

 

Estou precisando saber como eu faço para recuperar alem da coluna a linha do datareader

 

Vou explicar:

 

Tenho dois resultados do meu select e cada um desses resultados tem que ir para um textbox nome e telefone

 

O que nao estou conseguindo e pegar esses dois resultados e jogar nos textbox só vai o primeiro resultado, que seria primeira linha e a segunda nao consigo pegar...

 

Alguem pode me ajudar a resolver isso, creio que de para pegar a linha alem da colona. Hj eu uso o seguinte código

 

txtnome.Text = r[6].tostring();

txttelefone.Text = r[6].tostring();

 

tem como colocar a linha nesse codigo ai?Pois tenho o textnome2 e texttelefone2

 

Espero que tenham entendido

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

DataReader é forward-only e read-only, isso quer dizer que os registros do datareader não podem ser alterados e você só pode ler para frente. Por isso você não consegue acessar os valores do DataReader com índices. O código que você usou [6], vai pegar a sexta coluna do resultado, e não a linha.

Você tem certeza que sempre vai trazer dois registros?

Se sim, você pode fazer assim:

if (r.Read()) //Avança para a primeira linha.
{ 
   txtNome.Text = r.GetString(0); //Pega o valor da primeira coluna
   txtTelefone.Text = r.GetString(1); //Pega o valor da primeira coluna
}

if (r.Read()) //Avança para a segunda linha.
{
   txtNome2.Text = r.GetString(0); //Pega o valor da primeira coluna
   txtTelefone2.Text = r.GetString(1); //Pega o valor da primeira coluna
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

DataReader é forward-only e read-only, isso quer dizer que os registros do datareader não podem ser alterados e você só pode ler para frente. Por isso você não consegue acessar os valores do DataReader com índices. O código que você usou [6], vai pegar a sexta coluna do resultado, e não a linha.

Você tem certeza que sempre vai trazer dois registros?

Se sim, você pode fazer assim:

if (r.Read()) //Avança para a primeira linha.
{ 
   txtNome.Text = r.GetString(0); //Pega o valor da primeira coluna
   txtTelefone.Text = r.GetString(1); //Pega o valor da primeira coluna
}

if (r.Read()) //Avança para a segunda linha.
{
   txtNome2.Text = r.GetString(0); //Pega o valor da primeira coluna
   txtTelefone2.Text = r.GetString(1); //Pega o valor da primeira coluna
}

Boa noite Amigo Oenning,

 

Obrigado pela supreendente dica!! Apesar de simples não tinha idéia da "peculiaridade" dessa função, que se chamasse novamente a função read() ele pularia o proximo campo. Isso resolve meu problema por hora!

Agora uma outra pergunta, não preciso do código e sim de uma luz para imaginar como fazer! Um rascunho se assim podemos chamar....

 

Eu fiz essa pergunta pois estou fazendo uma simples agenda de compromissos, pro meu patrão, quer dia, hora, nome, tipo de compromisso. Até então me ofereci a fazer, pois parecia algo fácil. Ai que me enganei, pois como simular um agenda (igual essas de mão) no browser e o que parecia fácil emperrou.

 

1. Tenho que mostrar na tela, todos os horários, vagos e nao vagos e ai a secretária tem que marcar e desmarcar as coisas nesses dias e horários. Tentei fazer dinamicamente e sem sucesso, fiz hora por hora na pagina, o que gerou um código extenso e seu auxilio me faez preencher todos os horários pois chamei 27 vezes a função if e else com o read(), (o que não funcionava no while e não sabia fazer), e faço os campos mostrarem e ocultarem dados se estão preenchidos ou não....E cada um dos 27 botões tem sua grid seu panel, seu botao de busca de clientes, seus selects.....

 

Ai partir dái deve imaginar a maravilha de no total de 377 linhas de código e mais de 700.000 caracteres que virou entre asp e c#, faz o que pediu, e por sinal muito bem! Alguns segundos para carregar, mas nada de grave, quase não se percebe. Só que não me contento, pois sei que posso melhorar. Só não sei que rumo tomar....para fazer isso dinamicamente:

 

1. Gera tabela com horario e data selecionada, mostra horas vagas e horas livres.............

2. Permite marcar e desmar horários direto na tabela....

3. Permite fazer busca de telefone e nome para colocar na agenda (o cadastro eu sei fazer...rsrsrsrs)

4. Mostra nas horas vagas nome da pessoa e telefone e sobre o que é o assunto ou evento que vai tratar

 

 

 

É isso, espero ter sido claro!

Abraços!

brissolare

Compartilhar este post


Link para o post
Compartilhar em outros sites

Perai, vamos por partes. Essa "tabela" que você se refere, é a tabela do banco ou a tabela (grid, <table>) do browser?

Na primeira dúvida eu acho que você vai ter que fazer um laço de 1 até N (onde N é o último dia do mês) e para cada dia verificar se existe compromisso, se existir mostra, se não existiar marcar como vago. Na dúvida (4) pelo que eu entendi, seria apenas colocar mais o assunto, já que você já tem o telefone e o nome.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Perai, vamos por partes. Essa "tabela" que você se refere, é a tabela do banco ou a tabela (grid, <table>) do browser?

Na primeira dúvida eu acho que você vai ter que fazer um laço de 1 até N (onde N é o último dia do mês) e para cada dia verificar se existe compromisso, se existir mostra, se não existiar marcar como vago. Na dúvida (4) pelo que eu entendi, seria apenas colocar mais o assunto, já que você já tem o telefone e o nome.

Boa noite, acho que não me expressei bem! Me desculpe!

 

Mas vamos lá

 

A tabela do banco eu gerei, o que falta é a tabela na pagina. E estou me referindo ao grid mesmo.

 

Séria isso ai mesmo o resto viu!!

Abraços!

brissolare

Compartilhar este post


Link para o post
Compartilhar em outros sites

1. Gera tabela com horario e data selecionada, mostra horas vagas e horas livres.............

 

Faz um laço para pegar todas os horários e datas e durante essa repitição, veja no banco se existe compromisso, se existir, mostre na tela.

Aqui você pode fazer de duas maneiras , ou usando o <asp:Table> e montando toda o esquema de adicionar colunas e linhas na mão.

Ou usar uma grid com 7 colunas (7 dias da semana) e nesse laço que comentei aqui em cima, vai populando um datatable de 7 colunas, no final só jogar o datatable no grid e dar um bind.

 

2. Permite marcar e desmar horários direto na tabela....

 

Grid editável? Ai complica. Será que não fica mais organizado colocar um link la tela que abre uma popup, e nesse popup o usuário preenche os dados?

 

3. Permite fazer busca de telefone e nome para colocar na agenda (o cadastro eu sei fazer...rsrsrsrs)

 

Eu geralmente faço isso como popup. Abro uma popup com um textbox e um botão, a pessoa digita "Joan" e clica no botão, logo abaixo monto uma grid com todos os nomes que começam com "Joan", ai você seleciona um deles e volta o ID do cliente para a tela anterior.

 

4. Mostra nas horas vagas nome da pessoa e telefone e sobre o que é o assunto ou evento que vai tratar

 

É só questão de formatação, ali no faço da pergunta 1, faz essa verificação e mostra os dados na tabela.

 

 

Esperto ter ajudado ^_^

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.