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

[resolvido] Deletar De Uma Tabela Mas Incluir Em Outra


Notax

Pergunta

Pessoal... to tentando fazer o código abaixo para deletar registros de uma tabela, mas antes de deletar incluir em outra no mesmo bd...

Acho que estou errando na hora de coletar os dados do banco para lançar na outra tabela, já que os mesmos não vem de formulários... tentei assim: mas não deu certo:

outra problema... é que da forma em que está é possivel excluir vários registros ao mesmo tempo utilizando checkbox... portanto a outra dúvida seria como fazer pra tornar possivel inserir vários registros também dependendo da mesma marcação dos checbox...

tentei assim:

strQuery = "INSERT INTO lcaixa WHERE "&sql_id&" (data,historico,tipo,saidas) VALUES ('"&data&"','"&historico&"','"&tipo&"','"&saidas&"')"

mas acusou erro de sintaxe...

à saber: já testei substituindo os valores acima que estão sendo requeridos por valores especificos... por exemplo data=#10/01/07#... neste caso ele exclui direitinho... e inclui os dados específicos que eu digitar...

o script que estou tentando fazer está assim:

<%
Option Explicit
Response.Expires = 0
Dim objConn, stringSQL, strConnection, array_id, i, sql_id, id, strQuery, saidas, valor, objRs, data, historico, tipo

