Ir para conteúdo

Arquivado

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

fabiosc80

Listagem em array

Recommended Posts

Marcelo lembra que eu tava fazendo assim?<%Msg = ""For i = 0 To Ubound(MyArray) Msg = Msg & MyArray(i,0) & "<br>" & MyArray(i,1) & "<br>" & MyArray(i,2) & "<br>"Next%>e deu certo?pois bem começou a deu esse erro aqui:Microsoft VBScript compilation error '800a03ea' Syntax error /multilabor/produtos1a.asp, line 219 Msg = Msg & MyArray(i,0) & "<br>" &Ja olhei e nao tem o pq ta assim

Compartilhar este post


Link para o post
Compartilhar em outros sites

deu isso aqui agora

 

Microsoft VBScript compilation error '800a0414'

 

Cannot use parentheses when calling a Sub

 

/multilabor/produtos1a.asp, line 220

 

MyArray(i,1) & "<br>" &

-------------^

 

 

ja to ficando sem entender

 

 

 

Tem um "&" a mais no final da linha.....

<{POST_SNAPBACK}>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não marcelo o MyArray só aparece nesse trecho aqui veja só:

Pelo que vi nao tem nada errado.

Só da erro quando eu coloco os BR

 

<%   	 Dim myArrayRedim myArray(2,2)   For intI = 0 To UBound(SepararQtda)%>Quantidade: <%=SepararQtda(intI)%><br>Valor Unitário: <%=SepararPreco(intI)%><br>Valor: <%=SepararQtda(intI) * SepararPreco(intI)%><br> <%Session("Prod") = SepararPro(intI)%><%Sql5 = "SELECT NomedoProduto FROM Produtos WHERE Codigo="&SepararPro(intI)Set TB5 = BC.Execute(Sql5)%>Produto: <%=TB5("NomedoProduto")%><p><%MyArray(intI,0) = SepararQtda(intI)MyArraY(intI,1) = SepararPreco(intI)MyArray(intI,2) = TB5("NomedoProduto")%><%Next %><%Msg = ""For i = 0 To Ubound(MyArray)  Msg = Msg & MyArray(i,0) &  MyArray(i,1) &   MyArray(i,2)Next%>

 

Tem um "&" a mais nessa linha também....

Tira esse "&" e tenta de novo...Se der o mesmo erro, verifique se você não tem nenhuma função com esse nome "Myrray".....

<{POST_SNAPBACK}>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Marcelo,

 

Agora complicou...

 

Vou ter que usar aquela estrutura e inserir tambem dados no banco.

É uma outra pagina agora mas com o mesmo código desse que você me ajudou muito a bolar.

 

Seguinte vou ter que inserir dados em 2 tabelas.

 

Pedidos

 

e PedidosDetalhe

 

A tabela de Pedidos tem os seguintes campos:

 

CodPedido autonumeracao

CodCliente Numero(vai vir da session do cliente)

DataPedido Data (vai ter que ser a do dia)

Status Texto (Isso é automatico, vai entrar ao comprar o texto "Pendente")

 

A tabela PedidosDetalhe tem os seguintes campos:

 

CodPediDetalhe Autonumeracao

CodPedido Numero (é o codigo da tabela pedidos, estao relacionadas)

Codigo Numero (vai vir da tabela de produtos é o código do produto que ta sendo vendido)

Qtd Numero(quantidade de produtos vendidos)

ValorUnt Moeda(valor que vem da tabela produtos com a informacao do produto)

 

mas tipo ele só pode cadastrar quando eu for pra tela de efetuar compra a que ta os dados que vao pro email.

nao pode ir cadastrando enquanto ele ta comprando sem finalizar.

 

Como separo ali naqueles for?

 

 

 

 

 

Marcelo era problema no Cache

eu tinha dado um f5 e ele tinha perdido o array....foi mal

 

 

troque isso

Redim myArray(2,2)

Por isso

Redim myArray(Ubound(SepararQtda),2)

