Ir para conteúdo
Fórum Script Brasil
  • 0

FOR EACH


Paulo Nunes

Pergunta

Olá Galera to desenvolvendo uma lista de chamada de alunos para uma escola estou tento um probleminha

faço selecr no banco pego todos os alunos cadastrados na tabela de alunos crio um formulário com campos presenca, professor, dia, mes, hora, data, hora

fiz a seguinte função

<!--#include file="conexao.asp" -->

<%

Session.LCID = 1046

txtdia = request("dia")

txtmes = request("mes")

txtano= request("ano")

txtdata = date()

txthora = time()

Set rst = Server.CreateObject("ADODB.Recordset")

RSS = "SELECT * FROM lista"

rst.open RSS, conexao, 3, 3

Dim times(), I

I = 0

For Each txtnome In Request("nome")

Redim Preserve times(I)

times(I) = txtnome

I = I + 1

rst.AddNew

rst("nome") = txtnome

Next

Dim times2(), O

O = 0

For Each txtpresenca In Request("presenca")

Redim Preserve times2(O)

times(O) = txtpresenca

O = O + 1

rst("presenca") = txtpresenca

Next

rst.Update

rst.close

set rst = nothing

Conexao.close

Set conexao = nothing

Response.write"0k"

%>

Esta funcionando só que no campo nome eu salvo todos alunos em ordem mas no campo presenca, professor que nem esta ai no código

ele só salva o utilmo item ou seja aparece assim

Nome Presenca

Paulo Nunes

Pedro Santana

Wilham Silva Gomes P

Alguém poderia me dar um help ai.

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Pelo que entendi você vai lendo os nomes e adicionando novos records na sua recordset, depois que adicionou todos os nomes você lê todas as presenças e vai adicionando elas sempre na última posição, porque você não move o registro quando lê presença.

Link para o comentário
Compartilhar em outros sites

  • 0

<!--#include file="conexao.asp" -->

<%

Session.LCID = 1046

txtdia = request("dia")

txtmes = request("mes")

txtano= request("ano")

txtdata = date()

txthora = time()

Set rst = Server.CreateObject("ADODB.Recordset")

RSS = "SELECT * FROM lista"

rst.open RSS, conexao, 3, 3

Dim times(), I

I = 0

For Each txtnome In Request("nome")

Redim Preserve times(I)

times(I) = txtnome

I = I + 1

rst.AddNew

rst("nome") = txtnome

Next

Dim times2(), O

O = 0

For Each txtpresenca In Request("presenca")

Redim Preserve times2(O)

times(O) = txtpresenca

O = O + 1

rst("presenca") = txtpresenca

Next

rst.Update

rst.movenext

cont =1

cont = cont + 1

rst.close

set rst = nothing

Conexao.close

Set conexao = nothing

Response.write"0k"

Então adcionei o movenext mais mesmo assim os nomes ele salva todos em sequencia só que a presença ele só salva uma vez.

Link para o comentário
Compartilhar em outros sites

  • 0

você ta fazendo algo assim:

pega o nome e adiciona na lista, pega o próximo e adiciona novamente, e faz isso até acabar todos. Depois no final você (com o último registro selecionado) sai adicionando a presença.

Ideal seria você pegar primeiro nome e primeira presença e add os dois, e depois ir para o próximo

Link para o comentário
Compartilhar em outros sites

  • 0

Seria isso mesmo como eu poderia receber mais de dois valores em request dentro do For Each

Exemplo

Dim times(), I

I = 0

For Each txtnome In Request("nome")

Redim Preserve times(I)

times(I) = txtnome

I = I + 1

rst.AddNew

rst("nome") = txtnome

rst("presenca") = txtpresenca

Não consegui receber os dois no mesmo array.

Link para o comentário
Compartilhar em outros sites

  • 0

Tipo isso (ta com cara de gambizona, mas...)

Dim nomes()
Dim presencas()

i = 0

For Each item In Request("nome")
    Redim Preserve nomes(i)
    nomes(i) = item
    i = i + 0
Next

For Each item In Request("presenca")
    Redim Preserve presencas(i)
    presencas(i) = item
    i = i + 0
Next

For i = 0 To UBound(nomes)
    rst.AddNew
    rst("nome") = nomes(i)
    rst("presenca") = presencas(i)
Next

Link para o comentário
Compartilhar em outros sites

  • 0

Meu caramara muito obrigado sem você eu não teria consiguido. É verdade esse código ele somente salva um array por vez procurei na net alguma função desse tipo não achei nada a solução foi criar a minha propria. o Código ficou redondo segue ele concluido caso alguém tenha esse mesmo problema.

<!--#include file="conexao.asp" -->

<%

Session.LCID = 1046

Set rst = Server.CreateObject("ADODB.Recordset")

RSS = "SELECT * FROM lista"

rst.open RSS, conexao, 3, 3

Dim pre()

Dim times()

i = 0

For Each alunos In Request("nome")

Redim Preserve nomes(i)

nomes(i) = alunos

i = i + 1

Next

i = 0

For Each lista In Request("presenca")

Redim Preserve listas(i)

listas(i) = lista

i = i + 1

Next

i = 0

For Each professor In Request("professor")

Redim Preserve professores(i)

professores(i) = professor

i = i + 1

Next

i = 0

For Each disciplina In Request("curso")

Redim Preserve cursos(i)

cursos(i) = disciplina

i = i + 1

Next

i = 0

For Each calendario In Request("dia")

Redim Preserve dias(i)

dias(i) = calendario

i = i + 1

Next

i = 0

For Each calendario_mes In Request("mes")

Redim Preserve meses(i)

meses(i) = calendario_mes

i = i + 1

Next

i = 0

For Each calendario_ano In Request("ano")

Redim Preserve anos(i)

anos(i) = calendario_ano

i = i + 1

Next

i = 0

For Each data_cadastro In Request("data")

Redim Preserve datas(i)

datas(i) = data_cadastro

i = i + 1

Next

i = 0

For Each hora_cadastro In Request("hora")

Redim Preserve horas(i)

horas(i) = hora_cadastro

i = i + 1

Next

For i = 0 To UBound(nomes)

rst.AddNew

rst("nome") = nomes(i)

rst("presenca") = listas(i)

rst("professor") = professores(i)

rst("curso") = cursos(i)

rst("dia") = dias(i)

rst("mes") = meses(i)

rst("ano") = anos(i)

rst("data") = datas(i)

rst("hora") = horas(i)

rst.Update

Next

rst.movenext

cont =1

cont = cont + 1

rst.close

set rst = nothing

Conexao.close

Set conexao = nothing

Response.write"0k"

%>

Um abraço até a proxima.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...