id = Request.QueryString("checkbox")
Set objConn =  Server.CreateObject("ADODB.Connection")
objConn.Open "DBQ=" & Server.MapPath("bd.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}","username","password"
Set objRs =  Server.CreateObject("ADODB.Connection")
objRs.Open "DBQ=" & Server.MapPath("bd.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}","username","password"

if err = 0 and id <> "" then
array_id = split(id,",")
For i=0 to ubound(array_id)
sql_id = sql_id & "a_pagar.codigo = " & Trim(array_id(i)) & " OR "
Next
sql_id = left(sql_id,(len(sql_id)-4))

strQuery = "INSERT INTO lcaixa (data,historico,tipo,saidas) VALUES ('"&data&"','"&historico&"','"&tipo&"','"&saidas&"')"
objRs.Execute(strQuery)

stringSQL = "DELETE * FROM a_pagar WHERE "&sql_id&""
objConn.Execute(stringSQL)

objConn.close
Set objConn = Nothing
objRs.close
Set objRs = Nothing
if err = 0 Then
response.redirect "efetuar_pagto_sucesso.asp"
end if
else
End if%>

valeu pela atençao...

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

17 respostass a esta questão

Posts Recomendados

  • 0

consegue resolver uma parte do problema assim:

criei um campo hidden, na consulta que antecede esse script acima:

Response.Write("<input type='hidden' name='NOME_PELO_QUAL_VAI_RESGATAR' VALUE='" & objRS("NOME_DO_CAMPO_NO_BD") & "' />")

daí nesse script consegui chamar os dados através de request.querystring

tudo ótimo...

o único problema é que só funciona legal mesmo pra quando se seleciona apenas um item...

pra duas ou mais seleção já não rola...

o loop pra deletar mais de um é assim e funciona:

if err = 0 and id <> "" then
array_id = split(id,",")
For i=0 to ubound(array_id)
sql_id = sql_id & "a_pagar.codigo = " & Trim(array_id(i)) & " OR "
Next
sql_id = left(sql_id,(len(sql_id)-4))

tentei colocar o insert aí no meio... mas não rolou... por que apesar dele incluir exatamente a quantidade de numero de registros selecionados ele inclui todos com as mesmas informações do primeiro registro selecionado... ou seja... se eu seleciono 3 ele insere 3 vezes... só sempre com as infs igual ao primeiro da lista!

alguém da um help?

valeu a atenção e forte abraço!

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

  • 0

Bah amigão... que bom poder contar com a tua ajuda aqui tb!

esse é mais um caso que deve estar faltando um detalhe... e o útimo pra acabar essa minha primeira app...

Tentei o insert usando a mesma lógica do delete... mas como o insert não pode ter alterações em sua sintaxe to tentando incluir ele dentro do loop de forma a proporcionar as inclusões corretas... sinto que tá perto... mas apesar dele inclui o numero de vezes exatamente de acordo com o numero de itens selecionados... ele insere todos os registros exatamente igual ao primeiro que aparece na conslta!

o código ta assim agora:

if err = 0 and id <> "" then
array_idi = split(idi,",")
For x=0 to ubound(array_idi)
strQuery = "INSERT INTO lcaixa (data,historico,tipo,saidas) VALUES ('"&data&"','"&historico&"','"&tipo&"','"&saidas&"')"
sql_idi = sql_idi & "a_pagar.codigo = " & Trim(array_idi(x)) & " OR "
objRs.Execute(strQuery)
next 
sql_idi = left(sql_idi,(len(sql_idi)-4))
Session.LCID=1046

A diferença é que agora eu sei coisas como pra que serve ubound ou o split... graças aquele script comentado! rssss...

valeu a força

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

  • 0

a mas olha como ta sua query:

strQuery = "INSERT INTO lcaixa (data,historico,tipo,saidas) VALUES ('"&data&"','"&historico&"','"&tipo&"','"&saidas&"')"

você insere toda vez a mesma coisa, data, historico, tipo e saidas. você não altera os valores dessas variaveis em nenhum lugar no For, ai ele vai incluir sempre a mesma coisa. de onde você pega esses valores??

Link para o comentário
Compartilhar em outros sites

  • 0
uhmmm... pera aí... deixa eu ver se eu entendi... então eu poderia criar uma array pra cada variável e insertar as arrays no BD? é mais ou menos isso?

pode ser sim, mas deve ter jeito mais simples. tipo de onde vem os valores q você poe nessa variavel?? é do recordset?? se for, é so você dar um MoveNext dentro do For e pegar os dados direto do RecordSet.

Link para o comentário
Compartilhar em outros sites

  • 0

ihhh... não entendi direito... mas sim... vem do recordset... conforme o script que to postando abaixo...

nesse script verás que eu criei variáveis hidden que era pra chama-las por request.querystring no script do insert... nesse caso... de pegar os dados direto do recordset, elas perderiam utilidade, não?

E como fazer pra pegar os dados direto do recordset? é por request.querystring tb? No caso em questão o meu objeto recordset é o: objRs...

o script que antecede o do insert é esse abaixo:

<%
Option Explicit
Response.Expires = 0
Dim objConn, objRs, strQuery, ComandoSQL, Conexao, objrs2, strsql2, valor_resultado, ddi, mmi, aai, datai, ddf, mmf, aaf, dataf
Dim strConnection
ddi = request.form ("txtddi")
mmi = request.form ("txtmmi")
aai = request.form ("txtaai")
datai = (ddi &"/"& mmi &"/"& aai)
datai = Cdate(day (datai) &"/"& month (datai) &"/"& year (datai))

ddf = request.form ("txtddf")
mmf = request.form ("txtmmf")
aaf = request.form ("txtaaf")
dataf = (ddf &"/"& mmf &"/"& aaf)
dataf = Cdate(day (dataf) &"/"& month (dataf) &"/"& year (dataf))

Session.LCID=1033
ComandoSQL = "SELECT * FROM a_pagar WHERE DATA BETWEEN #" & (datai) & "# and #" & (dataf) & "# ORDER BY DATA ASC"
Set objConn =  Server.CreateObject("ADODB.Connection")
objConn.Open "DBQ=" & Server.MapPath("bd.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}","username","password"
strQuery = "SELECT * FROM a_pagar"
Set ObjRs = objConn.Execute(ComandoSQL)
Session.LCID=1046 
%>
<html>
<head>
<title>SJ Finance - à Pagar - exclui</title>
</head>
<body bgcolor="#FFFFFF">
<div align="center" style="width: 756; height: 119"> 
  <p align="left"><font face="Verdana, Arial, Helvetica, sans-serif"><em><strong>Contas 
    &agrave; <font color="#FF0000">Pagar</font> - Efetuar Pagto.</strong></em></font></p>
  <table width="947" border="0" cellspacing="0" cellpadding="0" height="1">
    <tr>
      <td width="947" valign="top" height="136"> 
        <table border="0" cellpadding="0" cellspacing="0" width="958">
          <tr> 
            <td> <form method="GET" action="action_efetuar_pagto.asp">
            <%Response.Write("<input type='hidden' name='txtData' VALUE='" & objRS("data") & "' />")%>
            <%Response.Write("<input type='hidden' name='txtHistorico' VALUE='" & objRS("historico") & "' />")%>
            <%Response.Write("<input type='hidden' name='txtTipo' VALUE='" & objRS("tipo") & "' />")%>
            <%Response.Write("<input type='hidden' name='txtValor' VALUE='" & objRS("valor") & "' />")%>
                <table width="736" border="0" cellspacing="0" cellpadding="0" height="1">
                  <tr> 
                    <td height="1" align="center" width="734"> <table border="0" width="952" height="65" cellpadding="2">
                        <tr bgcolor="#0099FF"> 
                          <td width="96" height="1" align="center"> <font size="1" color="FFFFFF"><b><font face="Verdana">DATA</font></b></font></td>
                          <td colspan="2" height="1" align="center"> <font size="1" color="FFFFFF"><b></b> 
                            </font> <font size="1" color="FFFFFF"><b><font face="Verdana">HIST&Oacute;RICO</font></b> 
                            </font></td>
                          <td width="302" height="1" align="center"> <font size="1" color="FFFFFF"><b><font face="Verdana">TIPO</font></b></font></td>
                          <td width="124" height="1" align="center"><font size="1" color="FFFFFF"><b><font face="Verdana">VALOR</font></b> 
                            </font></td>
                          <td width="67" height="1" align="center"> <font size="1" color="FFFFFF"> 
                            <input type="submit" name="Submit" value="Excluir">
                            </font></td>
                        </tr>
                        <%While Not objRS.EOF %>
                        <tr bgcolor="#FF9900"> 
                          <td width="96" height="1" align="center"> <div align="left"><font size="1"><b><font face="Verdana, Arial, Helvetica, sans-serif" color="#000000"> 
                              <%Response.write objRS("data")%>
                              </font> </b></font></div></td>
                          <td colspan="2" height="1" align="center"> <div align="left"><font size="1"><b><font face="Verdana, Arial, Helvetica, sans-serif" color="#000000"> 
                              </font> </b></font> <font size="1"><b><font face="Verdana, Arial, Helvetica, sans-serif"> 
                              <%Response.write objRS("historico")%>
                              </font></b></font></div></td>
                          <td width="302" height="1" align="center"> <div align="left"><font size="1"><b><font face="Verdana, Arial, Helvetica, sans-serif"> 
                              <%Response.write objRS("tipo")%></a>
                              </font></b></font></div></td>
                          <td width="124" height="1" align="center"> <div align="left"><font size="1"><b><font face="Verdana, Arial, Helvetica, sans-serif" color="#000000"> 
                              <%Response.write formatnumber(objRS("valor"),2) %>
                              </font></b></font></div></td>
                          <td width="67" height="1" align="center"> <div align="center"><font size="1"><b><font face="Verdana, Arial, Helvetica, sans-serif" color="#000000"> 
                              <input type="checkbox" name="checkbox" value="<%=objRS(0)%>">
                              </font> </b></font></div></td>
                        </tr>
                        <%
  'Movendo para o proximo registro
  objRS.MoveNext
  Wend
  'Fechando as conexões
  objRs.close
  objConn.close
  Set objRs = Nothing
  Set objConn = Nothing
  %>
                      </table></td>
                  </tr>
                </table>
              </form></td>
          </tr>
        </table>
      </td>
    </tr>
  </table>
</div>
</body>
</html>

eu tentei aqui um esboço... de como eu poderia usar isso que mencionou... mas não funcionou... me embananei todo... não to sabendo como proceder com o recordset e com um array no insert.... deu erro de sintaxe... na verdade já aguardava por algo desse tipo... mas enfim... foi apenas uma tentativa desesperada...rsssssssss

fiz isso:

if err = 0 and id <> "" then

array_idi = split(idi,",")

For x=0 to ubound(array_idi)

strQuery = "INSERT INTO lcaixa " & array_idi & " VALUES ('"&data&"','"&historico&"','"&tipo&"','"&saidas&"')"

sql_idi = sql_idi & "a_pagar.codigo = " & Trim(array_idi(x)) & " OR "

objRs.MoveNext

objRs.Execute(strQuery)

next

sql_idi = left(sql_idi,(len(sql_idi)-4))

Session.LCID=1046

valeu a força!

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

  • 0

então. olha:

<%Response.Write("<input type='hidden' name='txtData' VALUE='" & objRS("data") & "' />")%>
            <%Response.Write("<input type='hidden' name='txtHistorico' VALUE='" & objRS("historico") & "' />")%>
            <%Response.Write("<input type='hidden' name='txtTipo' VALUE='" & objRS("tipo") & "' />")%>
            <%Response.Write("<input type='hidden' name='txtValor' VALUE='" & objRS("valor") & "' />")%>[/code] aqui você só poe o primeiro registro, entendeu?? o valor que vai estar no input vai ser só o do primero registro do select, os otros vai ficar de fora. o q você podia fazer era tipo assim:
[code]<% i = 1
            Do While Not objRS.EOF
                  Response.Write("<input type='hidden' name='txtData" & i "' VALUE='" & objRS("data") & "' />")
                  Response.Write("<input type='hidden' name='txtHistorico" & i "' VALUE='" & objRS("historico") & "' />")
                  Response.Write("<input type='hidden' name='txtTipo" & i "' VALUE='" & objRS("tipo") & "' />")
                  Response.Write("<input type='hidden' name='txtValor" & i "' VALUE='" & objRS("valor") & "' />")
                  i = i + 1
                  objRS.MoveNext
            Loop
entendeu?? assim a primeira data vai ficar gravada no input txtData1, a segunda em txtData2 e etc. ai quando chegar aqui:
if err = 0 and id <> "" then
array_idi = split(idi,",")
For x=0 to ubound(array_idi)
strQuery = "INSERT INTO lcaixa " & array_idi & " VALUES ('"&data&"','"&historico&"','"&tipo&"','"&saidas&"')"
sql_idi = sql_idi & "a_pagar.codigo = " & Trim(array_idi(x)) & " OR "
objRs.MoveNext
objRs.Execute(strQuery)
next
sql_idi = left(sql_idi,(len(sql_idi)-4))
Session.LCID=1046[/code] já não sei direito como funciona seu codigo?? essa variavel idi é o q?? o ubound do array_idi vai trazer o numero de registros q você tem q incluir?? se for, você poderia fazer o insert mais o menos assim:
[code]strQuery = "INSERT INTO lcaixa " & array_idi & " VALUES ('" & Request.Form("txtData" & x + 1) & "','" & Request.Form("txtHistorico" & x + 1) & "','" & Request.Form("txtTipo" & x + 1) & "','" & Request.Form("txtValor" & x + 1) & "')"

tb não entendi o array_idi faz nesse seu insert?? ela não é um array com os ids?? porque ela aparece no insert onde deviam estar os nomes dos campos e, ainda por cima, sem indice??

Link para o comentário
Compartilhar em outros sites

  • 0

Puxa... eu entendi integralmente tudo o que quiseste dizer... mas não é por vagabundagem... mas eu não consegui colocar na pratica...

Agora eu entendi por exemplo a questão dos campo hidden, do porque só estava icluindo um... mas minha dificuldade está em implantar sua sugestão no meu script... porque ela já tem uma lógica parecida, e daí quando eu incluo essa fica tipo "bagunçado" e eu não to sabendo organizar as ideiais... deixar a casa em ordem... implantar a sua ideia dentro da já existente... eu vou postar os dois codigos completos abaixo... e tenho certeza que ira entender o que eu quiz dizer... é que nesse código já estou usando o While Not objRS.EOF e o movefirst objRS e daí por causa disso o form de escolha ficou todo alterado!

já com relação a essa parte aqui:

"já não sei direito como funciona seu codigo?? essa variavel idi é o q?? o ubound do array_idi vai trazer o numero de registros q você tem q incluir?? se for, você poderia fazer o insert mais o menos assim:"

isso mesmo... o ubound é pra trazer o numero de registros a serem incluidos... e o idi são os digamos "chckboxes" marcados... ela está assim: idi = Request.QueryString("checkbox")...

Bom... fico chateado de não ter conseguido aproveitar as tuas valiosas sujestões ainda devido a minha grande falta de conhecimento... mas to lutando pra adquiri-lo de forma mais rápida... estudando cada vez mais!

Estou muito grato por todo sua atenção e dedicação...

vamos aos códigos:

daqui vem os dados a serem deletados / incluidos

<%
Option Explicit
Response.Expires = 0
Dim objConn, objRs, strQuery, ComandoSQL, Conexao, objrs2, strsql2, valor_resultado, ddi, mmi, aai, datai, ddf, mmf, aaf, dataf
Dim strConnection
ddi = request.form ("txtddi")
mmi = request.form ("txtmmi")
aai = request.form ("txtaai")
datai = (ddi &"/"& mmi &"/"& aai)
datai = Cdate(day (datai) &"/"& month (datai) &"/"& year (datai))

ddf = request.form ("txtddf")
mmf = request.form ("txtmmf")
aaf = request.form ("txtaaf")
dataf = (ddf &"/"& mmf &"/"& aaf)
dataf = Cdate(day (dataf) &"/"& month (dataf) &"/"& year (dataf))

Session.LCID=1033
ComandoSQL = "SELECT * FROM a_pagar WHERE DATA BETWEEN #" & (datai) & "# and #" & (dataf) & "# ORDER BY DATA ASC"
Set objConn =  Server.CreateObject("ADODB.Connection")
objConn.Open "DBQ=" & Server.MapPath("bd.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}","username","password"
strQuery = "SELECT * FROM a_pagar"
Set ObjRs = objConn.Execute(ComandoSQL)
Session.LCID=1046 
%>
<html>
<head>
<title>SJ Finance - à Pagar - exclui</title>
</head>
<body bgcolor="#FFFFFF">
<div align="center" style="width: 756; height: 119"> 
  <p align="left"><font face="Verdana, Arial, Helvetica, sans-serif"><em><strong>Contas 
    à <font color="#FF0000">Pagar</font> - Efetuar Pagto.</strong></em></font></p>
  <table width="947" border="0" cellspacing="0" cellpadding="0" height="1">
    <tr>
      <td width="947" valign="top" height="136"> 
        <table border="0" cellpadding="0" cellspacing="0" width="958">
          <tr> 
            <td> <form method="GET" action="action_efetuar_pagto.asp">
            <%Response.Write("<input type='hidden' name='txtData' VALUE='" & objRS("data") & "' />")%>
            <%Response.Write("<input type='hidden' name='txtHistorico' VALUE='" & objRS("historico") & "' />")%>
            <%Response.Write("<input type='hidden' name='txtTipo' VALUE='" & objRS("tipo") & "' />")%>
            <%Response.Write("<input type='hidden' name='txtValor' VALUE='" & objRS("valor") & "' />")%>


            
                <table width="736" border="0" cellspacing="0" cellpadding="0" height="1">
                  <tr> 
                    <td height="1" align="center" width="734"> <table border="0" width="952" height="65" cellpadding="2">
                        <tr bgcolor="#0099FF"> 
                          <td width="96" height="1" align="center"> <font size="1" color="FFFFFF"><b><font face="Verdana">DATA</font></b></font></td>
                          <td colspan="2" height="1" align="center"> <font size="1" color="FFFFFF"><b></b> 
                            </font> <font size="1" color="FFFFFF"><b><font face="Verdana">HISTÓRICO</font></b> 
                            </font></td>
                          <td width="302" height="1" align="center"> <font size="1" color="FFFFFF"><b><font face="Verdana">TIPO</font></b></font></td>
                          <td width="124" height="1" align="center"><font size="1" color="FFFFFF"><b><font face="Verdana">VALOR</font></b> 
                            </font></td>
                          <td width="67" height="1" align="center"> <font size="1" color="FFFFFF"> 
                            <input type="submit" name="Submit" value="Excluir">
                            </font></td>
                        </tr>
                        <%While Not objRS.EOF %>
                        <tr bgcolor="#FF9900"> 
                          <td width="96" height="1" align="center"> <div align="left"><font size="1"><b><font face="Verdana, Arial, Helvetica, sans-serif" color="#000000"> 
                              <%Response.write objRS("data")%>
                              </font> </b></font></div></td>
                          <td colspan="2" height="1" align="center"> <div align="left"><font size="1"><b><font face="Verdana, Arial, Helvetica, sans-serif" color="#000000"> 
                              </font> </b></font> <font size="1"><b><font face="Verdana, Arial, Helvetica, sans-serif"> 
                              <%Response.write objRS("historico")%>
                              </font></b></font></div></td>
                          <td width="302" height="1" align="center"> <div align="left"><font size="1"><b><font face="Verdana, Arial, Helvetica, sans-serif"> 
                              <%Response.write objRS("tipo")%></a>
                              </font></b></font></div></td>
                          <td width="124" height="1" align="center"> <div align="left"><font size="1"><b><font face="Verdana, Arial, Helvetica, sans-serif" color="#000000"> 
                              <%Response.write formatnumber(objRS("valor"),2) %>
                              </font></b></font></div></td>
                          <td width="67" height="1" align="center"> <div align="center"><font size="1"><b><font face="Verdana, Arial, Helvetica, sans-serif" color="#000000"> 
                              <input type="checkbox" name="checkbox" value="<%=objRS(0)%>">
                              </font> </b></font></div></td>
                        </tr>
                        <%
  'Movendo para o proximo registro
  objRS.MoveNext
  Wend
  'Fechando as conexões
  objRs.close
  objConn.close
  Set objRs = Nothing
  Set objConn = Nothing
  %>
                      </table></td>
                  </tr>
                </table>
              </form></td>
          </tr>
        </table>
      </td>
    </tr>
  </table>
</div>
</body>
</html>
aqui é onde eles são de fato deletados de uma tab e incluidos em outra:
<%
Option Explicit
Response.Expires = 0
Dim objConn, stringSQL, strConnection, array_id, i, sql_id, id, strQuery, saidas, valor, objRs, data, historico, tipo, array_idi, x, sql_idi, idi
Session.LCID=1033

data = Request.querystring ("txtData")
data = Cdate(day (data) &"/"& month (data) &"/"& year (data))
historico = request.querystring ("txtHistorico")
tipo = request.querystring ("txtTipo")
saidas = request.querystring ("txtValor")

id = Request.QueryString("checkbox")
idi = Request.QueryString("checkbox") 
'On error Resume Next
Set objConn =  Server.CreateObject("ADODB.Connection")
objConn.Open "DBQ=" & Server.MapPath("bd.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}","username","password"
Set objRs =  Server.CreateObject("ADODB.Connection")
objRs.Open "DBQ=" & Server.MapPath("bd.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}","username","password"

if err = 0 and id <> "" then
array_id = split(id,",")
For i=0 to ubound(array_id)
sql_id = sql_id & "a_pagar.codigo = " & Trim(array_id(i)) & " OR "
Next
sql_id = left(sql_id,(len(sql_id)-4))

if err = 0 and id <> "" then
array_idi = split(idi,",")
For x=0 to ubound(array_idi)
strQuery = "INSERT INTO lcaixa " & array_idi & " VALUES ('" & Request.Form("txtData" & x + 1) & "','" & Request.Form("txtHistorico" & x + 1) & "','" & Request.Form("txtTipo" & x + 1) & "','" & Request.Form("txtValor" & x + 1) & "')"sql_idi = sql_idi & "a_pagar.codigo = " & Trim(array_idi(x)) & " OR "
  objRS.MoveNext
objRs.Execute(strQuery)
next 
sql_idi = left(sql_idi,(len(sql_idi)-4))
Session.LCID=1046
        
stringSQL = "DELETE * FROM a_pagar WHERE "&sql_id&""
objConn.Execute(stringSQL)
objConn.close
Set objConn = Nothing
objRs.close
Set objRs = Nothing
if err = 0 Then
response.redirect "efetuar_pagto_sucesso.asp"
end if
          
else
End if
End if%>

só lembrar que o delete ta funcionando legal... o problema mesmo tá no insert!

valeu a força! um forte abraço...

Link para o comentário
Compartilhar em outros sites

  • 0

eu tava pensando agora, acho q você nem precisa dos inputs hidden. porque se o idi já vai trazer os ids q você precisa não é so você fazer o select antes de excluir?? tipo assim:

if err = 0 and id <> "" then
array_idi = split(idi,",")
For x=0 to ubound(array_idi)
strQuery = "Select * From NOME_DA_SUA_TABELA WHere NOME_DO_SEU_CAMPO_ID = " & array_idi(x)
Set objRS = objConn.Execute(strQuery)
strQuery = "INSERT INTO lcaixa " & array_idi & " VALUES ('"& objRS("data") &"','"& objRS("historico") &"','"& objRS("tipo") &"','"& objRS("saidas") &"')"
sql_idi = sql_idi & "a_pagar.codigo = " & Trim(array_idi(x)) & " OR "
objConn.Execute(strQuery)
next
sql_idi = left(sql_idi,(len(sql_idi)-4))
Session.LCID=1046[/code]

Link para o comentário
Compartilhar em outros sites

  • 0

rssssssss... putz que coincidencia...

estou aqui na batalha e vinha pensando a mesma coisa!

olha só como to tentando agora aí embaixo... to indo pela mesma linha de raciocinio... e mais... porque eu então não posso usar a mesma array do delete? afinal vem tudo do mesmo lugar, não?

mas ta dando esse erro aqui:

Microsoft VBScript compilation error '800a0401'

Expected end of statement

/padrão/action_efetuar_pagto.asp, line 25

strQuery = "INSERT INTO lcaixa " & array_id & " VALUES ('" & Request.Form("data" & i + 1) & "','" & Request.Form("historico" & i + 1) & "','" & Request.Form("tipo" & i + 1) & "','" & Request.Form("valor" & i + 1) & "')"sql_id = sql_id & "a_pagar.codigo = " & Trim(array_id(i)) & " OR "

o erro aponta pra essa parte especifica: )"sql_id = sql_id

o codigo ta assim... o que acha?

parte da escolha:

<%
Option Explicit
Response.Expires = 0
Dim objConn, objRs, strQuery, ComandoSQL, Conexao, objrs2, strsql2, valor_resultado, ddi, mmi, aai, datai, ddf, mmf, aaf, dataf
Dim strConnection
ddi = request.form ("txtddi")
mmi = request.form ("txtmmi")
aai = request.form ("txtaai")
datai = (ddi &"/"& mmi &"/"& aai)
datai = Cdate(day (datai) &"/"& month (datai) &"/"& year (datai))

ddf = request.form ("txtddf")
mmf = request.form ("txtmmf")
aaf = request.form ("txtaaf")
dataf = (ddf &"/"& mmf &"/"& aaf)
dataf = Cdate(day (dataf) &"/"& month (dataf) &"/"& year (dataf))

Session.LCID=1033
ComandoSQL = "SELECT * FROM a_pagar WHERE DATA BETWEEN #" & (datai) & "# and #" & (dataf) & "# ORDER BY DATA ASC"
Set objConn =  Server.CreateObject("ADODB.Connection")
objConn.Open "DBQ=" & Server.MapPath("bd.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}","username","password"
strQuery = "SELECT * FROM a_pagar"
Set ObjRs = objConn.Execute(ComandoSQL)
Session.LCID=1046 
%>
<html>
<head>
<title>SJ Finance - à Pagar - exclui</title>
</head>
<body bgcolor="#FFFFFF">
<div align="center" style="width: 756; height: 119"> 
  <p align="left"><font face="Verdana, Arial, Helvetica, sans-serif"><em><strong>Contas 
    &agrave; <font color="#FF0000">Pagar</font> - Efetuar Pagto.</strong></em></font></p>
  <table width="947" border="0" cellspacing="0" cellpadding="0" height="1">
    <tr>
      <td width="947" valign="top" height="136"> 
        <table border="0" cellpadding="0" cellspacing="0" width="958">
          <tr> 
            <td> <form method="GET" action="action_efetuar_pagto.asp">
            
                <table width="736" border="0" cellspacing="0" cellpadding="0" height="1">
                  <tr> 
                    <td height="1" align="center" width="734"> <table border="0" width="952" height="65" cellpadding="2">
                        <tr bgcolor="#0099FF"> 
                          <td width="96" height="1" align="center"> <font size="1" color="FFFFFF"><b><font face="Verdana">DATA</font></b></font></td>
                          <td colspan="2" height="1" align="center"> <font size="1" color="FFFFFF"><b></b> 
                            </font> <font size="1" color="FFFFFF"><b><font face="Verdana">HIST&Oacute;RICO</font></b> 
                            </font></td>
                          <td width="302" height="1" align="center"> <font size="1" color="FFFFFF"><b><font face="Verdana">TIPO</font></b></font></td>
                          <td width="124" height="1" align="center"><font size="1" color="FFFFFF"><b><font face="Verdana">VALOR</font></b> 
                            </font></td>
                          <td width="67" height="1" align="center"> <font size="1" color="FFFFFF"> 
                            <input type="submit" name="Submit" value="Excluir">
                            </font></td>
                        </tr>
                        <%While Not objRS.EOF %>
                        <tr bgcolor="#FF9900"> 
                          <td width="96" height="1" align="center"> <div align="left"><font size="1"><b><font face="Verdana, Arial, Helvetica, sans-serif" color="#000000"> 
                              <%Response.write objRS("data")%>
                              </font> </b></font></div></td>
                          <td colspan="2" height="1" align="center"> <div align="left"><font size="1"><b><font face="Verdana, Arial, Helvetica, sans-serif" color="#000000"> 
                              </font> </b></font> <font size="1"><b><font face="Verdana, Arial, Helvetica, sans-serif"> 
                              <%Response.write objRS("historico")%>
                              </font></b></font></div></td>
                          <td width="302" height="1" align="center"> <div align="left"><font size="1"><b><font face="Verdana, Arial, Helvetica, sans-serif"> 
                              <%Response.write objRS("tipo")%></a>
                              </font></b></font></div></td>
                          <td width="124" height="1" align="center"> <div align="left"><font size="1"><b><font face="Verdana, Arial, Helvetica, sans-serif" color="#000000"> 
                              <%Response.write formatnumber(objRS("valor"),2) %>
                              </font></b></font></div></td>
                          <td width="67" height="1" align="center"> <div align="center"><font size="1"><b><font face="Verdana, Arial, Helvetica, sans-serif" color="#000000"> 
                              <input type="checkbox" name="checkbox" value="<%=objRS(0)%>">
                              </font> </b></font></div></td>
                        </tr>
                        <%
  'Movendo para o proximo registro
  objRS.MoveNext
  Wend
  'Fechando as conexões
  objRs.close
  objConn.close
  Set objRs = Nothing
  Set objConn = Nothing
  %>
                      </table></td>
                  </tr>
                </table>
              </form></td>
          </tr>
        </table>
      </td>
    </tr>
  </table>
</div>
</body>
</html>
delete e insert:
<%
Option Explicit
Response.Expires = 0
Dim objConn, stringSQL, strConnection, array_id, i, sql_id, id, strQuery, saidas, valor, objRs, data, historico, tipo, array_idi, x, sql_idi, idi
Session.LCID=1033

'data = Request.querystring ("txtData")
'data = Cdate(day (data) &"/"& month (data) &"/"& year (data))
'historico = request.querystring ("txtHistorico")
'tipo = request.querystring ("txtTipo")
'saidas = request.querystring ("txtValor")

id = Request.QueryString("checkbox")
'idi = Request.QueryString("checkbox") 
'On error Resume Next
Set objConn =  Server.CreateObject("ADODB.Connection")
objConn.Open "DBQ=" & Server.MapPath("bd.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}","username","password"
Set objRs =  Server.CreateObject("ADODB.Connection")
objRs.Open "DBQ=" & Server.MapPath("bd.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}","username","password"

if err = 0 and id <> "" then
array_id = split(id,",")
For i=0 to ubound(array_id)
sql_id = sql_id & "a_pagar.codigo = " & Trim(array_id(i)) & " OR "
strQuery = "INSERT INTO lcaixa " & array_id & " VALUES ('" & Request.Form("data" & i + 1) & "','" & Request.Form("historico" & i + 1) & "','" & Request.Form("tipo" & i + 1) & "','" & Request.Form("valor" & i + 1) & "')"sql_id = sql_id & "a_pagar.codigo = " & Trim(array_id(i)) & " OR "
Next
sql_id = left(sql_id,(len(sql_id)-4))

'if err = 0 and id <> "" then
'array_idi = split(idi,",")
'For x=0 to ubound(array_idi)
'strQuery = "INSERT INTO lcaixa " & array_idi & " VALUES ('" & Request.Form("txtData" & x + 1) & "','" & Request.Form("txtHistorico" & x + 1) & "','" & Request.Form("txtTipo" & x + 1) & "','" & Request.Form("txtValor" & x + 1) & "')"sql_idi = sql_idi & "a_pagar.codigo = " & Trim(array_idi(x)) & " OR "
'  objRS.MoveNext
'objRs.Execute(strQuery)
'next 
'sql_idi = left(sql_idi,(len(sql_idi)-4))
Session.LCID=1046
        
stringSQL = "DELETE * FROM a_pagar WHERE "&sql_id&""
objConn.Execute(stringSQL)
objConn.close
Set objConn = Nothing
objRs.close
Set objRs = Nothing
if err = 0 Then
response.redirect "efetuar_pagto_sucesso.asp"
end if
          
else
End if
End if%>

Link para o comentário
Compartilhar em outros sites

  • 0

da uma olhada como ta essa linha.

strQuery = "INSERT INTO lcaixa " & array_id & " VALUES ('" & Request.Form("data" & i + 1) & "','" & Request.Form("historico" & i + 1) & "','" & Request.Form("tipo" & i + 1) & "','" & Request.Form("valor" & i + 1) & "')"sql_id = sql_id & "a_pagar.codigo = " & Trim(array_id(i)) & " OR "
tem duas instrucoes na memsa linha. deveria estar assim ó:
strQuery = "INSERT INTO lcaixa " & array_id & " VALUES ('" & Request.Form("data" & i + 1) & "','" & Request.Form("historico" & i + 1) & "','" & Request.Form("tipo" & i + 1) & "','" & Request.Form("valor" & i + 1) & "')"
sql_id = sql_id & "a_pagar.codigo = " & Trim(array_id(i)) & " OR "[/code]

Link para o comentário
Compartilhar em outros sites

  • 0

entendi o erro... de qualquer forma o testei denovo e o erro coincidiu com esse abaixo... que ocorreu quando tentei ainda utilizar duas arrays... que na verdade são basicamente a mesma coisa, só com nomes diferentes!

o erro que deu foi esse aqui:

Microsoft VBScript runtime error '800a0005'

Invalid procedure call or argument: 'left'

/padrão/action_efetuar_pagto.asp, line 37 que vem a ser:

sql_idi = left(sql_idi,(len(sql_idi)-4))

o script agora ta assim:

<%
Option Explicit
Response.Expires = 0
Dim objConn, stringSQL, strConnection, array_id, i, sql_id, id, strQuery, saidas, valor, objRs, data, historico, tipo, array_idi, x, sql_idi, idi
Session.LCID=1033

'data = Request.querystring ("txtData")
'data = Cdate(day (data) &"/"& month (data) &"/"& year (data))
'historico = request.querystring ("txtHistorico")
'tipo = request.querystring ("txtTipo")
'saidas = request.querystring ("txtValor")

id = Request.QueryString("checkbox")
'idi = Request.QueryString("checkbox") 
'On error Resume Next
Set objConn =  Server.CreateObject("ADODB.Connection")
objConn.Open "DBQ=" & Server.MapPath("bd.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}","username","password"
Set objRs =  Server.CreateObject("ADODB.Connection")
objRs.Open "DBQ=" & Server.MapPath("bd.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}","username","password"

if err = 0 and id <> "" then
array_id = split(id,",")
For i=0 to ubound(array_id)
sql_id = sql_id & "a_pagar.codigo = " & Trim(array_id(i)) & " OR "
Next
sql_id = left(sql_id,(len(sql_id)-4))

if err = 0 and id <> "" then
array_idi = split(idi,",")
For x=0 to ubound(array_idi)
strQuery = "Select * From NOME_DA_SUA_TABELA WHere NOME_DO_SEU_CAMPO_ID = " & array_idi(x)
Set objRS = objConn.Execute(strQuery)
strQuery = "INSERT INTO lcaixa " & array_idi & " VALUES ('"& objRS("data") &"','"& objRS("historico") &"','"& objRS("tipo") &"','"& objRS("saidas") &"')"
sql_idi = sql_idi & "a_pagar.codigo = " & Trim(array_idi(x)) & " OR "
objConn.Execute(strQuery)
next
sql_idi = left(sql_idi,(len(sql_idi)-4))
Session.LCID=1046
        
stringSQL = "DELETE * FROM a_pagar WHERE "&sql_id&""
objConn.Execute(stringSQL)
objConn.close
Set objConn = Nothing
objRs.close
Set objRs = Nothing
if err = 0 Then
response.redirect "efetuar_pagto_sucesso.asp"
end if
          
else
End if
End if%>

Link para o comentário
Compartilhar em outros sites

  • 0

Amigão... pô... esse troço não ta saindo da minha cabeça... olha só o erro que começou a dar agora é de "type mismach" na linha do insert:

strQuery = "INSERT INTO lcaixa " & array_idi & " VALUES ('"& objRS("data") &"','"& objRS("historico") &"','"& objRS("tipo") &"','"& objRS("saidas") &"')"

e eu acho que é por que na tab a_pagar o campo valor tem nome de VALOR e na tab lcaixa o campo valor tem nome de SAIDAS... pode ser isso?

sabes como eu poderia resolver?

eu já tentei igualar valor=saidas, mas não rolou!

Agora... eu ia lhe pedir pra me explicar uma coisa... porque eu tava achando que isso deveria ser muito mas muito mais simples do que está sendo... veja bem:

esse é o código exclusivo de exclusão da tab a_pagar que funciona perfeitamente... saca só:

<%
Option Explicit
Response.Expires = 0
Dim objConn, stringSQL, strConnection, array_id, i, sql_id, id
id = Request.QueryString("checkbox")
'Caso ocorra algum erro os precessos não são interrompidos 
'e é passado para a próxima linha de comando
On error Resume Next
' Conectando com o banco de dados contato.mdb
Set objConn =  Server.CreateObject("ADODB.Connection")
objConn.Open "DBQ=" & Server.MapPath("bd.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}","username","password"
'Deletando registro da tabela contato onde esta a id
        if err = 0 and id <> "" then
            array_id = split(id,",")
            For i=0 to ubound(array_id)
                sql_id = sql_id & "a_pagar.codigo = " & Trim(array_id(i)) & " OR "
                                                         'campo texto, então" & Trim(array_id(i)) & " OR "
                                                         'caso numerico '" & Trim(array_id(i)) & "' OR "
            Next
            sql_id = left(sql_id,(len(sql_id)-4))
            stringSQL = "DELETE * FROM a_pagar WHERE "&sql_id&""
            objConn.Execute(stringSQL)
            objConn.close
            Set objConn = Nothing
            if err = 0 Then

response.redirect "efetuar_pagto_sucesso.asp"
end if
          
else
End if
%>

Então pô... eu parei pra pensar... será que é mesmo necessário criar uma outra array só para inclusão? porque... os registros que quero incluir na tab lcaixa são exatamente os mesmos que quero excluir da tab a_pagar... a única coisa é que preciso incluir antes de excluir, certo? ;-)

Daí recapitulando pensei, minha única dificuldade é que pelo que estudei, não posso fazer o insert como está o delete abaixo:

stringSQL = "DELETE * FROM a_pagar WHERE "&sql_id&""

porque dá erro de sintaxe se eu tentar assim:

stringSQL = "INSERT INTO lcaixa where "&sql_id&" (data,historico,tipo,valor) VALUES ('"&data&"','"&historico&"','"&tipo&"','"&saidas&"')"

Então... pensei... vou meter o insert dentro dum loop e resolvo o problema... mas até agora estava tentando criar um loop novo, com nova array e etc... minha pergunta é: será que não teria como e não seria muito mais fácil enfiar o insert dentro do loop do delete! e usar um loop só pra duas coisas? afinal são os mesmo registros!

o que acha? não facilitaria?

o problema é, como fazer? rsssssssssssss

valeu a força... forte abraço!

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

  • 0

mano... "insert where", isso não existe não hahah

aiaiai isso ta ficando complicado. tipo, seu codigo não ta me entrando na cabeca como você imaginou.

olha, esquece os campos hidden e os arrays pros campos, você não precisaria disso não, você só precisa ter o id do registro. ai você tendo todos os ids você faz um select e ai um insert. tipo assim:

For i=0 to ubound(array_id)
                sql = "Select * From NOME_DA_SUA_TABELA Where NOME_DO_SEU_CAMPO_ID = " & Trim(array_id(i))
                Set objRS = objConn.Execute(sql)

                sql = "Insert Into NOME_DA_TABELA_ONDE_VC_QUER_INSERIR (NOME_DO_CAMPO_ONDE_VC_VAI_GRAVAR_A_DATA, NOME_DO_CAMPO_ONDE_VC_VAI_GRAVAR_O_HISTORICO, NOME_DO_CAMPO_ONDE_VC_VAI_GRAVAR_O_TIPO, NOME_DO_CAMPO_ONDE_VC_VAI_GRAVAR_AS_SAIDAS) Values ('"& objRS("data") &"','"& objRS("historico") &"','"& objRS("tipo") &"','"& objRS("saidas") &"')"
                objConn.Execute(sql)

                sql_id = sql_id & "a_pagar.codigo = " & Trim(array_id(i)) & " OR "
                                                         'campo texto, então" & Trim(array_id(i)) & " OR "
                                                         'caso numerico '" & Trim(array_id(i)) & "' OR "
            Next[/code]

seria simplesmente isso. ai é so você substituir pelos nomes corretos das suas tabelas/campos/objetos/variaveis e pronto.

veja ai se você consegue.

Link para o comentário
Compartilhar em outros sites

  • 0

Fala amigão!

Bha che! agora sim! Consegui chegar a algum lugar... graças a sua ajuda! ficou quase tudo funcionando... só ta faltando um detalhe que é inverter a data!

o que acontece é que agora está deletando e incluindo legal... só que quando inclui, inclui com a data invertida! tipo mm/dd/yyyy

daí eu tentei com sessions assim... mas não rolou!

'loop para inserir dados atraves do id
For i=0 to ubound(array_id)
Session.LCID=1033
sql = "Select * From a_pagar Where a_pagar.codigo = " & Trim(array_id(i))
Set objRS = objConn.Execute(sql)
Session.LCID=1046
sql = "Insert Into lcaixa (data, historico, tipo, saidas) Values ('"& objRS("data") &"','"& objRS("historico") &"','"& objRS("tipo") &"','"& objRS("valor") &"')"
objConn.Execute(sql)
sql_id = sql_id & "a_pagar.codigo = " & Trim(array_id(i)) & " OR "
Next
daí eu pensei em usar uma função cdate alí no objRS("data") e fiz assim:
'loop para inserir dados atraves do id
For i=0 to ubound(array_id)
Session.LCID=1033
sql = "Select * From a_pagar Where a_pagar.codigo = " & Trim(array_id(i))
Set objRS = objConn.Execute(sql)
Session.LCID=1046
objRS("data") = Cdate(month (objRS("data")) &"/"& day (objRS("data")) &"/"& year (objRS("data")))
sql = "Insert Into lcaixa (data, historico, tipo, saidas) Values ('"& objRS("data") &"','"& objRS("historico") &"','"& objRS("tipo") &"','"& objRS("valor") &"')"
objConn.Execute(sql)
sql_id = sql_id & "a_pagar.codigo = " & Trim(array_id(i)) & " OR "
Next
neste último caso apareceu a seguinte mensagem de erro: ADODB.Recordset error '800a0cb3' Current Recordset does not support updating. This may be a limitation of the provider, or of the selected locktype. /padrão/action_efetuar_pagto.asp, line 24 que vem a ser: objRS("data") = Cdate(month (objRS("data")) &"/"& day (objRS("data")) &"/"& year (objRS("data"))) como é que eu posso sair dessa? mas pô... super obrigado até agora... já ajudou pra caramba... pelo menos já está deletando e inserindo... se acertar a data agora fica perfeito! se puder dar mais alguma colaboração agradeço... vou tentando por aqui... e se conseguir resolver posto na sequencia! um forte abraço! e mais uma vez muito obrigado! EDITADO Ae Kuroi... Consegui resolver a questão da data... fiz assim:
txtData = objRS("data")
txtData = Cdate(month(txtData) &"/"& day (txtData) &"/"& year (txtData))
sql = "Insert Into lcaixa (data, historico, tipo, saidas) Values ('"&txtData&"','"& objRS("historico") &"','"& objRS("tipo") &"','"& objRS("valor") &"')"

Amigão... valeu mais uma vez! muito obrigado por não desistir de mim, nestes dois tópicos "casca" que tu me ajudou...

desculpa tb pela encheção de saco e por qualquer. inconveniente...

um forte abraço

Editado por Notax
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
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...