Ir para conteúdo

POWERED BY:

Arquivado

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

Web Design Valdeci

[Resolvido] Inserindo dados no banco com looping

Recommended Posts

Boa Tarde Pessoal,

 

Estou desenvolvendo um sistema onde o usuario do sistema cadastra 4 campos:

 

- Seleciona um cliente no combo ( cada consulta recebe o id do produto)

- Seleciona um atendente no combo ( cada consulta recebe o id do produto)

- Insere a data do serviço

- E seleciona um produto por um check list ( cada check list recebe o id do produto)

 

O problema é na hora de cadastrar isto no banco. É porque o cliente poderá comprar mais de um produto, fiz um campo chek box repetindo com a quantidade de produtos que tenho cadastrado no banco. O que quero é quando o cliente selecionar mais de um produto, repita os dados cliente, atendente, data e somente mude o id do produto que ele comprou. Ex. Se o cliente fulano, comprou somente uma calça, na data de hoje, com o atendente X ele cadastre este dado apenas uma vez porque ele selecionou apenas um produto, mas se o cliente ciclano, comprou uma calça, uma bluasa, e um bone na data de hoje com o atendente X, ele repita (cliente, data, atendente e insira um produto em cada um. No caso repetira inserindo no banco 3 vezes mudando apenas o produto.)

 

Não sei se soube explicar mas vai abaixo a imagem para que possam visualizar como é a parte de cadastro.

 

Mando o script que utilizei para inserir apenas 1 registro.

 

IF opc = "inserir" THEN
  exibir = request.form("exibir")
  idCliente = request.form("idCliente")
  idProduto = request.form("idProduto")'quero que se vier mais de um id ele repita os outros dados modificando apenas o id do produto que foi selecionado.
  idUsuario = request.form("idUsuario")
  data = request.form("data")
  dataAdd = year(now)&"/"&month(now)&"/"&day(now)
  horaAdd = time()
  Set cs_inserir = Server.CreateObject("ADODB.Recordset")
  cs_inserir.open "INSERT INTO Pedidos (idCliente,idProduto,idUsuario,data,exibir,DataAdd,HoraAdd) VALUES ("&idCliente&","&idProduto&","&idUsuario&",'"&data&"','"&exibir&"','"&dataAdd&"','"&horaAdd&"')", Conexao
  response.redirect("InserirCategorias.asp")
END IF

Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde !

 

segue codigo que faz isso, basta adaptar para a sua necessidade.

 

DO WHILE NOT rs2.EOF

 

pedsql = "Insert Into pedido (idpedido,produto,quantidade,precototal,precounitario) Values ('"&peddtid&"','"&Session("prodnam"&rs2("id"))&"','"&Session("qtad"&rs2"id"))&"','"&Session("prodtot"&rs2("id"))&"','"&Session("preco"&rs2("id"))&"')"

set rs3 = conn.execute(pedsql)

end if

rs2.movenext

loop

 

Isso pode ser feito usando matriz, basta adaptar.

 

Abraços,

Vinicius Ianni

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom Dia Vinicius,

 

Não consegui entender bem isto. Poderia me explicar? Eu tentei adequar ao meu codigo mais deu erro.

 

IF opc = "inserir" THEN
DO WHILE NOT rs2.EOF
  exibir = request.form("exibir")
  idCliente = request.form("idCliente")
  idProduto = request.form("servicos")
  idUsuario = request.form("idUsuario")
  data = request.form("data")
  dataAdd = year(now)&"/"&month(now)&"/"&day(now)
  horaAdd = time()
pedsql = "Insert Into Pedidos (idCliente,idProduto,idUsuario,data,exibir,DataAdd,HoraAdd) Values ("&idCliente&","&Session("idProduto"&rs2("id"))&","&idUsuario&",'"&data&"','"&exibir&"','"&dataAdd&"','"&horaAdd&"')"
set rs3 = Conexao.execute(pedsql)
rs2.movenext
loop
response.redirect("InserirCategorias.asp")
END IF

Apareceu este erro:

 

Microsoft VBScript runtime error '800a01a8'

 

Object required: 'rs2'

 

/sistema/InserirPedido.asp, line 30

Compartilhar este post


Link para o post
Compartilhar em outros sites

o rs2 é uma consulta que faço ao banco de dados para ter os id´s que utilizo para nomear uma parte do formulário de pedido

ficaria assim:

 

<input type='text' name='prod"'"&rs2("id")&"'" ...

 

depois refaço isso no insert para recuperar os valores do form e fazer o insert do pedido com as quantidades dos produtos já relacionados.

 

Ao inves do rs2 (que é uma consulta ao bd) você pode usar uma matriz.

i=0

for i to 10

while ....

 

tem alguns exemplos disso no forum, não te passo um exemplo completo disso agora pois não estou no meu micro de trabalho.

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha essa lógica, vê se ajuda

 

if qtd_produtos = "" then
Response.write("erro..."
response.redirect("outra_pagina.asp")
else
qtd_produtos = split(Request.Form("qtd_produtos"),",")
if qtd_produtos = ""
produtos= Split(Request.Form("produtos"), ",")

For i = 1 To Request.Form("produtos").Count

Response.write request.form("produtos")(i)&"<BR>" & request.form("qtd_produtos")(i)&"<BR>"
SQL = "INSERT INTO lista (lista_prodID,lista_quant) Values ('"&request.form("produtos")(i)&"','"&request.form("qtd_produtos")(i)&"')"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom Dia Pessoal,

 

Ainda não consegui, testei de tudo quanto é jeito e não deu.

 

Utilizei este codigo aqui

 

IF opc = "inserir" THEN
arrProdutos = split(request.form("servicos"),",") 'vai criar um array dos presentes quebrando por vírgulas que o form envia como separador para o mesmo nome de campo.
For i=Lbound(arrProdutos) to Ubound(arrProdutos) 'varrer o array dos presentes e inserir no banco
  Response.write arrProdutos(i)&"<BR>"
 data= request.form("data")
 exibir = request.form("exibir")
 idCliente = request.form("idCliente")
 idUsuario = request.form("idUsuario")
 data = request.form("data")
 dataAdd = year(now)&"/"&month(now)&"/"&day(now)
 horaAdd = time()
  Set cs_inserir = Server.CreateObject("ADODB.Recordset")
  cs_inserir.open "INSERT INTO Pedidos (idCliente,idProduto,idUsuario,data,exibir,DataAdd,HoraAdd) VALUES ("&idCliente&","&arrProdutos(i)&",,"&idUsuario&",'"&data&"','"&exibir&"','"&dataAdd&"','"&horaAdd&"')", Conexao
Next

 

Deu o seguinte erro:

 

33

 

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

 

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '19,'2010/02/17','Sim','2010/2/18','10:24:51')' at line 1

 

/sistema/InserirPedido.asp, line 62

 

Pelo que vi, ele não listou todos os ids que selecionei na consulta. Ele pegou apenas um dos ids, o 33.

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.