Ir para conteúdo

POWERED BY:

Arquivado

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

Erika Ribeiro

Como usar 2 recordsets na mesma página

Recommended Posts

Pessoal, estou com o seguinte problema.Estou fazendo um formulário de cadastro e nele o usuário precisa selecionar a opção desejada em 2 list/menu dinâmicos (um onde aparece todas as marcas cadastradas e outro com todos os tipos de evento).O problema é que quando vou testar a página, dá o erro:Microsoft JET Database Engine (0x80004005)Não foi possível usar ''. O arquivo já está em uso./tropicalia/cadastro.asp, line 144A linha 144 abre um dos recordsets.Como soluciono este problema.PRECISO DE AJUDA URGENTE!!!Desde já agradeço.Erika

Compartilhar este post


Link para o post
Compartilhar em outros sites

posta o script para eu dar uma olhada!Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Segue o código<%@LANGUAGE="VBSCRIPT"%><!--#include file="Connections/conexao.asp" --><%' *** Edit Operations: declare variablesDim MM_editActionDim MM_abortEditDim MM_editQueryDim MM_editCmdDim MM_editConnectionDim MM_editTableDim MM_editRedirectUrlDim MM_editColumnDim MM_recordIdDim MM_fieldsStrDim MM_columnsStrDim MM_fieldsDim MM_columnsDim MM_typeArrayDim MM_formValDim MM_delimDim MM_altValDim MM_emptyValDim MM_iMM_editAction = CStr(Request.ServerVariables("SCRIPT_NAME"))If (Request.QueryString <> "") Then MM_editAction = MM_editAction & "?" & Server.HTMLEncode(Request.QueryString)End If' boolean to abort record editMM_abortEdit = false' query string to executeMM_editQuery = ""%><%' *** Insert Record: set variablesIf (CStr(Request("MM_insert")) = "formCad") Then MM_editConnection = MM_conexao_STRING MM_editTable = "tblFoto" MM_editRedirectUrl = "lista_foto.asp" MM_fieldsStr = "nome|value|Descricao|value|marca|value|evento|value|Arquivo|value" MM_columnsStr = "nome|',none,''|descricao|',none,''|cod_marca|none,none,NULL|cod_evento|none,none,NULL|arquivo|',none,''" ' create the MM_fields and MM_columns arrays MM_fields = Split(MM_fieldsStr, "|") MM_columns = Split(MM_columnsStr, "|") ' set the form values For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2 MM_fields(MM_i+1) = CStr(Request.Form(MM_fields(MM_i))) Next ' append the query string to the redirect URL If (MM_editRedirectUrl <> "" And Request.QueryString <> "") Then If (InStr(1, MM_editRedirectUrl, "?", vbTextCompare) = 0 And Request.QueryString <> "") Then MM_editRedirectUrl = MM_editRedirectUrl & "?" & Request.QueryString Else MM_editRedirectUrl = MM_editRedirectUrl & "&" & Request.QueryString End If End IfEnd If%><%' *** Insert Record: construct a sql insert statement and execute itDim MM_tableValuesDim MM_dbValuesIf (CStr(Request("MM_insert")) <> "") Then ' create the sql insert statement MM_tableValues = "" MM_dbValues = "" For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2 MM_formVal = MM_fields(MM_i+1) MM_typeArray = Split(MM_columns(MM_i+1),",") MM_delim = MM_typeArray(0) If (MM_delim = "none") Then MM_delim = "" MM_altVal = MM_typeArray(1) If (MM_altVal = "none") Then MM_altVal = "" MM_emptyVal = MM_typeArray(2) If (MM_emptyVal = "none") Then MM_emptyVal = "" If (MM_formVal = "") Then MM_formVal = MM_emptyVal Else If (MM_altVal <> "") Then MM_formVal = MM_altVal ElseIf (MM_delim = "'") Then ' escape quotes MM_formVal = "'" & Replace(MM_formVal,"'","''") & "'" Else MM_formVal = MM_delim + MM_formVal + MM_delim End If End If If (MM_i <> LBound(MM_fields)) Then MM_tableValues = MM_tableValues & "," MM_dbValues = MM_dbValues & "," End If MM_tableValues = MM_tableValues & MM_columns(MM_i) MM_dbValues = MM_dbValues & MM_formVal Next MM_editQuery = "insert into " & MM_editTable & " (" & MM_tableValues & ") values (" & MM_dbValues & ")" If (Not MM_abortEdit) Then ' execute the insert Set MM_editCmd = Server.CreateObject("ADODB.Command") MM_editCmd.ActiveConnection = MM_editConnection MM_editCmd.CommandText = MM_editQuery MM_editCmd.Execute MM_editCmd.ActiveConnection.Close If (MM_editRedirectUrl <> "") Then Response.Redirect(MM_editRedirectUrl) End If End IfEnd If%><%Dim rsMarcaDim rsMarca_numRowsSet rsMarca = Server.CreateObject("ADODB.Recordset")rsMarca.ActiveConnection = MM_conexao_STRINGrsMarca.Source = "SELECT * FROM tblMarca ORDER BY nome ASC"rsMarca.CursorType = 0rsMarca.CursorLocation = 2rsMarca.LockType = 1rsMarca.Open()rsMarca_numRows = 0%><%Dim rsEventoDim rsEvento_numRowsSet rsEvento = Server.CreateObject("ADODB.Recordset")rsEvento.ActiveConnection = MM_conexao_STRINGrsEvento.Source = "SELECT * FROM tblEvento ORDER BY nome ASC"rsEvento.CursorType = 0rsEvento.CursorLocation = 2rsEvento.LockType = 1rsEvento.Open()rsEvento_numRows = 0%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Doce Erika Ribeiro,

 

 

