Musashi_RS Postado Novembro 16, 2007 Denunciar Share Postado Novembro 16, 2007 Olá, estou enfrentandoproblemas para salvar um registro. Antes eu utilizava o método Opens do recordset, mas agora estou fazendo o seguinte:set rs = cnn.Execute(SQL)Por exemplo, quando eu faço essa consulta, o recordset armazena os dados requisitados na query sql, certo? Por exemplo, se eu fizer:Inicio uma vez o recordset: Set rs = New ADODB.Recordset (Se eu não fechá-lo, eu não preciso mais iniciá-lo, certo?)Depois, quando for pesquisar um cliente, por exemplo:SQL = "SELECT * FROM TabelaClientes"set rs = cnn.Execute(SQL)SQL = ""Agora o recordset estaria aberto, com todos os dados armaxenados nelee, certo?Então, no caso de uma pesquisa como acima, o recordset acharia apenas um registro, no caso o cliente que foi pesquisado.Eu poderia alterar ou deletá-lo com um simples comando (rs.update ou rs.delet) certo?Eu preciso usar o método Close do recordset depois desse tipo de consulta? Se sim, eu preciso iniciá-lo novamente?Ou estou errado? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Novembro 17, 2007 Denunciar Share Postado Novembro 17, 2007 acontece q fazendo assim:set rs = cnn.Execute(SQL) ele abre o RecordSet mas não te da permissao pra Update ou Delete nele, já q esse comando seta o LockType como ReadOnly. você so poude usar o comando Update e o Delete abrindo o RecordSet pelo comando Open mesmo. nesse caso o q costumamos fazer seria tipo isso: SQL = "SELECT * FROM TabelaClientes"set rs = cnn.Execute(SQL)'------------'Pra UpdateSQL = "Update TabelaClientes Set Campo = 'valor' Where Codigo = " & rs!Codigocnn.Execute SQL'------------'Pra ExcluirSQL = "Delete From TabelaClientes Where Codigo = " & rs!Codigocnn.Execute SQL[/code] Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Musashi_RS Postado Novembro 17, 2007 Autor Denunciar Share Postado Novembro 17, 2007 (editado) Ahhh bom, agora sim as coisas fazem sentido. Bah quebrei cabeça...Uma pergunta: qual a diferença entre as instruções:set rs = cnn.Execute(SQL)ecnn.Execute SQLQuanto às instruções para Update e Delete, eu vi que para Update é só para alterar, pelo que vi. Mas como fica para adicionar um novo registro, tipo, se usa o AddNew? Como fica o critério para o Update? O.oE mais uma cois: eu estou iniciando o recordset no evento Load do form de consulta. Eu não preciso iniciá-lo mais, certo???? E também não preciso utilizar o método Close depois de cada consulta, certo?vlw Editado Novembro 17, 2007 por Musashi_RS Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Novembro 17, 2007 Denunciar Share Postado Novembro 17, 2007 A primeira você só vai usar quando sua instrução SQL retornar um recordset (como num SELECT). Já a segunda você vai usar quando não tiver retorno algum (como em um UPDATE ou DELETE, por exemplo).Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Musashi_RS Postado Novembro 17, 2007 Autor Denunciar Share Postado Novembro 17, 2007 OK.Quanto às instruções para Update e Delete, eu vi que para Update é só para alterar, pelo que vi. Mas como fica para adicionar um novo registro, tipo, se usa o AddNew? Como fica o critério para o Update? O.oE mais uma cois: eu estou iniciando o recordset no evento Load do form de consulta. Eu não preciso iniciá-lo mais, certo???? E também não preciso utilizar o método Close depois de cada consulta, certo? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Novembro 17, 2007 Denunciar Share Postado Novembro 17, 2007 (editado) Quanto às instruções para Update e Delete, eu vi que para Update é só para alterar, pelo que vi. Mas como fica para adicionar um novo registro, tipo, se usa o AddNew? Como fica o critério para o Update? O.ovocê so pode usar o AddNew se o RecordSet estiver aberto e você tiver permissao pra isso de acordo com o LockType e o CursorType. ou seja, pelo q eu disse aqui:ele abre o RecordSet mas não te da permissao pra Update ou Delete nele, já q esse comando seta o LockType como ReadOnly.você não vai poder. se você abrir pelo metodo Open (e passar os parametros corretos pra ter as permissoes), é só você usar o metodo AddNew, em seguida passar os valores pros campos e ai usar o Update.mas independente do RecordSet, você pode fazer o Insert por query assim como o Update e o Delete:SQL = "Insert Into TabelaClientes (Campo1, Campo2) Values(Valor1, Valor2)"cnn.Execute SQL[/code]você não precisa de RecordSet pra executar querys no banco. você so precisa dele pra armazenar os registros q forem retornados (caso algum seja retornado, ou seja, apenas no caso de Select).E mais uma cois: eu estou iniciando o recordset no evento Load do form de consulta. Eu não preciso iniciá-lo mais, certo????só vai precisar se em algum momento você fizer Set RS = Nothing. já q esse comando zera o RecordSet e os RecordSets, assim como qualquer outro objeto, só podem ser usados depois de (re)inicializados.E também não preciso utilizar o método Close depois de cada consulta, certo?só se você quiser. acho q usando o Close ele deve liberar os registros do Select da memoria, então se você achar interessante pode usar a vontade. Editado Novembro 17, 2007 por kuroi Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Musashi_RS Postado Novembro 17, 2007 Autor Denunciar Share Postado Novembro 17, 2007 Beleza. To pegando o jeito agora. Vlw pessoal! =D Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Musashi_RS
Olá, estou enfrentandoproblemas para salvar um registro. Antes eu utilizava o método Opens do recordset, mas agora estou fazendo o seguinte:
set rs = cnn.Execute(SQL)
Por exemplo, quando eu faço essa consulta, o recordset armazena os dados requisitados na query sql, certo? Por exemplo, se eu fizer:
Inicio uma vez o recordset:
Set rs = New ADODB.Recordset (Se eu não fechá-lo, eu não preciso mais iniciá-lo, certo?)
Depois, quando for pesquisar um cliente, por exemplo:
SQL = "SELECT * FROM TabelaClientes"
set rs = cnn.Execute(SQL)
SQL = ""
Agora o recordset estaria aberto, com todos os dados armaxenados nelee, certo?
Então, no caso de uma pesquisa como acima, o recordset acharia apenas um registro, no caso o cliente que foi pesquisado.
Eu poderia alterar ou deletá-lo com um simples comando (rs.update ou rs.delet) certo?
Eu preciso usar o método Close do recordset depois desse tipo de consulta? Se sim, eu preciso iniciá-lo novamente?
Ou estou errado?
Link para o comentário
Compartilhar em outros sites
6 respostass a esta questão
Posts Recomendados
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.