Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite,
Alguém sabe como retornar um valor único dentro do movenext?
tenho uma página que gera um xml e um código de validação, porém o cabeçalho não pode repetir r o laço tem que pegar todos os registros selecionados do bd.
Essa página funciona normalmente mas o cabeçalho tá repetindo pra cada registro e não pode... Não dá pra jogar fora do movenext e dentro eu não seu como fazer pq o cabeçalho é fixo, não vem do bd.
Abaixo tá a parte do codigo que ta dando todo esse rolo...
stringdeconsulta =(registroans&rs("emissao")&rs("guia")&rs("carteira")&rs("nome")&rs("plano")&rs("ctsaude")&rs("identificacao")®istroans&"081"&rs("endereco")&rs("numero")&rs("compl")&"0000000"&rs("estado")&rs("cep")&rs("medico")&rs("conselho")&rs("numconselho")&rs("ufed")&"01280"&"CID-10"&rs("cid")&rs("cid")&rs("dataatend")&rs("codtabela")&rs("codproced")&rs("tipocons")&rs("tiposaida")&rs("mensagem"))
parte = ("ENVIO_LOTE_GUIAS"&"000"&day(now)&"/"&month(now)&"/"&year(now)&hour(now)&":"&minute(now)&codoper®istroans&"2.01.03"&numlote)
md0=md5(parte&stringdeconsulta)
Response.Write(parte&stringdeconsulta)
rs.MoveNext()
wend
Na espera de um bom conhecedor de ASP, bjs
Então, o que acontece é que não dá pra tirar do laço por causa da função
md0=md5(parte&stringdeconsulta)a string de consulta (stringdeconsulta) pode ter vários registros, mas o cabeçalho (parte) só pode aparecer uma vez, independente da quantidade de registros.Detalhe: o cabeçalho é um texto simples não vem do bd, você sabe como eu faço um if pra ele não repetir?
Agradeço desde já
É só você colocar ele fora do WHILE... caso queira manter dentro, faça conforme abaixo:
If len(parte) = 0 Then
parte = ("ENVIO_LOTE_GUIAS"&"000"&day(now)&"/"&month(now)&"/"&year(now)&hour(now)&":"&minute(now)&codoper®istroans&"2.01.03"&numlote)
End If
Fora do while não dá porque senão não faz o loop nos registros, aí pega só o ultimo e tem que ser todos...
E como você postou, não deu certo, ainda continua repetindo a cada loop...
Ah detalhe... o While está dentro de um for... pra complicar...
Vou colocar o codigo pra você ver como tá enroscado o negócio, mesmo assim obrigadão
<%
...
set Conn=server.CreateObject("ADODB.Connection")
Conn.open=("DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;PORT=3306;DATABASE=mastersql;USER=tissbrasil;PASSWORD=t
b082008;OPTION=3;")
totalregistros0=Request("registros")
For cont0=1 to totalregistros0
codigo="id"&cont0
varCodigo=Request(codigo)
SQL2 = "select * from digisalva where id = '"&varCodigo&"' group by tipo"
Set RS0 = Conn.Execute(SQL2)
if not RS0.eof then
tipodeguia = RS0("tipo")
if tipodeguia = "consulta" then
identif="identif"&cont0
varIdent = Request(identif)
set MyConn=server.CreateObject("ADODB.Connection")
MyConn.open=("DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;PORT=3306;DATABASE=mastersql;USER=tissbrasil;PASSWORD=t
b082008;OPTION=3;")
SQL = "Select * From guia_de_consulta where id = '"&varIdent&"' "
Set rs = MyConn.Execute(SQL)
while (not rs.EOF)
stringdeconsulta =(registroans&rs("emissao")&rs("guia")&rs("carteira")&rs("nome")&rs("plano")&rs("ctsaude")&rs("identificacao")®istroans&"081"&rs("endereco")&rs("numero")&rs("compl")&"0000000"&rs("estado")&rs("cep")&rs("medico")&rs("conselho")&rs("numconselho")&rs("ufed")&"99999"&"CID-10"&rs("cid")&rs("cid")&rs("dataatend")&rs("codtabela")&rs("codproced")&rs("tipocons")&rs("tiposaida")&rs("mensagem"))
rs.MoveNext()
If len(parte) = 0 Then
parte = ("ENVIO_LOTE_GUIAS"&"000"&day(now)&"/"&month(now)&"/"&year(now)&hour(now)&":"&minute(now)&codoper®istroans&"2.01.03"&numlote)
End If
md0=md5(parte&stringdeconsulta)
Response.Write(parte&stringdeconsulta)
wend
End if
End if
Next
%>
Usando a forma como o amigo mandou, ele vai repetir caso não tenha o cabeçalho, mas é justamente o contrario que preciso, se o cabeçalho já foi escrito uma vez, então não escrever mais....
por exemplo:
CABEÇALHO+REGISTRO1+REGISTRO2+REGISTRO3 e assim por diante.
Hoje está escrevendo assim CABEÇALHO+REGISTRO1+CABEÇALHO+REGISTRO2+CABEÇALHO+REGISTRO3 e assim está errado.
Pior é que na lógica seria só tirar do while, mas se eu tiro aparece apenas o ultimo registro, porque não faz o loop.
usando um if com o parametro cont0 (do for) dá pra fazer uma gambiarra e fazer com que o cabeçalho apareca apenas uma vez...
Agora um outro problema, alguém sabe como trabalhar com codificação md5? Meus resultados não estão certos...
que erros acontecem?
o problema é que o cabeçalho sempre se repete.... não dá erro mas tb não dá certo...
Tenta assim:
If (not rs.EOF) Then
stringdeconsulta =(registroans&rs("emissao")&rs("guia")&rs("carteira")&rs("nome")&rs("plano")&rs("ctsaude")&rs("identificacao")®istroans&"081"&rs("endereco")&rs("numero")&rs("compl")&"0000000"&rs("estado")&rs("cep")&rs("medico")&rs("conselho")&rs("numconselho")&rs("ufed")&"99999"&"CID-10"&rs("cid")&rs("cid")&rs("dataatend")&rs("codtabela")&rs("codproced")&rs("tipocons")&rs("tiposaida")&rs("mensagem"))
parte = ("ENVIO_LOTE_GUIAS"&"000"&day(now)&"/"&month(now)&"/"&year(now)&hour(now)&":"&minute(now)&codoper®istroans&"2.01.03"&numlote)
md0=md5(parte&stringdeconsulta)
Response.Write(parte&stringdeconsulta)
rs.MoveNext()
while (not rs.EOF)
rs.MoveNext()
wend
End If
é so colocar fora do laço a parte que nao é para repetir
o que vem do db voce permanece no laço
exatamente como ja foi sugerido
poe o que nao pode repetir fora do laço de repetição
se for algum dado que vem do db poe dentro de um if para so listar uma vez