<{POST_SNAPBACK}>

<{POST_SNAPBACK}>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seguinte.A tabela Pedidos é facil cadastrar pois os dados eu vou ter facinho pra pegar.Agora preciso na proxima tela pegar os pedidos e seus respectivos campos e separar e ir cadastrando um a umtipo como mando acho que é facil eu coloco uma virgulo no meio dos dados que vou precisar e pra separar uso split é isso?mas e pra saber a ordem certa? e qual é qual?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então cara....Passa o parâmetro por session (Lembra que te falei).Depois para incluir usa Recordset.

Set oConn = Server.CreateObject("ADODB.Connection")Set ORs = Server.CreateObject("ADODB.Recordset")ORs.Open "DetalhePedido",oConn,1,3,2MeuArray = Session("MyArray")For i = 0 to Ubound(MeuArray)ORs.AddNEwORs("cd_pedido") = cd_pedidoORs("Codigo") = MeuArray(i)ORs.UpdateNext

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nao entendi Marcelo tipo eu só preciso pegar os as compras e ir cadastrando uma a uma na tabela DetalhesPedido

 

O campo CodigoPedido é facil pegar pois eu vou dar um select antes de cadastrar na delhes pedido e pegar o ultimo pedido

 

Codigo (produto)

Qtd

ValorUnit vai ser mais dificil pois na proxima tela ele vai estar listando um na sequencia do outro

como separo?

 

 

Então cara....

Passa o parâmetro por session (Lembra que te falei).

 

Depois para incluir usa Recordset.

 

Set oConn = Server.CreateObject("ADODB.Connection")

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

 

ORs.Open "DetalhePedido",oConn,1,3,2

 

MeuArray = Session("MyArray")

For i = 0 to Ubound(MeuArray)

ORs.AddNEw

ORs("cd_pedido") = cd_pedido

ORs("Codigo") = MeuArray(i)

ORs.Update

Next

<{POST_SNAPBACK}>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nao precisa abrir outro tópico Marcelo,

Vou te explicar melhor.

 

Aquele código que fizemos é para duas funçoes.

 

Clientes cadastrados ou nao cadastrados.

 

Aquele que fizemos é para o nao cadastrados.

 

ele ao listar aquilo la manda aquele s dados por e-mail numa outra pagina que um formulario abaixo joga.

 

agora tenho que usar o mesmo código para que os clientes cadastrados possam comprar ao invés de só mandar e-mail.

Neste caso tenho que pegar os dados daquele for next que lista os produtos comprados e jogar na tela que fecha o pedido para cadastrar num banco.

 

Olha só o código que você vai entender. Note que tem um formulario abaixo dele que comecei a fazer.

 

<%   	 Dim myArrayRedim myArray(1,2)   For intI = 0 To UBound(SepararQtda)%>Quantidade: <%=SepararQtda(intI)%><br><%Session("Prod") = SepararPro(intI)%><%Sql5 = "SELECT NomedoProduto FROM Produtos WHERE Codigo="&SepararPro(intI)Set TB5 = BC.Execute(Sql5)%>Produto: <%=TB5("NomedoProduto")%><p><%MyArray(intI,0) = SepararQtda(intI)MyArray(intI,1) = TB5("NomedoProduto")%><%Next %><%Msg = ""For i = 0 To Ubound(MyArray)  Msg = Msg & "<b>Quantidade: </b>"& MyArray(i,0) &"<br><b>Nome do Produto: </b>"&  MyArray(i,1) &"<br><BR>"Next%><%Total = 0For intI = 0 To UBound(SepararQtda)  Total = Total + SepararQtda(intI) * SepararPreco(intI)Next %><br><br><form method="post" action="produtosdados.asp"><input name="CodigoCliente" type="Hidden" value="<%=session("Cod2")%>"><input name="Msg" type="Hidden" value="<%=Msg%>"><input name="Total" type="Hidden" value="<%=Total%>"><input type="Submit" value="Finalizar Orçamento"></form>  
Preciso agora ali ai invés de "MSG" que é oque eu tava usando pra montar o email passar os valors da compra desse cliente e cadastrar na tabela detalhespedido as compras desse cliente entendeu?

 

