Ir para conteúdo
Fórum Script Brasil
  • 0

Fazendo um Insert Into de varios itens de uma vez só


panox

Pergunta

E ai galera, tudo certinho com vocês ?

É o seguinte, eu estou com o seguinte probleminha, eu tenho um formulario de requisição que ao ser completo, ele joga os dados numa tabela e, a cada click no botao, ele adiciona mais uma linha nessa tabela...ela pode conter 1 ou 100 linhas, depende do caso.

O que preciso fazer é, um insert q insira todas as linhas de uma vez só na tabela (REQ_REQUISICAO)

aqui meu codigo se for de ajuda

<!--#include file="conexao.asp"-->

<%
call abre_conexao

 sql = "Select CODIGO, DESCRICAO, COD_GESTOR from OS_TECNOLOGIA_GESTOR"
 set r1 = conexao.execute(sql)

%>

&lt;script language="javascript">

function popup(apelido, cod_gestor2)    {
                window.open('pag.asp?apelido='+apelido+'&cod_gestor2='+cod_gestor2,
                'Verificacao',
                'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=no,width=800,height=600');  
}


function popup2(descricao, cod_gestor2)    {
                window.open('pes.asp?descricao='+descricao+'&cod_gestor2='+cod_gestor2,
                'Verificacao',
                'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=no,width=800,height=600');  
}

function Insere()
{
var x=document.getElementById('tabela').insertRow(1)
var a=x.insertCell(0)
var b=x.insertCell(0)
var c=x.insertCell(0)
var d=x.insertCell(0)
var e=x.insertCell(0)
e.innerHTML=document.getElementById("apelido").value;
d.innerHTML=document.getElementById("barra").value;
c.innerHTML=document.getElementById("descricao").value;
b.innerHTML=document.getElementById("um").value;
a.innerHTML=document.getElementById("qtd").value;
}

    function retornaValor(){
        var valor = document.getElementById("cod_gestor").value;
        var res = valor.split("*");

        document.getElementById("cod_gestor2").value = res[1];
    }      
    
        function retornaValor2(){
        var valor = document.getElementById("cod_gestor").value;
        var res = valor.split("*");

        document.getElementById("cod_gestor3").value = res[0];
    }   
    
    
</script>





<html>
<head>
<head>
&lt;script src="ajax.js"></script>
</head>
<title>Requisição de Materiais</title>


<style type="text/css">
table
{
font-family: verdana;
font-size: 11px;
color: #000099;
font-weight: bold;
}

select
{
font-family: verdana;
font-size: 11px;
}
</style>
<body>


<table border="1" width="40%" cellspacing="0" cellpadding="5" bgcolor="#EAEBEF" bordercolorlight="#FFFFFF" bordercolordark="#E3E5EA">
    <tr>
        <td>
        <b>Aplicação dos items a requisitar / Observações</b><br>
        </td>
        <td>
<textarea rows=10 cols=155 name="ta1"></textarea>
        </td>
    <tr>    </tr>

        <td width="10%">Projeto:</td>
        <td width="30%"><select name="cod_gestor" id="cod_gestor" onchange="retornaValor(), retornaValor2(), MandaID(cod_gestor3.value);">
                <option value="">Selecione um Projeto</option>
                <% while not r1.eof %>
                <option value="<%= r1("CODIGO") & "*" & r1("COD_GESTOR") %>"><%= r1("DESCRICAO") %></option>
                <%
                r1.movenext
                     wend
                %>
                </select>
                
                <input type="hidden"  id="cod_gestor2" name="cod_gestor2">
            

                <input type="hidden"  id="cod_gestor3" name="cod_gestor3">
            
                </td>
    </tr>
        <td>Centro de Custo:</td>
        <td><div id="exibe_ccusto"><select><option value="">Selecione um Centro de Custo</option></select></div>
        </td>
    </tr>
    <tr>
    </table>
    <table border="1" cellspacing="0" cellpadding="5" bgcolor="#EAEBEF" bordercolorlight="#FFFFFF" bordercolordark="#E3E5EA">
        <td>
        Codigo
        </td>
        <td>
        <input type="text" name="apelido" id="apelido" onBlur="popup(this.value, cod_gestor2.value)">
        </td>
        <td>
        Codigo de Barras
        </td>
        <td>
        <input type="text" name="barra" id="barra">
        </td>
        <td>
        Descrição
        </td>
        <td>
        <input type="text" name="descricao" id="descricao" onchange="popup2(this.value, cod_gestor2.value)">
        </td>
        <td>
        UM
        </td>
        <td>
        <input type="text" name="um" id="um">
        </td>
        <td>
        Quantidade
        </td>
        <td>
        <input type="text" name="qtd" id="qtd">
        </td>
        <td>
    <input type="submit" value="Requisitar" OnClick="Insere()">