Este código q você postou esta completo?

 

Pq analisei e não vi motivo para ocorrer o erro.

 

Claro se o código postado estiver dentro de um loop (while ou for) ai realmente toda vez aque passar pela linha 144 irá ocorrer o erro. Caso esteja dentro de um loop você pode fechar o recodset para abri-lo de novo assim:

 

Set rsEvento = Server.CreateObject("ADODB.Recordset")rsEvento.ActiveConnection = MM_conexao_STRINGrsEvento.Source = "SELECT * FROM tblEvento ORDER BY nome ASC"rsEvento.CursorType = 0rsEvento.CursorLocation = 2rsEvento.LockType = 1rsEvento.Open()...... aqui voce utiliza o rsEvento'agora feche o recordsetrsEvento.closersEvento_numRows = 0%>

 

Deu uma luz??

 

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

O script abaixo foi colocado antes da tag <html>

<%@LANGUAGE="VBSCRIPT"%><!--#include file="Connections/conexao.asp" --><%' *** Edit Operations: declare variablesDim MM_editActionDim MM_abortEditDim MM_editQueryDim MM_editCmdDim MM_editConnectionDim MM_editTableDim MM_editRedirectUrlDim MM_editColumnDim MM_recordIdDim MM_fieldsStrDim MM_columnsStrDim MM_fieldsDim MM_columnsDim MM_typeArrayDim MM_formValDim MM_delimDim MM_altValDim MM_emptyValDim MM_iMM_editAction = CStr(Request.ServerVariables("SCRIPT_NAME"))If (Request.QueryString <> "") Then  MM_editAction = MM_editAction & "?" & Server.HTMLEncode(Request.QueryString)End If' boolean to abort record editMM_abortEdit = false' query string to executeMM_editQuery = ""%><%' *** Insert Record: set variablesIf (CStr(Request("MM_insert")) = "formCad") Then  MM_editConnection = MM_conexao_STRING  MM_editTable = "tblFoto"  MM_editRedirectUrl = "lista_foto.asp"  MM_fieldsStr  = "nome|value|Descricao|value|marca|value|evento|value|Arquivo|value"  MM_columnsStr = "nome|',none,''|descricao|',none,''|cod_marca|none,none,NULL|cod_evento|none,none,NULL|arquivo|',none,''"  ' create the MM_fields and MM_columns arrays  MM_fields = Split(MM_fieldsStr, "|")  MM_columns = Split(MM_columnsStr, "|")    ' set the form values  For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2	MM_fields(MM_i+1) = CStr(Request.Form(MM_fields(MM_i)))  Next  ' append the query string to the redirect URL  If (MM_editRedirectUrl <> "" And Request.QueryString <> "") Then	If (InStr(1, MM_editRedirectUrl, "?", vbTextCompare) = 0 And Request.QueryString <> "") Then	  MM_editRedirectUrl = MM_editRedirectUrl & "?" & Request.QueryString	Else	  MM_editRedirectUrl = MM_editRedirectUrl & "&" & Request.QueryString	End If  End IfEnd If%><%' *** Insert Record: construct a sql insert statement and execute itDim MM_tableValuesDim MM_dbValuesIf (CStr(Request("MM_insert")) <> "") Then  ' create the sql insert statement  MM_tableValues = ""  MM_dbValues = ""  For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2	MM_formVal = MM_fields(MM_i+1)	MM_typeArray = Split(MM_columns(MM_i+1),",")	MM_delim = MM_typeArray(0)	If (MM_delim = "none") Then MM_delim = ""	MM_altVal = MM_typeArray(1)	If (MM_altVal = "none") Then MM_altVal = ""	MM_emptyVal = MM_typeArray(2)	If (MM_emptyVal = "none") Then MM_emptyVal = ""	If (MM_formVal = "") Then	  MM_formVal = MM_emptyVal	Else	  If (MM_altVal <> "") Then		MM_formVal = MM_altVal	  ElseIf (MM_delim = "'") Then  ' escape quotes		MM_formVal = "'" & Replace(MM_formVal,"'","''") & "'"	  Else		MM_formVal = MM_delim + MM_formVal + MM_delim	  End If	End If	If (MM_i <> LBound(MM_fields)) Then	  MM_tableValues = MM_tableValues & ","	  MM_dbValues = MM_dbValues & ","	End If	MM_tableValues = MM_tableValues & MM_columns(MM_i)	MM_dbValues = MM_dbValues & MM_formVal  Next  MM_editQuery = "insert into " & MM_editTable & " (" & MM_tableValues & ") values (" & MM_dbValues & ")"  If (Not MM_abortEdit) Then	' execute the insert	Set MM_editCmd = Server.CreateObject("ADODB.Command")	MM_editCmd.ActiveConnection = MM_editConnection	MM_editCmd.CommandText = MM_editQuery	MM_editCmd.Execute	MM_editCmd.ActiveConnection.Close	If (MM_editRedirectUrl <> "") Then	  Response.Redirect(MM_editRedirectUrl)	End If  End IfEnd If%><%Dim rsMarcaDim rsMarca_numRowsSet rsMarca = Server.CreateObject("ADODB.Recordset")rsMarca.ActiveConnection = MM_conexao_STRINGrsMarca.Source = "SELECT * FROM tblMarca ORDER BY nome ASC"rsMarca.CursorType = 0rsMarca.CursorLocation = 2rsMarca.LockType = 1rsMarca.Open()rsMarca_numRows = 0%><%Dim rsEventoDim rsEvento_numRowsSet rsEvento = Server.CreateObject("ADODB.Recordset")rsEvento.ActiveConnection = MM_conexao_STRINGrsEvento.Source = "SELECT * FROM tblEvento ORDER BY nome ASC"rsEvento.CursorType = 0rsEvento.CursorLocation = 2rsEvento.LockType = 1rsEvento.Open()rsEvento_numRows = 0%>

