Jump to content
Fórum Script Brasil
  • 0

[resolvido] Deletar De Uma Tabela Mas Incluir Em Outra


Notax
 Share

Question

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...

Edited by Notax
Link to comment
Share on other sites

17 answers to this question

Recommended Posts

  • 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!

Edited by Notax
Link to comment
Share on other 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

Edited by Notax
Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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!

Edited by Notax
Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

  • 0

o q acontece é q o sql_idi provavelmente tem menos de 4 caracteres. ai o left vai tentar pegar uma posicao negativa. exemplo, se o sql_idi tem 3 caracteres, o len volta 3. ai você pega o left 3 - 4 = -1. você não pode fazer left com valor negativo, por isso ele da esse erro.

Link to comment
Share on other 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!

Edited by Notax
Link to comment
Share on other 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 to comment
Share on other 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

Edited by Notax
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.8k
    • Total Posts
      646.6k
×
×
  • Create New...