Ir para conteúdo

POWERED BY:

Arquivado

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

Holyspear

Cálculo e inserção automaticos

Recommended Posts

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Olá galera do Imasters, tudo beleza? Bem vou logo ao que interessa pois o assunto é um pouco sério.

 

Pessoal, eu sou iniciante ainda na programação em ASP, ainda tenho muito que aprender e por isso mesmo venho pedir a ajuda dos mestres da parada não é mesmo? Heheheheh!!!

 

Bom, estou desenvolvendo um sistema de Estoque bem simples, mas que está me causando uma dor de cabeça imensa! A lógica inicial é simples, mas a programação para mim se tornou complicadíssima, vamos ver se alguém consegue me dar uma luz nesse túnel que parece não acabar mais. O sistema coleta dados inseridos em um formulário, na verdade são números que estarão em um input text nomeado automaticamente por uma lógica de loop. Bem o mais importante é o próximo passo: Os dados serão enviados a uma página que teoricamente teria que fazer o cálculo automático somando os números colocados no formulário com os números que são recuperados do banco de dados, dando assim um novo valor ao RecordSet.

 

Bem pessoal, o código até aqui eu consegui fazer, só estou preocupado com um problema: A programação que eu criei não está me permitindo colocar os novos valores no banco de dados, resumindo: no meu código eu sei como recuperar os dados do formulário, sei como recuperar os dados do banco, sei até somar os dois através de um loop, mas eu não sei colocá-los de volta no banco com os novos valores! :blink: :unsure:

 

Será que alguém pode turbinar meu código? Ou dar uma outra idéia ou uma dica... estou aberto à novas idéias, afinal se o meu sistema não funcionar tenho que partir pra outra não é mesmo? Galera, observem meu código e diga se estou no caminho certo ou não...

 

<%
instrucao= "SELECT qtd FROM boilers ORDER BY Código"
	
Set conn = Server.CreateObject("ADODB.Connection")

conn.Open "PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=" & server.mappath("estoque1.mdb") & ""

conn.execute (instrucao)

Set Rs= Server.CreateObject("ADODB.RecordSet")

Rs.Open instrucao, conn, 3, 3 


'Inicia-se um loop para calcular valor por valor recuperados do formulário, onde a mesma lógica utilizada para nomear os request.form no formulário é utilizada no começo. O Loop tem a finalidade de somar os valores do formulário com os valores recuparados do banco um a um no ponteiro do RecordSet.

contador = 1
For Each formulario in request.form
if contador <= 3 then
			 
				 i =  i + 1
				 a = a + 1
				 entrada = "entrada" & i
				 saida = "saida" & a

Rs.fields ("qtd") = request.form (entrada) + Rs.fields ("qtd")

Rs.movenext

end if
contador = contador + 1

next
%>

Bem, esse é o código da página que processa as informações e tenta salvá-las no banco de dados. Percebam que eu ainda não terminei o código, pois falta justamente a parte de salvar os dados que ainda não consegui. Alguém pode me ajudar por favor?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que entendi, você quer ler os dados do banco, somar e atualizar eles, certo?

 

Se for isso, coloque uma instrução de UPDATE logo acima do Rs.Movenext.

 

Lembre-se de fechar o objeto após atualizar os dados, pois como está dentro de um Loop, se ele estiver aberto na segunda vez, vai dar erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom meu amigo, como eu já havia informado eu sou um pouco principiante nisso ai. Eu tentei colocar uma conn.Update antes do Rs.movenext mas o servidor retorna um erro "Microsoft JET Database Engine (0x80040E09) Não é possível atualizar. O banco de dados ou o objeto é somente leitura." Então eu não entendo o que acontece quando eu tento atualizar os dados dessa forma. Existe alguma outra instrução para colocar e atualizar esses dados? Teria uma outra forma de isso acontecer fora do loop?

 

Testei a programação fora da minha máquina, em um servidor ASP onde tenho um site de cliente hospedado e a página retorna erro de programação mas não especifica o erro como o IIS faz na minha máquina. Ajudaew mano! Heheheheheheh...

 

Aguardo resposta mano. :) Obrigado!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Existe várias formas de se fazer isso... você foi pela mais complicada rs.

 

A que eu citei bastaria fazer +- isso:

conn.execute("UPDATE tabela SET campo="&valor&" WHERE cdcampo = "&codigo)

 

Tenta aí e posta o resultado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mano eu dei uma reformulada no Código. Pelo menos o erro mudou né? Já é um avanço para um iniciante! Muahwuahuehusehsueh!!!

 

Sem zuera, o erro agora é que existe um erro na instrução de UPDATE, mas veja bem como eu reestruturei o código:

 

<%
instrucao= "SELECT qtd FROM boilers ORDER BY Código"
instrucao2 = "UPDATE boilers SET qtd ="&dados&""

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

conn.Open "PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=" & server.mappath("estoque1.mdb") & ""

conn.execute (instrucao)

Set Rs= Server.CreateObject("ADODB.RecordSet")

Rs.Open instrucao, conn, 3, 3 


'Inicia-se um loop para calcular valor por valor recuperados do formulário, onde a mesma lógica utilizada para nomear os request.form no formulário é utilizada no começo. O Loop tem a finalidade de somar os valores do formulário com os valores recuparados do banco um a um no ponteiro do RecordSet.

contador = 1
For Each formulario in request.form
if contador <= 3 then
			 
				 i =  i + 1
				 a = a + 1
				 entrada = "entrada" & i
				 saida = "saida" & a

dados = Rs.fields ("qtd") + request.form (entrada) - request.form (saida)

Rs.Close

Rs.Open instrucao2, conn, 3, 3

Rs.movenext

end if
contador = contador + 1

next

Rs.Close
Set Rs = Nothing %>

<script LANGUAGE="VBScript">
Msgbox "Dados atualizados com Sucesso! Clique aqui para voltar."
</SCRIPT>

<% response.Redirect("stq_boiler.asp") %>

Depois de alguns minutos quebrando a cuca para reformular ele, consegui deixa-lo com um erro diferente. Só fiquei com uma dúvida e espero que tú me dê uma dica beleza? Seguinte: Se você perceber, no loop eu coloquei o Rs.close para ele fechar a variável "instrucao" e executar a "instrucao2"... por isso estar dentro de um loop tú acha que pode sobrecarregar o código ou algo nesse sentido? Pelo menos agora eu sei que ele está executando o RecordSet em uma função atualizável e o outro erro já era. O que me diz manow?

 

Aguardo respostas ansioso! Valeuz!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Up... alguma luz aew? :lol:

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.