E esta parte foi colocada dentro do form

<form method="POST" action="<%=MM_editAction%>" name="formCad">					<table width="98%" align="center">					  <tr valign="baseline">						<td height="30" colspan="3" align="center" nowrap class="TextoDestaque">::: Cadastro de Foto ::: </td>						</tr>					  					  <tr valign="baseline">						<td width="19%" align="right" valign="middle" nowrap class="Texto">Nome:</td>						<td colspan="2" valign="middle"><input name="nome" type="text" class="CaixaTexto" value="" size="50" maxlength="50">						</td>					  </tr>					  <tr valign="baseline">						<td align="right" valign="middle" nowrap class="Texto">Descrição:</td>						<td colspan="2" valign="middle"><input name="Descricao" type="text" class="CaixaTexto" id="Descricao" size="50" maxlength="200"></td>					  </tr>					  <tr valign="baseline">						<td align="right" valign="middle" nowrap class="Texto">Marca:</td>						<td colspan="2" valign="middle"><select name="marca" class="CaixaTexto" id="marca">						  <%While (NOT rsMarca.EOF)%>						  <option value="<%=(rsMarca.Fields.Item("cod_marca").Value)%>"><%=(rsMarca.Fields.Item("nome").Value)%></option>						  <%  rsMarca.MoveNext()WendIf (rsMarca.CursorType > 0) Then  rsMarca.MoveFirstElse  rsMarca.RequeryEnd If%>						</select></td>					  </tr>					  <tr valign="baseline">						<td align="right" valign="middle" nowrap class="Texto">Evento:</td>						<td colspan="2" valign="middle"><select name="evento" class="CaixaTexto" id="evento">						  <%While (NOT rsEvento.EOF)%>						  <option value="<%=(rsEvento.Fields.Item("cod_evento").Value)%>"><%=(rsEvento.Fields.Item("nome").Value)%></option>						  <%  rsEvento.MoveNext()WendIf (rsEvento.CursorType > 0) Then  rsEvento.MoveFirstElse  rsEvento.RequeryEnd If%>						</select></td>					  </tr>					  					  <tr valign="baseline">						<td align="right" valign="middle" nowrap class="Texto">Arquivo: </td>						<td colspan="2" valign="middle"><input name="Arquivo" type="text" class="CaixaTexto" id="Arquivo" size="50" maxlength="100"></td>					  </tr>					  <tr valign="baseline">						<td nowrap align="right"> </td>						<td width="15%"> </td>						<td width="66%" height="45" valign="bottom"><input name="btnCadastrar" type="submit" class="Botao" id="btnCadastrar" onClick="MM_validateForm('nome','','R');return document.MM_returnValue" value="Cadastrar">						  <input name="btnLimpar" type="reset" class="Botao" id="btnLimpar" value="Limpar"></td>					  </tr>					</table>					<input type="hidden" name="MM_insert" value="formCad">					<p class="TextoDestaque"> </p>						  </form>
O que devo mudar para funcionar?