&nbsp;&nbsp;&nbsp;
<input type="reset" value="  Deletar  "></td>
</tr>
</table>






<form method="post" action="reqins.asp">


<table border="1" width="100%" cellspacing="0" cellpadding="5" id="tabela" name="tabela">

<tr bgcolor="#EAEBEF" bordercolorlight="#FFFFFF" bordercolordark="#E3E5EA">
<td WIDTH="12%"><font  color=#000099 type="verdana"><b>Codigo</b></font></td>
<td width="15%"><font  color=#000099 type="verdana"><b>Codigo de Barra</b></font></td>
<td width="50%"><font  color=#000099 type="verdana"><b>Descricao</b></font></td>
<td width="3%"><font  color=#000099 type="verdana"><b>UM</b></font></td>
<td width="1%"><font  color=#000099 type="verdana"><b>Quantidade</b></font></td>
</tr>

</table>

<br>
<br>

<input type="submit" value="Finalizar Requisição">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="reset" value="Desprezar Requisição">
</form>
</body>
</html>
<%
call fecha_conexao
set r1 = nothing
%>

Se alguém puder me ajudar, eu agradeço muito...abraços

Editado por panox
Link para o comentário
Compartilhar em outros sites

20 respostass a esta questão

Posts Recomendados

  • 0

Panox, beleza? você vai ter que colocar o seu insert dentro de um loop ok?

Como você não sabe onde acaba esse loop deverá usar ubond... da uma pesquisadinha no google... mas certamente o jeito será array e ubond!

você já tem alguma coisa pronta?

dois links pra você dar uma olhada caso precise:

http://scriptbrasil.com.br/forum/index.php?showtopic=33534

http://www.criarweb.com/artigos/percorrer-...-complexos.html

[]'s Rafael Spilki

Link para o comentário
Compartilhar em outros sites

  • 0

fala rafael, tudo certinho ?? bom, eu dei uma pesquisada em arrays e ubound e não entendi direito isso, ainda não tive tempo de esboçar nada com o loop.

outra coisa que me complica, é que eu não vou adicionar somente os items da tabela, tem alguns itens que são fixos, eles seram repetidos no insert mas, pra isso é preciso mudar a estrutura ou é a mesma coisa ??

Você não teria ai uma estrutura já pronta de inserts multiplos ?

Valeu,

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Panox, segue exemplo conforme combinamos:

fiz correndo... mas é mais ou menos por aqui:

variavel = Trim(Request.Form("variavel"))
sql_mult = ""
If variavel <> "" Then
     sql_mult = "("
      array_variavel = Split(variavel, ",")
     For i = 0 To UBound(array_variavel)
          If i <> UBound(array_variavel) Then
               sql_varivel = sql_varivel & "constante = '" & Trim(array_varivel(i)) & "' OR "
          Else
               sql_varivel = sql_varivel & "constante = '" & Trim(array_varivel(i)) & "'"
          End If
     Next
     sql_varivel = sql_varivel & ")"