MAs como passar os dados pra proxima pagina e fazer ele cadastrar cada produto comprado em uma linha diferente na tabela?

 

Entendeu?

 

Tipo ele ta listando um abaixo do outro.

 

Entendeu?

 

 

 

Fabio..

Faz o seguinte...

Pra facilitar...

É que agora eu me atrapalhei.....

 

Abre outro tópico, e posta exatamento sua situação e a dúvida...

A gente vai respondendo lá....

<{POST_SNAPBACK}>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que sim...Vamos lá....Primeiro crie uma String, Agora com dois separadores....

For i = 0 To Ubound(MyArray)if strMyArray = "" thenstrMyArray = myArray(i,0) & "|" & MyArray(i,1) & "|" & MyArray(i,2)elsestrMyArray = strMyArray & ";" & myArray(i,0) & "|" & MyArray(i,1) & "|" & MyArray(i,2)next

Isso criara uma String mais ou menos assim:strArray = "1|Nome do Produto1|1;5|Nome do Produto|13"Desta forma nós temos o pipe "|" separando os valores de cada indice, e ponto e virgula";" separando cada registro...Entendeu ?Assim crie um campo "hidden" para guardar essa informação.Quando voce postar para a página que vai inserir os produtos, voce ira recuperar os valores da seguinte form.

myArray1 = Split(Request("nomeDoCampo"),";")For i = 0 To Ubound(MyArray1)strRegistro = Split(Myarray1(i),"|")For i2 = 0 to Ubound(strRegistro)  Response.Write strRegistro(i2)NextNext

Entendeu ????

Compartilhar este post


Link para o post
Compartilhar em outros sites

entendi mas ta dando esse erro aqui:

 

Microsoft VBScript compilation error '800a041f'

 

Unexpected 'Next'

 

/multilabor/produtos1a.asp, line 459

 

next

^

 

a linha é essa aqui:

 

 

<%

For i = 0 To Ubound(MyArrayy)

 

if strMyArray = "" then

strMyArray = myArrayy(i,0) & "|" & MyArrayy(i,1) & "|" & MyArrayy(i,2)

else

strMyArray = strMyArray & ";" & myArrayy(i,0) & "|" & MyArrayy(i,1) & "|" & MyArrayy(i,2)

>>>>>>>>>>>>>>>>>>>>>>next

%>

 

sabe o pq disso?

vou entrar numa reuniao agora mas em casa verei denovo isso ok?

nao posso passar desse fim de semana isso?

 

 

Acho que sim...

Vamos lá....

 

Primeiro crie uma String, Agora com dois separadores....

 

For i = 0 To Ubound(MyArray)

 

if strMyArray = "" then

strMyArray = myArray(i,0) & "|" & MyArray(i,1) & "|" & MyArray(i,2)

else

strMyArray = strMyArray & ";" & myArray(i,0) & "|" & MyArray(i,1) & "|" & MyArray(i,2)

next

Isso criara uma String mais ou menos assim:

 

strArray = "1|Nome do Produto1|1;5|Nome do Produto|13"

 

Desta forma nós temos o pipe "|" separando os valores de cada indice, e ponto e virgula";" separando cada registro...Entendeu ?

 

Assim crie um campo "hidden" para guardar essa informação.

Quando voce postar para a página que vai inserir os produtos, voce ira recuperar os valores da seguinte form.

 

myArray1 = Split(Request("nomeDoCampo"),";")

 

For i = 0 To Ubound(MyArray1)

 

strRegistro = Split(Myarray1(i),"|")

 

For i2 = 0 to Ubound(strRegistro)

  Response.Write strRegistro(i2)

Next

 

Next

Entendeu ????

<{POST_SNAPBACK}>

Compartilhar este post