Alguém tem alguma solução mais bacana de usar dados vindos de outras tabelas?

 

Obrigada.

 

Erika

Compartilhar este post


Link para o post
Compartilhar em outros sites

vou dar uma moral, daí você implementa seu código, ok?

 

sql1 = "select * from tabela1"set rs01 = conn.execute(sql1)while not rs1.eofresponse.write rs1("campo") & "<br>"   campo_da_tabela1 = rs1("id_campo")   sql2 = "select * from tabel2 where campo = "&campo_da_tabela1&""   set rs2 = conn.execute(sql2)   while not rs2.eof   response.write rs2("campo") & "<br>"   rs2.movenext   wendrs1.movenextwend

usando 2 recordsets.

 

Abração!

Compartilhar este post


Link para o post
Compartilhar em outros sites

como voce mesma ja percebeu nao e uma boa ficar usando o codigo que o DW gera pois quando da erro e dosemas vamos la poste aqui exatamente qual [e a linha que esta dando erro ai voce poe umas 10 linha antes e 10 depois mas nao esqueca de mostrar qual e a linha do erro

Compartilhar este post


Link para o post
Compartilhar em outros sites

é verdade eu ja usei quando estava aprendendo, mas logo me esforcei pra nao usar mais

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por favor, alguém me ajude!!!!

Concordo planamente com marioufpa e o shumi. Utilizar a codificação do DW é f***. A facilidade na criação triplica a manutenção.Mas vamos tentar ajudá-la.Neste código gigantesco que você postou em qual linha dá o erro? Se possivel poste (ou envie por e-amil jocielweb@gmail.com) completo. Pois tendo o código identico ao seu fica mais fácil de sugerir alguma coisa.No inicio do post você disse que o erro era na linha 144 continua o erro na mesma linha?Seu bd é access?você tentou testar o exemplo do meirelles?você já tentou comentar:rsMarca.CursorType = 0rsMarca.CursorLocation = 2rsMarca.LockType = 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal,Obrigada pela ajuda de todos.Resolvi abandonar as facilidades do dream e criar tudo na mão.Valeu!Abs,Erika

Doce Erika,Melhor solução!!Você terá mais trabalho ms terá dominio sobre o código.QQ dúvida é post ai pois têm mta gente boa de serviço aaquino forum.T+

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.