End If
daí é so incluir sql_varivel como sendo a variavel no seu insert... outro exemplo ainda seria assim:
dim varaivel(3)
variavel(1) = trim(request.form("variavel1"))
variavel(2) = trim(request.form("variavel2"))
variavel(3) = trim(request.form("variavel3"))

for i = 1 to 20
If len(variavel(i)) > 0 then
sql = "INSERT INTO tabela (variavel) VALUES ('"&variavel(i)&"')"
end if
next
ou ainda assim: coloca um contador no seus campos do for html caso eles sejam advindos de uma consulta no bd e depois faça assim: contador = request.form("contador")
for i = 1 to contador
    variavel = request.form("variavel"&i&"")
    sql =  "INSERT INTO tabela (variavel) VALUES ('"&variavel(i)&"')"
next

era isso que eu podia te apresentar de exemplos... certamente devem ter outras formas... mas foi na correrias mesmo aqui... foi isso que eu pude pensar agora!

[]'s Rafael Spilki

Link para o comentário
Compartilhar em outros sites

  • 0

Hmm, no meu caso que os request's que irei utilizar provem de JS, como eu poderia pegar os mesmos ?

function Insere()
{
var x=document.getElementById('tabela').insertRow(1)
var a=x.insertCell(0)
var b=x.insertCell(0)
var c=x.insertCell(0)
var d=x.insertCell(0)
var e=x.insertCell(0)
e.innerHTML=document.getElementById("apelido").value;
d.innerHTML=document.getElementById("barra").value;
c.innerHTML=document.getElementById("descricao").value;
b.innerHTML=document.getElementById("um").value;
a.innerHTML=document.getElementById("qtd").value;
}

Request.form("a") e assim por diante ou tem algum outro metodo ?

Link para o comentário
Compartilhar em outros sites

  • 0

Sinceramente?!? Não faço a mínima idéia! Mas eu sei quem sabe! Esse fórum tem uma ninja chamada Andreia-SP... ela certamente sabe como! Tem um carinha por aqui tb que já vi que é fera em JS que é o jothaz... vamos aguardar que eles dão uma dica! valeu?

[]'s Rafael Spilki

Link para o comentário
Compartilhar em outros sites

  • 0
Sinceramente?!? Não faço a mínima idéia! Mas eu sei quem sabe! Esse fórum tem uma ninja chamada Andreia-SP... ela certamente sabe como! Tem um carinha por aqui tb que já vi que é fera em JS que é o jothaz... vamos aguardar que eles dão uma dica! valeu?

[]'s Rafael Spilki

Na verdade não gosto muito de JavaScript, porém fica dificil não utilizá-lo na web. Uma das melhores coisas detrabalhar com Java, quase não tralbaho mais com ASP é que utilizando JSF não precisamos do JavaScript. Acho que a ninja pde ajudar mais. Mas como não afino vamos tentar enteder esta parada.

Hmm, no meu caso que os request's que irei utilizar provem de JS, como eu poderia pegar os mesmos ?

function Insere()
{
var x=document.getElementById('tabela').insertRow(1)
var a=x.insertCell(0)
var b=x.insertCell(0)
var c=x.insertCell(0)
var d=x.insertCell(0)
var e=x.insertCell(0)
e.innerHTML=document.getElementById("apelido").value;
d.innerHTML=document.getElementById("barra").value;
c.innerHTML=document.getElementById("descricao").value;
b.innerHTML=document.getElementById("um").value;
a.innerHTML=document.getElementById("qtd").value;
}

Request.form("a") e assim por diante ou tem algum outro metodo ?

panox vamos tentar enteder o qual a lógivca de sua página.

Pelo que pude entender você tem um tabela onde vai inserindo linha de acordo com a necessidade. O script acima simlesmente insere (innerHTML) atributos dinamicamente em sua página é isso?

