Ir para conteúdo

POWERED BY:

Arquivado

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

Kika_Epilética

Iniciante VBA

Recommended Posts

Bom dia galera do iMaster !! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

Sou novata em VBA e estou com a seguinte dificuldade.

Tenho o código de um formulário e o mesmo exibe o seguinte erro :

"Erro em tempo de execução '94' Uso de 'Null' inválido".

Já sei pq dá esse erro, só não sei como consertar =P

 

É um formulário para cadastro de celular de um funcionário.

 

O formulário possui os seguintes campo :

 

Linha (ComboBox)

Tipo Aparelho (Text Field)

Aparelho (Text Field)

Chip (Text Field)

Data Entrada (Text Field)

Matrícula (ComboBox)

Excepcionalidade (Text Field)

Viagem Internacional (Text Field)

Observação (Text Field)

 

Botão Inserir

Botão para retornar ao menu principal.

 

Sendo que ao lado do botão para retornar, tem 2 caixas de texto que aparecem no modo estrutura e não aparecem qndo se clica

para abrir, normalmente, o formulário (Possuem o nome de Texto41 e Texto43). Alguém pode me dizer o q é isso ?

 

O problema é o seguinte : Se eu clico, ou no text field, Combobox, botão para voltar ou no botão inserir sem que

o campo linha esteja "marcado" dá esse erro. O que pode ser ?

 

O código do programa é esse abaixo :

 

Option Compare Database

Private Sub Comando44_Click()
DoCmd.SetWarnings False
DoCmd.OpenQuery "indisponibiliza linha alocação"
DoCmd.OpenQuery "indisponibiliza chip alocação"
DoCmd.OpenQuery "indisponibiliza aparelho alocação"
DoCmd.SetWarnings True
If (Me.Número_Série_Aparelho.Value <> Me.Texto41.Value) Or Nz(Me.Texto41) = "" Then
	DoCmd.OpenQuery "Atualiza Linha"
End If
If Me.Número_Chip <> Me.Texto43 Or Nz(Me.Texto43) = "" Then
	DoCmd.OpenQuery "Atualiza Linha"
End If
On Error GoTo Err_Comando19_Click
DoCmd.Close acForm, "aloca linha funcionario"
Exit_Comando19_Click:
	Exit Sub
Err_Comando19_Click:
	MsgBox Err.Description
	Resume Exit_Comando19_Click
End Sub

Private Sub NumLinha_Exit(Cancel As Integer)
'If Me.NumLinha = Null Then
 '   DoCmd.CancelEvent
'End If
Me.Número_Série_Aparelho = Me.Texto41
Me.Número_Chip = Me.Texto43
Dim Marca, Modelo As String
Dim Tipo As String
'Me.Obs_termo = DLookup("[Descricao]", "[modelo]", "[nome_modelo] = '" + Modelo + "' And [marca_modelo] = '" + Marca + "'")
Tipo = DLookup("[Tipo_Linha]", "[Linha]", "[Número Linha] = '" + Me.NumLinha + "'")
Me.Tipo_Aparelho = DLookup("[Descricao]", "[Tipo_Linha]", "[Codigo] = '" + Tipo + "'")
Marca = DLookup("[Marca]", "[Aparelhos]", "[NumSerie] = '" + Me.Número_Série_Aparelho + "'")
Modelo = DLookup("[Modelo]", "[Aparelhos]", "[NumSerie] = '" + Me.Número_Série_Aparelho + "'")
Me.Obs_termo = DLookup("[Descricao]", "[modelo]", "[nome_modelo] = '" + Modelo + "' And [marca_modelo] = '" + Marca + "'")
End Sub

Private Sub Tem_excepcionalidade_AfterUpdate()
	If Me.Tem_excepcionalidade = -1 Then
		Me.Excepcionalidade.Locked = False
	End If
End Sub

Private Sub Comando45_Click()
On Error GoTo Err_Comando45_Click
	DoCmd.Close
Exit_Comando45_Click:
	Exit Sub
Err_Comando45_Click:
	MsgBox Err.Description
	Resume Exit_Comando45_Click
End Sub

 

Pelo o que eu vi no código, acho que tá errado o Comando19 no lugar do Comando44. Tinha feito a alteração,

mas coloquei assim só para que fosse analisado melhor.

 

Qualquer opinião será bem vinda ^^ http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Abraços :P

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia galera do iMaster !! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

Sou novata em VBA e estou com a seguinte dificuldade.

Tenho o código de um formulário e o mesmo exibe o seguinte erro :

"Erro em tempo de execução '94' Uso de 'Null' inválido".

Já sei pq dá esse erro, só não sei como consertar =P

 

É um formulário para cadastro de celular de um funcionário.

 