Link para o post
Compartilhar em outros sites

E ai Marcelo beleza professor?,

 

Seguinte,

 

coloquei o "If" la e deu certo porem agora saca só...

 

olha aqui:

 

myArray1 = Split(Request("Dados"),";")For i = 0 To Ubound(MyArray1)strRegistro = Split(Myarray1(i),"|")For i2 = 0 to Ubound(strRegistro)Response.Write strRegistro(i2)NextNext
sabe esse response.write?

 

ele ta trazendo assim os dados olha só:

 

2360125,2

 

onde 23 é a quantidade, 60 é o código do produto, e 125,2 é o preço do produto.

 

Agora a questao é...

como separo isso e jogo no insert do select ?

 

Tem como você me ajudar denovo ou alguem?

 

 

Faltou fechar  o "End if"

<{POST_SNAPBACK}>

Compartilhar este post


Link para o post
Compartilhar em outros sites

você tem que usar as seguinte funcoes;

LEFT <- recupera valores a esquerda de um determinado valor

RIGHT <- recupera valrores a direita de um determinado valor

MID <- recupera valores selecionados por você...

 

Segue entao

 

ASP

[*]

 

[*]<%

 

[*]'*** Aqui você coloca a variavel que contem o valor abaixo

 

[*]'*** Apos e isso e so mudar nas funcoes que se seguem

 

[*]

 

[*]Valor 2360125.2 

 

[*]

 

[*]StrNumber1 LEFT((Valor),2)

 

[*]StrNumber2 MID((Valor),3,2)

 

[*]StrNumber3 RIGHT((Valor),5)

 

[*]

 

[*]Response.Write(StrNumber1)&"<br>"

 

[*]Response.Write(StrNumber2)&"<br>"

 

[*]Response.Write(StrNumber3)&"<br>"

 

[*]%>

 

[*]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala galera!!

Aproveitando esse "Topico Aula", sobre Array onde tambem nao sei nada sobre o assunto, gostaria de saber se e possivel fazer o seguinte.

 

Criar um array de acordo com o total de registro que tenho no meu BD.

da seguinte maneira...

 

ASP

[*]

 

[*]<!--#include file="conexao/conn.asp" -->

 

[*]<%

 

[*]SQL "SELECT COUNT(CV_CODIGO) AS TOTAL FROM CURRICULUNS"

 

[*] SET RS Cnn.execute(SQL)

 

[*]

 

[*]Dim myArray

 

[*]Redim myArray(RS("TOTAL"))

 

[*] While not RS.EOF

 

[*] MyArray(Response.Write(RS("TOTAL"))) "TESTE"

 

[*]  RS.MoveNext

 

[*] Wend

 

[*]Response.Write(MyArray(1))

 

[*]%>

 

Pois entao, quando eu mandei imprimir o Array ele me retornou "10" registro que e a quantidade que tenho no meu BD. So que eu queria fazer com que fosse criado um "MyArray" para cada registro.

Onde eu teria disponibilidade de poder manipular cada um dos registro que irei selecionar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tiger explica aqueles numeros depois da palavra Valor , depois do mid por exemplo.

 

Por favor.

 

você tem que usar as seguinte funcoes;

LEFT <- recupera valores a esquerda de um determinado valor

RIGHT <- recupera valrores a direita de um determinado valor

MID <- recupera valores selecionados por você...

 

Segue entao

 

ASP

[*]<%<br />'*** Aqui você coloca a variavel que contem o valor abaixo<br />'*** Apos e isso e so mudar nas funcoes que se seguem<br /><br />Valor 2360125.2 <br /><br />StrNumber1 LEFT((Valor),2) <br />StrNumber2 MID((Valor),3,2)<br />StrNumber3 RIGHT((Valor),5)<br /><br />Response.Write(StrNumber1)&"<br>"<br />Response.Write(StrNumber2)&"<br>"<br />Response.Write(StrNumber3)&"<br>"<br />%>

<{POST_SNAPBACK}>

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.