Ir para conteúdo

Arquivado

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

mestre fyoda

erro : object variable or with block variable not set

Recommended Posts

Set deleta = " Delete from Agendar_Consulta where hora = '" & exclui_hora & "' "

ja descobri o q era , mas deu um outro erro Set deleta = " Delete from Agendar_Consulta where hora = '" & exclui_hora & "' "foi no segundo & erro : object required

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não se define uma string com a instrução Set. Ou seja:

 

deleta = "DELETE FROM Agendar_Consulta WHERE hora = '" & exclui_hora & "'"

Certo? ;)

 

Graymalkin

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu fiz assim mas nao ta deletando , pq ?

Private Sub ListView_Click()exclui_hora = ListView.SelectedItemEnd SubPrivate Sub Excluir_Click()deleta = " Delete * from Agendar_Consulta where hora = '" & exclui_hora & "' "End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente assim:Private Sub ListView_Click()exclui_hora = ListView.SelectedItemEnd SubPrivate Sub Excluir_Click()Dim Deleta as RecordSetSet Deleta = Conn.Execute "Delete * from Agendar_Consulta where hora = '" & exclui_hora & "'"End SubObs.: Conn deve ser substituido pelo nome de sua conexãoEnd Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

tb nao deu certo , no module

Public Function Cancela_Agendamento(Formulario As Form) As String Dim Deleta As Recordset valor = Formulario.Listview.SelectedItems SQL = "Delete * from Agendar_Consulta where hora ='" & valor & "'"End Function

no form

Private Sub Excluir_Click()Call Cancela_Agendamento(Agendamento)End Sub

pq a variavel Formulario da module nao esta funcionando ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para usar instrução Delete você tem que possuir uma conexão com o banco de dados aberta, partindo disso você faz o seguinte:

conexao.execute "delete..."

Outra coisa, você está criando Funções como se fossem rotinas (Subs), as funções são criadas para retornar valores, nesse caso aí você poderia fazer uma rotina:

Public Sub ........End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

pode trancar .ai vai a resolução do problema

Public Sub Cancela_Agendamento(Formulario As Form) valor = Agendamento.ListView.SelectedItem SQL = cn.Execute("Delete * from Agendar_Consulta where hora ='" & valor & "'")Agendamento.ListView.ListItems.ClearSet rs = cn.Execute(" Select * from Agendar_Consulta where DateValue(data) = DateValue('" & Date & "') ORDER BY hora ASC ")Set rs2 = cn.Execute(" Select * from Hora ") While Not rs.EOF And Not rs2.EOF If rs.Fields("hora").Value = rs2.Fields("hora").Value Then Set item = Agendamento.ListView.ListItems.Add(, , rs("hora")) item.ListSubItems.Add , , rs("nom_pac") item.ListSubItems.Add , , rs("data") item.ListSubItems.Add , , rs("tel_res") item.ListSubItems.Add , , rs("tel_com") rs.MoveNext rs2.MoveNext Else Set item = Agendamento.ListView.ListItems.Add(, , rs2("hora")) rs2.MoveNext End If Wend While Not rs2.EOF Set item = Agendamento.ListView.ListItems.Add(, , rs2("hora")) rs2.MoveNext WendEnd Sub

Private Sub Excluir_Click()Call Cancela_Agendamento(Agendamento)End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

Outra dica...

Quando você está usando Delete ou Insert Into não precisa usar uma variável, pois os mesmos não retornam um conjunto de registros, assim você poupa um pouco que seja da memória do pc.

Basta:

conexao.execute "...."

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.