Ir para conteúdo

POWERED BY:

Arquivado

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

vivi@ne

Dado único dentro de rs.movenext

Recommended Posts

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")&registroans&"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&registroans&"2.01.03"&numlote)

md0=md5(parte&stringdeconsulta)

Response.Write(parte&stringdeconsulta)

rs.MoveNext() 
wend

 

Na espera de um bom conhecedor de ASP, bjs

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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á

Compartilhar este post


Link para o post
Compartilhar em outros sites

É 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&registroans&"2.01.03"&numlote)
End If

Compartilhar este post


Link para o post
Compartilhar em outros sites

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")&registroans&"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&registroans&"2.01.03"&numlote)
End If
md0=md5(parte&stringdeconsulta)
Response.Write(parte&stringdeconsulta)
wend
End if
End if
Next


%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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...

Compartilhar este post


Link para o post
Compartilhar em outros sites

que erros acontecem?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta assim:

If  (not rs.EOF) Then
		stringdeconsulta =(registroans&rs("emissao")&rs("guia")&rs("carteira")&rs("nome")&rs("plano")&rs("ctsaude")&rs("identificacao")&registroans&"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&registroans&"2.01.03"&numlote)
		md0=md5(parte&stringdeconsulta)
		Response.Write(parte&stringdeconsulta)
		rs.MoveNext()

		while (not rs.EOF)
				rs.MoveNext()
		wend
End If

Compartilhar este post


Link para o post
Compartilhar em outros sites

é 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

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.