O formulário possui os seguintes campo :

 

Linha (ComboBox)

Tipo Aparelho (Text Field)

Aparelho (Text Field)

Chip (Text Field)

Data Entrada (Text Field)

Matrícula (ComboBox)

Excepcionalidade (Text Field)

Viagem Internacional (Text Field)

Observação (Text Field)

 

Botão Inserir

Botão para retornar ao menu principal.

 

Sendo que ao lado do botão para retornar, tem 2 caixas de texto que aparecem no modo estrutura e não aparecem qndo se clica

para abrir, normalmente, o formulário (Possuem o nome de Texto41 e Texto43). Alguém pode me dizer o q é isso ?

 

O problema é o seguinte : Se eu clico, ou no text field, Combobox, botão para voltar ou no botão inserir sem que

o campo linha esteja "marcado" dá esse erro. O que pode ser ?

 

O código do programa é esse abaixo :

 

Option Compare Database
  
  Private Sub Comando44_Click()
  DoCmd.SetWarnings False
  DoCmd.OpenQuery "indisponibiliza linha alocação"
  DoCmd.OpenQuery "indisponibiliza chip alocação"
  DoCmd.OpenQuery "indisponibiliza aparelho alocação"
  DoCmd.SetWarnings True
  If (Me.Número_Série_Aparelho.Value <> Me.Texto41.Value) Or Nz(Me.Texto41) = "" Then
	  DoCmd.OpenQuery "Atualiza Linha"
  End If
  If Me.Número_Chip <> Me.Texto43 Or Nz(Me.Texto43) = "" Then
	  DoCmd.OpenQuery "Atualiza Linha"
  End If
  On Error GoTo Err_Comando19_Click
  DoCmd.Close acForm, "aloca linha funcionario"
  Exit_Comando19_Click:
	  Exit Sub
  Err_Comando19_Click:
	  MsgBox Err.Description
	  Resume Exit_Comando19_Click
  End Sub
  
  Private Sub NumLinha_Exit(Cancel As Integer)
  'If Me.NumLinha = Null Then
   '   DoCmd.CancelEvent
  'End If
  Me.Número_Série_Aparelho = Me.Texto41
  Me.Número_Chip = Me.Texto43
  Dim Marca, Modelo As String
  Dim Tipo As String
  'Me.Obs_termo = DLookup("[Descricao]", "[modelo]", "[nome_modelo] = '" + Modelo + "' And [marca_modelo] = '" + Marca + "'")
  Tipo = DLookup("[Tipo_Linha]", "[Linha]", "[Número Linha] = '" + Me.NumLinha + "'")
  Me.Tipo_Aparelho = DLookup("[Descricao]", "[Tipo_Linha]", "[Codigo] = '" + Tipo + "'")
  Marca = DLookup("[Marca]", "[Aparelhos]", "[NumSerie] = '" + Me.Número_Série_Aparelho + "'")
  Modelo = DLookup("[Modelo]", "[Aparelhos]", "[NumSerie] = '" + Me.Número_Série_Aparelho + "'")
  Me.Obs_termo = DLookup("[Descricao]", "[modelo]", "[nome_modelo] = '" + Modelo + "' And [marca_modelo] = '" + Marca + "'")
  End Sub
  
  Private Sub Tem_excepcionalidade_AfterUpdate()
	  If Me.Tem_excepcionalidade = -1 Then
		  Me.Excepcionalidade.Locked = False
	  End If
  End Sub
  
  Private Sub Comando45_Click()
  On Error GoTo Err_Comando45_Click
	  DoCmd.Close
  Exit_Comando45_Click:
	  Exit Sub
  Err_Comando45_Click:
	  MsgBox Err.Description
	  Resume Exit_Comando45_Click
  End Sub

 

Pelo o que eu vi no código, acho que tá errado o Comando19 no lugar do Comando44. Tinha feito a alteração,

mas coloquei assim só para que fosse analisado melhor.

 

Qualquer opinião será bem vinda ^^ http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Abraços :P

Nº - O problema com o nulo pode ser revolvido usando a função NZ (campo,[valor se o campo for nulo])

 

não consegui distinguir em campo ocorreu o problema mas provavelmente o erro foi em um campo usado para o lookup

 

use assim

 

Nz(DLookup("[Marca]", "[Aparelhos]", "[NumSerie] = '" + nz(Me.Número_Série_Aparelho ,valorQualquer)+ "'")

 

Dá uma olhada também na linha

 

Me.Número_Série_Aparelho = Me.Texto41

Me.Número_Chip = Me.Texto43

Você disse que esses controle não aperecem eles podem estar sendo atualizados pela linha

 

DoCmd.OpenQuery "Atualiza Linha"

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.