Dai depois você clica em um botão e envia para gravação no bd é isso?

Se for isso que descrevi você pode utilizar o exemplo do Rafael Spilki para cria a rotina de gravação.

Talvez esta tutorial sobre arrays em asp possa ajudá-lo: http://forum.imasters.uol.com.br/index.php?showtopic=225297

Editado por jothaz
Link para o comentário
Compartilhar em outros sites

  • 0
Pelo que pude entender você tem um tabela onde vai inserindo linha de acordo com a necessidade. O script acima simlesmente insere (innerHTML) atributos dinamicamente em sua página é isso?

Dai depois você clica em um botão e envia para gravação no bd é isso?

É exatamente isso jothaz... o problema é que, como elas não foram inseridas por HTML, elas não tem um name, então não consigo dar o request.form nelas... esta é uma das maiores complicações q eu estou tendo

para o insert eu estou usando esta sintaxe

For Each i in Request.Form
    response.Write i & " - " & request(i)&"<br/>"
Next



'Conexao.Execute "Insert Into REQ_REQUISICAO (DATA_LANCTO, DATA_SOLICITADO, COD_USUARIO, QTDE_SOLICITADA, QTDE_ATENDIDA, PRIORIDADE, STATUS, COD_FILIAL, COD_CCUSTO, NUM_REQUISICAO, OBSERVACAO, CUSTO_UNITARIO, COD_PROPRIETARIO, UMEDIDA, DESCRICAO, COD_TECNOLOGIA_GESTOR) values (.....)"

este response.Write i & " - " & request(i)&"<br/>" é só pra testar se esta recebendo tudo.

Link para o comentário
Compartilhar em outros sites

  • 0

Fala panox... algo tipo um contador

n=1

while not rs ...

input name "<%"teste"&n%>"

...

movenext

n=n+1

sacou?

pensei a logica aqui na correria, desta forma acima os inputs terão o nome teste1 teste2 teste3 etc... você pode trocar o contador e tb a palavra... acho que era isso!

[]'s

Link para o comentário
Compartilhar em outros sites

  • 0

hmm entendi mas o problema não esta nos inputs, esses eu recupero perfeitamente... o qeu não consigo recuperar são esses malditos InnersHTML de JS... dentro deles não tem como eu colocar nada que de para fazer o Request não é ?

Eu até pesquisei se tinha como fazer uma tabela dinamica assim em asp mas não encontrei nada

Link para o comentário
Compartilhar em outros sites

  • 0

Já solicitei a alguns minutos...agora é só esperar e torcer para que alguém saiba isso... é uma pena que colegio tecnico não tenha tanta enfase assim nas materias como JS e AJAX... é sempre a mesma coisa, vb, asp, delphi...só ano q vem eu verei php ¬¬

Link para o comentário
Compartilhar em outros sites

  • 0

E vou te confessar... sou uma aberração em JS... até me viro aqui em algumas coisas... to estudando mais agora, tentando me aprimorar! faz uma falta! sempre que preciso é uma tortura... acaba saindo... sempre acabo conseguindo;;; mas como não sou fluente levo horas pra achar uma solução simples!

[]'s

Link para o comentário
Compartilhar em outros sites

  • 0

haha pelo menos você sabe JS... eu tive isso 1 bimestre ano passado e se bem me lembro... não passava dos documents.write e alerts ;D... nem no window.open tivemos tive q aprender na marra mesmo.

tenho 4 materias tecnicas no colegio, minhas medias são 9,5 e 10 principalmente em VB e ASP que me dou até bem com a linguagem. Pensei que eu até sabia alguma coisinha, mas no primeiro dia que começei esse estagio percebi que eu sou é burro ;D hahaha. eu entendo perfeitamente as logicas q o pessoal me passa aqui ou até mesmo voces do forum, mas de que adianta entender a logica se voce não sabe como aplica-la porque nunca te ensinaram ela ?!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...