NULL
O código abaixo não aceita salvar o formulário caso todos os campos não estejam preenchidos. Será que alguém sabe como eu modifico isso. Antecipadamente agradeço.
[ô]declarando os objetos necessários
[ô]command e recordset para interagir com o BD
[ô]e declarando variavel para utilizar msgbox
Dim cmd As New ADODB.Command
Dim rs As New ADODB.Recordset
Dim vinfo As Integer
[ô]chamando a sub que carrega a lista com os dados do BD
Private Sub Form_Load()
preenche_list
End Sub
[ô]descarregando os objetos command e recordset quando
[ô]fechar o form e limpando os arquivos temp criados
Private Sub Form_Unload(Cancel As Integer)
Set cmd = Nothing
Set rs = Nothing
Set cnnreceitas = Nothing
If Dir([Ô]c:*.tmp[Ô]) <> [Ô][Ô] Then
On Error Resume Next
Kill [Ô]c:*.tmp[Ô]
End If
End Sub
[ô]quando der duplo click na lista
[ô]filtra as informações no BD e joga nos campos
[ô]para alterar
Private Sub List_receitas_DblClick()
With cmd
.ActiveConnection = cnnreceitas
.CommandType = adCmdText
.CommandText = [Ô]select * from receitas[Ô]
Set rs = .Execute
End With
With rs
.Filter = [Ô] receita like [ô][Ô] & List_receitas.Text & [Ô][ô][Ô]
Frame_cadastro.Visible = True
Frame_Localizar.Visible = False
Toolbar1.Visible = False
Toolbar2.Visible = True
travar_campos
Text_cod = !cod
Text_receita = !receita
Text_ingredientes = !ingredientes
Text_preparo = !preparo
Text_email = !email
End With
End Sub
[ô]codigo que faz a busca na List quando é digitado
[ô]na text
Private Sub Text1_Change()
On Error GoTo trataerro
With cmd
.ActiveConnection = cnnreceitas
.CommandType = adCmdText
.CommandText = [Ô]select * from receitas[Ô]
Set rs = .Execute
End With
With rs
.Filter = [Ô] receita like [ô]%[Ô] & Text1.Text & [Ô]%[ô][Ô]
If .BOF And .EOF Then
MsgBox ([Ô]Sequencia de caracteres não encontrado na lista[Ô])
Else
List_receitas = rs!receita
End If
End With
trataerro:
With Err
If .Number <> 0 Then
.Number = 0
End If
End With
End Sub
[ô]faz as alterações entre as toolbar e os frames
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
Select Case Button.Index
Case 1
Toolbar1.Visible = False
Toolbar2.Visible = True
Frame_cadastro.Visible = True
Frame_Localizar.Visible = False
Case 2
Frame_Localizar.Visible = True
Text1.Text = [Ô][Ô]
End Select
End Sub
[ô]chama os procedimentos de gravar, inserir ou retornar
[ô]para o outro frame
Private Sub Toolbar2_ButtonClick(ByVal Button As MSComctlLib.Button)
Select Case Button.Index
Case 1
NOVO
Case 2
Gravar
Case 3
If Text_cod.Text <> [Ô][Ô] Then
liberar_campos
Else
MsgBox ([Ô]Escolha uma receita na lista através do menu Localizar, dê duplo click na receita a ser alterada[Ô])
End If
Case 4
excluir
Case 5
Toolbar2.Visible = False
Toolbar1.Visible = True
Frame_cadastro.Visible = False
limpar_campos
preenche_list
End Select
End Sub
[ô]subprocedimento que prepara a inserção de um novo
[ô]registro no BD
Private Sub NOVO()
vinfo = MsgBox([Ô]Deseja inserir nova receita no Livro de Receitas ?[Ô], vbYesNo + vbQuestion, [Ô]Nova receita[Ô])
If vinfo = vbYes Then
With cmd
.ActiveConnection = cnnreceitas
.CommandType = adCmdText
.CommandText = [Ô]select max(cod) as Mcod from receitas[Ô]
Set rs = .Execute
End With
With rs
If IsNull(rs!Mcod) Then
Text_cod.Text = 1
Else
limpar_campos
preenche_list
Text_cod.Text = !Mcod + 1
End If
End With
Text_receita.Locked = False
Text_ingredientes.Locked = False
Text_preparo.Locked = False
Text_email.Locked = False
Text_receita.SetFocus
End If
End Sub
[ô]subprocedimento para gravar um registro novo
[ô]ou alterar um registro existente
Private Sub Gravar()
[ô]se houver campos em branco informa ao usuario
If Text_receita.Text = [Ô][Ô] Or _
Text_ingredientes.Text = [Ô][Ô] Or _
Text_preparo.Text = [Ô][Ô] Then
MsgBox ([Ô]Existe(m) campo(s) em branco, verifique[Ô])
Else [ô]se não, faz a busca no BD
With cmd
.ActiveConnection = cnnreceitas
.CommandType = adCmdText
.CommandText = [Ô]select * from receitas[Ô]
Set rs = .Execute
End With
With rs
.Filter = [Ô]cod = [Ô] & Text_cod.Text & [Ô] [Ô]
If .BOF And .EOF Then [ô]se não achar identifica
[ô]como inclusão
With cmd
.ActiveConnection = cnnreceitas
.CommandType = adCmdText
.CommandText = [Ô]insert into receitas[Ô] & _
[Ô](cod,email, receita, ingredientes, preparo)values([ô][Ô] & _
Text_cod.Text & [Ô][ô],[ô][Ô] & _
Text_email & [Ô][ô],[ô][Ô] & _
Text_receita & [Ô][ô],[ô][Ô] & _
Text_ingredientes.Text & [Ô][ô],[ô][Ô] & _
Text_preparo.Text & [Ô][ô]);[Ô]
.Execute [ô]grava
vinfo = MsgBox([Ô]Receita salva com sucesso![Ô], vbOKOnly, [Ô]Salvar receita[Ô])
limpar_campos
travar_campos
preenche_list
End With
Else [ô]se achar o registro identifica como alteração
With cmd
.ActiveConnection = cnnreceitas
.CommandType = adCmdText
.CommandText = [Ô] update receitas set [Ô] & _
[Ô]receita = [ô][Ô] & Text_receita.Text & [Ô][ô],[Ô] & _
[Ô]email = [ô][Ô] & Text_email.Text & [Ô][ô],[Ô] & _
[Ô]ingredientes = [ô][Ô] & Text_ingredientes.Text & [Ô][ô],[Ô] & _
[Ô]preparo = [ô][Ô] & Text_preparo.Text & [Ô][ô][Ô] & _
[Ô]where cod = [Ô] & Text_cod.Text & [Ô];[Ô]
.Execute
vok = MsgBox([Ô]Alterações salvas com sucesso![Ô], vbOKOnly, [Ô]Alterar receita[Ô])
limpar_campos
travar_campos
preenche_list
End With
End If
End With
End If
End Sub
[ô]subprocedimento que carrega a lista com os registros
[ô]do BD quando executado no evento Load do Form
Private Sub preenche_list()
With cmd
.ActiveConnection = cnnreceitas
.CommandType = adCmdText
.CommandText = [Ô]select * from receitas[Ô]
Set rs = .Execute
End With
Do While Not rs.EOF
If Not IsNull(rs!receita) Then
List_receitas.AddItem rs!receita
End If
rs.MoveNext
Loop
End Sub
[ô]subprocedimento que quando chamado limpa os controles
[ô]do form
Private Sub limpar_campos()
Text_receita.Text = [Ô][Ô]
Text_email.Text = [Ô][Ô]
Text_ingredientes.Text = [Ô][Ô]
Text_preparo.Text = [Ô][Ô]
Text_cod.Text = [Ô][Ô]
List_receitas.Clear
End Sub
[ô]subprocedimento que trava os textbox
Private Sub travar_campos()
Text_receita.Locked = True
Text_ingredientes.Locked = True
Text_preparo.Locked = True
Text_email.Locked = True
End Sub
[ô]subprocedimento que destrava os textbox
Private Sub liberar_campos()
Text_receita.Locked = False
Text_ingredientes.Locked = False
Text_preparo.Locked = False
Text_email.Locked = False
End Sub
[ô]subprocedimento que faz a exclusão de um registro
[ô]no BD
Private Sub excluir()
[ô]se o campo com o numero do codigo estiver em branco
[ô]não executa nada
If Text_cod.Text = [Ô][Ô] Then
MsgBox ([Ô]Não existe receita para exclusão, verifique.[Ô])
Else [ô]se não estiver em branco solicita a confirmação
[ô]de exclusão do registro
vinfo = MsgBox([Ô]Deseja excluir esta receita ?[Ô], vbYesNo + vbQuestion, [Ô]Excluir receita[Ô])
If vinfo = vbYes Then [ô]se confirmado então exclui
With cmd
.ActiveConnection = cnnreceitas
.CommandType = adCmdText
.CommandText = [Ô] delete from receitas where cod = [Ô] & Text_cod.Text & [Ô];[Ô]
.Execute
End With
End If
limpar_campos [ô]limpa os campos
preenche_list [ô]preenche a lista novamente
End If
End Sub
[ô]declarando os objetos necessários
[ô]command e recordset para interagir com o BD
[ô]e declarando variavel para utilizar msgbox
Dim cmd As New ADODB.Command
Dim rs As New ADODB.Recordset
Dim vinfo As Integer
[ô]chamando a sub que carrega a lista com os dados do BD
Private Sub Form_Load()
preenche_list
End Sub
[ô]descarregando os objetos command e recordset quando
[ô]fechar o form e limpando os arquivos temp criados
Private Sub Form_Unload(Cancel As Integer)
Set cmd = Nothing
Set rs = Nothing
Set cnnreceitas = Nothing
If Dir([Ô]c:*.tmp[Ô]) <> [Ô][Ô] Then
On Error Resume Next
Kill [Ô]c:*.tmp[Ô]
End If
End Sub
[ô]quando der duplo click na lista
[ô]filtra as informações no BD e joga nos campos
[ô]para alterar
Private Sub List_receitas_DblClick()
With cmd
.ActiveConnection = cnnreceitas
.CommandType = adCmdText
.CommandText = [Ô]select * from receitas[Ô]
Set rs = .Execute
End With
With rs
.Filter = [Ô] receita like [ô][Ô] & List_receitas.Text & [Ô][ô][Ô]
Frame_cadastro.Visible = True
Frame_Localizar.Visible = False
Toolbar1.Visible = False
Toolbar2.Visible = True
travar_campos
Text_cod = !cod
Text_receita = !receita
Text_ingredientes = !ingredientes
Text_preparo = !preparo
Text_email = !email
End With
End Sub
[ô]codigo que faz a busca na List quando é digitado
[ô]na text
Private Sub Text1_Change()
On Error GoTo trataerro
With cmd
.ActiveConnection = cnnreceitas
.CommandType = adCmdText
.CommandText = [Ô]select * from receitas[Ô]
Set rs = .Execute
End With
With rs
.Filter = [Ô] receita like [ô]%[Ô] & Text1.Text & [Ô]%[ô][Ô]
If .BOF And .EOF Then
MsgBox ([Ô]Sequencia de caracteres não encontrado na lista[Ô])
Else
List_receitas = rs!receita
End If
End With
trataerro:
With Err
If .Number <> 0 Then
.Number = 0
End If
End With
End Sub
[ô]faz as alterações entre as toolbar e os frames
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
Select Case Button.Index
Case 1
Toolbar1.Visible = False
Toolbar2.Visible = True
Frame_cadastro.Visible = True
Frame_Localizar.Visible = False
Case 2
Frame_Localizar.Visible = True
Text1.Text = [Ô][Ô]
End Select
End Sub
[ô]chama os procedimentos de gravar, inserir ou retornar
[ô]para o outro frame
Private Sub Toolbar2_ButtonClick(ByVal Button As MSComctlLib.Button)
Select Case Button.Index
Case 1
NOVO
Case 2
Gravar
Case 3
If Text_cod.Text <> [Ô][Ô] Then
liberar_campos
Else
MsgBox ([Ô]Escolha uma receita na lista através do menu Localizar, dê duplo click na receita a ser alterada[Ô])
End If
Case 4
excluir
Case 5
Toolbar2.Visible = False
Toolbar1.Visible = True
Frame_cadastro.Visible = False
limpar_campos
preenche_list
End Select
End Sub
[ô]subprocedimento que prepara a inserção de um novo
[ô]registro no BD
Private Sub NOVO()
vinfo = MsgBox([Ô]Deseja inserir nova receita no Livro de Receitas ?[Ô], vbYesNo + vbQuestion, [Ô]Nova receita[Ô])
If vinfo = vbYes Then
With cmd
.ActiveConnection = cnnreceitas
.CommandType = adCmdText
.CommandText = [Ô]select max(cod) as Mcod from receitas[Ô]
Set rs = .Execute
End With
With rs
If IsNull(rs!Mcod) Then
Text_cod.Text = 1
Else
limpar_campos
preenche_list
Text_cod.Text = !Mcod + 1
End If
End With
Text_receita.Locked = False
Text_ingredientes.Locked = False
Text_preparo.Locked = False
Text_email.Locked = False
Text_receita.SetFocus
End If
End Sub
[ô]subprocedimento para gravar um registro novo
[ô]ou alterar um registro existente
Private Sub Gravar()
[ô]se houver campos em branco informa ao usuario
If Text_receita.Text = [Ô][Ô] Or _
Text_ingredientes.Text = [Ô][Ô] Or _
Text_preparo.Text = [Ô][Ô] Then
MsgBox ([Ô]Existe(m) campo(s) em branco, verifique[Ô])
Else [ô]se não, faz a busca no BD
With cmd
.ActiveConnection = cnnreceitas
.CommandType = adCmdText
.CommandText = [Ô]select * from receitas[Ô]
Set rs = .Execute
End With
With rs
.Filter = [Ô]cod = [Ô] & Text_cod.Text & [Ô] [Ô]
If .BOF And .EOF Then [ô]se não achar identifica
[ô]como inclusão
With cmd
.ActiveConnection = cnnreceitas
.CommandType = adCmdText
.CommandText = [Ô]insert into receitas[Ô] & _
[Ô](cod,email, receita, ingredientes, preparo)values([ô][Ô] & _
Text_cod.Text & [Ô][ô],[ô][Ô] & _
Text_email & [Ô][ô],[ô][Ô] & _
Text_receita & [Ô][ô],[ô][Ô] & _
Text_ingredientes.Text & [Ô][ô],[ô][Ô] & _
Text_preparo.Text & [Ô][ô]);[Ô]
.Execute [ô]grava
vinfo = MsgBox([Ô]Receita salva com sucesso![Ô], vbOKOnly, [Ô]Salvar receita[Ô])
limpar_campos
travar_campos
preenche_list
End With
Else [ô]se achar o registro identifica como alteração
With cmd
.ActiveConnection = cnnreceitas
.CommandType = adCmdText
.CommandText = [Ô] update receitas set [Ô] & _
[Ô]receita = [ô][Ô] & Text_receita.Text & [Ô][ô],[Ô] & _
[Ô]email = [ô][Ô] & Text_email.Text & [Ô][ô],[Ô] & _
[Ô]ingredientes = [ô][Ô] & Text_ingredientes.Text & [Ô][ô],[Ô] & _
[Ô]preparo = [ô][Ô] & Text_preparo.Text & [Ô][ô][Ô] & _
[Ô]where cod = [Ô] & Text_cod.Text & [Ô];[Ô]
.Execute
vok = MsgBox([Ô]Alterações salvas com sucesso![Ô], vbOKOnly, [Ô]Alterar receita[Ô])
limpar_campos
travar_campos
preenche_list
End With
End If
End With
End If
End Sub
[ô]subprocedimento que carrega a lista com os registros
[ô]do BD quando executado no evento Load do Form
Private Sub preenche_list()
With cmd
.ActiveConnection = cnnreceitas
.CommandType = adCmdText
.CommandText = [Ô]select * from receitas[Ô]
Set rs = .Execute
End With
Do While Not rs.EOF
If Not IsNull(rs!receita) Then
List_receitas.AddItem rs!receita
End If
rs.MoveNext
Loop
End Sub
[ô]subprocedimento que quando chamado limpa os controles
[ô]do form
Private Sub limpar_campos()
Text_receita.Text = [Ô][Ô]
Text_email.Text = [Ô][Ô]
Text_ingredientes.Text = [Ô][Ô]
Text_preparo.Text = [Ô][Ô]
Text_cod.Text = [Ô][Ô]
List_receitas.Clear
End Sub
[ô]subprocedimento que trava os textbox
Private Sub travar_campos()
Text_receita.Locked = True
Text_ingredientes.Locked = True
Text_preparo.Locked = True
Text_email.Locked = True
End Sub
[ô]subprocedimento que destrava os textbox
Private Sub liberar_campos()
Text_receita.Locked = False
Text_ingredientes.Locked = False
Text_preparo.Locked = False
Text_email.Locked = False
End Sub
[ô]subprocedimento que faz a exclusão de um registro
[ô]no BD
Private Sub excluir()
[ô]se o campo com o numero do codigo estiver em branco
[ô]não executa nada
If Text_cod.Text = [Ô][Ô] Then
MsgBox ([Ô]Não existe receita para exclusão, verifique.[Ô])
Else [ô]se não estiver em branco solicita a confirmação
[ô]de exclusão do registro
vinfo = MsgBox([Ô]Deseja excluir esta receita ?[Ô], vbYesNo + vbQuestion, [Ô]Excluir receita[Ô])
If vinfo = vbYes Then [ô]se confirmado então exclui
With cmd
.ActiveConnection = cnnreceitas
.CommandType = adCmdText
.CommandText = [Ô] delete from receitas where cod = [Ô] & Text_cod.Text & [Ô];[Ô]
.Execute
End With
End If
limpar_campos [ô]limpa os campos
preenche_list [ô]preenche a lista novamente
End If
End Sub
Não é por mal não... mas você nem ao menos tentou ler o código né?
Poxa cara... está bem comentado onde existe essa condição.
Ler nunca matou ninguém...
Não saber ler um código até vai.. mas ter má vontade pra ler comentário é preguiça das brabas...
Poxa cara... está bem comentado onde existe essa condição.
Ler nunca matou ninguém...
Não saber ler um código até vai.. mas ter má vontade pra ler comentário é preguiça das brabas...
Prezado colega:
A parte do código especificada abaixo, NÃO é O QUE IMPEDE DO BD RECEBER CAMPOS NULOS.
Por esse motivo solicitei auxÃlio do Forum.
Se vc também não sabe, então diz que não sabe, porque é feio fazer esse tipo de comentário num local compartilhado onde todos
estão para aprender.
O objetivo do Forum é compartilhamento de informações especÃficas do tema e não para opiniões particulares sobre os demais companheiros.
Mesmo assim, agradeço pelo seu comentário.
[ô]se houver campos em branco informa ao usuario
If Text_receita.Text = [Ô][Ô] Or _
Text_ingredientes.Text = [Ô][Ô] Or _
Text_preparo.Text = [Ô][Ô] Then
MsgBox ([Ô]Existe(m) campo(s) em branco, verifique[Ô])
A parte do código especificada abaixo, NÃO é O QUE IMPEDE DO BD RECEBER CAMPOS NULOS.
Por esse motivo solicitei auxÃlio do Forum.
Se vc também não sabe, então diz que não sabe, porque é feio fazer esse tipo de comentário num local compartilhado onde todos
estão para aprender.
O objetivo do Forum é compartilhamento de informações especÃficas do tema e não para opiniões particulares sobre os demais companheiros.
Mesmo assim, agradeço pelo seu comentário.
[ô]se houver campos em branco informa ao usuario
If Text_receita.Text = [Ô][Ô] Or _
Text_ingredientes.Text = [Ô][Ô] Or _
Text_preparo.Text = [Ô][Ô] Then
MsgBox ([Ô]Existe(m) campo(s) em branco, verifique[Ô])
Tente adaptar, pode ser que ajude.
Private Function vazio(Formulario As MSForms.UserForm, ByRef extControle As Object) As Boolean
Dim controle As Object
On Error Resume Next
vazio = False
For Each controle In Formulario.Controls
If controle.Tag = [Ô]Sim[Ô] Or controle.Tag = [Ô]Tipo[Ô] Then
If Trim(controle.Text) = [Ô][Ô] Then
If Err.Number = 0 Then
vazio = True
controle.BackColor = RGB(250, 250, 194)
End If
Set extControle = controle
Else
If controle.BackColor = RGB(250, 250, 194) Then
controle.BackColor = QBColor(15)
End If
End If
End If
Next controle
End Function [ô]
Dim controle As Object
If vazio(Me, controle) = True Then
MsgBox [Ô]Os campos salientados deverão ser preenchidos corrretamente, não podem haver campos nulos.[Ô]
controle.SetFocus
Exit Sub
End If
Private Function vazio(Formulario As MSForms.UserForm, ByRef extControle As Object) As Boolean
Dim controle As Object
On Error Resume Next
vazio = False
For Each controle In Formulario.Controls
If controle.Tag = [Ô]Sim[Ô] Or controle.Tag = [Ô]Tipo[Ô] Then
If Trim(controle.Text) = [Ô][Ô] Then
If Err.Number = 0 Then
vazio = True
controle.BackColor = RGB(250, 250, 194)
End If
Set extControle = controle
Else
If controle.BackColor = RGB(250, 250, 194) Then
controle.BackColor = QBColor(15)
End If
End If
End If
Next controle
End Function [ô]
Dim controle As Object
If vazio(Me, controle) = True Then
MsgBox [Ô]Os campos salientados deverão ser preenchidos corrretamente, não podem haver campos nulos.[Ô]
controle.SetFocus
Exit Sub
End If
Ok, vamos por partes então:
Você já consegue identificar onde está gravando no banco de dados, certo?
O que você não sabe é como gravar [Ô]null[Ô] ao invés de o valor da textbox, certo?
Você já consegue identificar onde está gravando no banco de dados, certo?
O que você não sabe é como gravar [Ô]null[Ô] ao invés de o valor da textbox, certo?
Oi, boa noite!
O que está acontecendo é o seguinte:
se eu não preencho todos os campos do formulário, ele me retorna que existem campos vazios.
Mas por ser um cadastro, pode ser que o usuário não tenha um celular.
Ou seu endereço não tenha complemento; ou seja eu preciso que o banco grave apenas os
dados que o usuário colocou no formulário. é só isso.
Antecipadamente agradeço pela atenção.
O que está acontecendo é o seguinte:
se eu não preencho todos os campos do formulário, ele me retorna que existem campos vazios.
Mas por ser um cadastro, pode ser que o usuário não tenha um celular.
Ou seu endereço não tenha complemento; ou seja eu preciso que o banco grave apenas os
dados que o usuário colocou no formulário. é só isso.
Antecipadamente agradeço pela atenção.
Ah, só para complementar, o banco que estou usando é Access. Obrigado!
Sim, eu entendi o que você quer que aconteça. Mas as perguntas que fiz, continuam valendo:
Citação::
Você já consegue identificar onde está gravando no banco de dados, certo?
O que você não sabe é como gravar [Ô]null[Ô] ao invés de o valor da textbox, certo?
Para validar os TextBox que não podem ser vazios vc usa a função que lhe passei anteriormente.
Para gravar null, vc usa essa abaixo:
Public Function Nnull(aString As Variant) As String
If IsNull(aString) Or IsEmpty(aString) Then
Nnull = [Ô][Ô]
Else
Nnull = CStr(aString)
End If
End Function
No INSERT Nnull(Text_cod.Text)
Creio que seja isso. Claro que existe outras maneiras.......
Para gravar null, vc usa essa abaixo:
Public Function Nnull(aString As Variant) As String
If IsNull(aString) Or IsEmpty(aString) Then
Nnull = [Ô][Ô]
Else
Nnull = CStr(aString)
End If
End Function
No INSERT Nnull(Text_cod.Text)
Creio que seja isso. Claro que existe outras maneiras.......
Gente, para realmente ajudar o usuário nesse caso, a pior coisa a ser feita é ficar postando código, só vai confundir ainda mais. Ele já tem praticamente pronto o que ele quer, o que precisa ser feito é mostrar para ele o que precisa ser feito. Não é questão de mais código, mas sim de entendimento de código.
Cara, sinceramente, não consegui entender muito bem a sua dúvida.
Se você quer simplesmente que o programa ignore a mensagem de que existem campos vazios para gravar no banco de dados, basta retirar essa condição nesta parte do código:
Simples assim.
Agora se você quiser gravar valores nulos na tabela, aà é outra história. Eu já te respondi em um outro tópico anterior seu. Dá uma verificada lá.
Se você quer simplesmente que o programa ignore a mensagem de que existem campos vazios para gravar no banco de dados, basta retirar essa condição nesta parte do código:
[ô]se houver campos em branco informa ao usuario
If Text_receita.Text = [Ô][Ô] Or _
Text_ingredientes.Text = [Ô][Ô] Or _
Text_preparo.Text = [Ô][Ô] Then
MsgBox ([Ô]Existe(m) campo(s) em branco, verifique[Ô])
Simples assim.
Agora se você quiser gravar valores nulos na tabela, aà é outra história. Eu já te respondi em um outro tópico anterior seu. Dá uma verificada lá.
Tópico encerrado , respostas não são mais permitidas