Ir para conteúdo

POWERED BY:

Arquivado

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

fagnerx21

[Resolvido] Não consigo incluir !

Recommended Posts

Olá a todos,tipo,eu abro minha conexão com o caminho certo e antes de incluir,mas ele dá um erro:

 

http://img124.imageshack.us/my.php?image=prob1jv7.png

 

O código é esse:

Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset

Private Sub cmdGravar_Click()
	Dim sql As New ADODB.Command
	'Abre a conexão
	cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\Adm\Meus documentos\PROJETOS\VB\CONTROLE.mdb;"
	'Verifica se o campo nome está vazio
	If txtNome = "" Then
		'Então emite mensagem de erro ao usuário
		MsgBox "Nome do cliente é obrigatório !", vbOKOnly + vbCritical, "Cadastrar cliente"
		'Põe foco no campo nome
		txtNome.SetFocus
		'Abandona a rotina
		Exit Sub
	End If
	'Monta a instrução sql e inicia a inclusão do registro
	With sql
		.CommandText = "INSERT INTO Clientes (Nome,Cpf,Datanasc,Cep,Endereco,Telefone,Celular,Obs,Bairro) VALUES (?,?,?,?,?,?,?,?,?)"
		
		.Parameters.Append .CreateParameter("Nome", adVarChar, adParamInput, 50)
		.Parameters.Append .CreateParameter("Cpf", adVarChar, adParamInput, 14)
		.Parameters.Append .CreateParameter("Datanasc", adDate, adParamInput, 8)
		.Parameters.Append .CreateParameter("Cep", adVarChar, adParamInput, 9)
		.Parameters.Append .CreateParameter("Endereco", adVarChar, adParamInput, 50)
		.Parameters.Append .CreateParameter("Telefone", adVarChar, adParamInput, 8)
		.Parameters.Append .CreateParameter("Celular", adVarChar, adParamInput, 8)
		.Parameters.Append .CreateParameter("Obs", adVarChar, adParamInput, 150)
		.Parameters.Append .CreateParameter("Bairro", adVarChar, adParamInput, 50)
		
		.Parameters("Nome") = txtNome
		
		If txtCNPJ = Empty Then
			.Parameters("Cpf") = Null
		Else
			.Parameters("Cpf") = txtCNPJ
		End If
		If mskNascimento = Empty Then
			.Parameters("Datanasc") = Null
		Else
			.Parameters("Datanasc") = mskNascimento
		End If
		If mskCep = Empty Then
			.Parameters("Cep") = Null
		Else
			.Parameters("Cep") = mskCep
		End If
		If txtEndereco = Empty Then
			.Parameters("Endereco") = Null
		Else
			.Parameters("Endereco") = txtEndereco
		End If
		If txtTelefone = Empty Then
			.Parameters("Telefone") = Null
		Else
			.Parameters("Telefone") = txtTelefone
		End If
		If txtCelular = Empty Then
			.Parameters("Celular") = Null
		Else
			.Parameters("Celular") = txtCelular
		End If
		If txtObs = Empty Then
			.Parameters("Obs") = Null
		Else
			.Parameters("Obs") = txtObs
		End If
		If txtBairro = Empty Then
			.Parameters("Bairro") = Null
		Else
			.Parameters("Bairro") = txtBairro
		End If
				
		.Execute
	End With
	'Emite mensagem ao usuário no final da inclusão
	MsgBox "Cliente incluído com sucesso ! ", vbOKOnly + vbInformation, "Cadastrar cliente"
	'Chama a função para limpar os campos do formulário
	cmdLimpar_Click
	Call fuLimpar(Me)
	'Põe foco no campo nome
	txtNome.SetFocus
	'Abandona a rotina
	Exit Sub
End Sub

Se alguém puder me ajudar ficarei muito grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Analisando seu código, percebi que faltou a seguinte instrução:

 

Set .ActiveConnection = cn

 

coloca logo após o with sql e faça um teste. ok?

 

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Reproduzi o seu código com a minha alteração e funcionou aqui. Dê uma olhada!

 

Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset

Private Sub cmdGravar_Click()
Dim sql As New ADODB.Command
'Abre a conexão
'cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\Adm\Meus documentos\PROJETOS\VB\CONTROLE.mdb;"
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\141142\Meus documentos\Marcos - BMC\Arquivos - Marcos\Database\CONTROLE.mdb;"
'Verifica se o campo nome está vazio
If txtNome = "" Then
'Então emite mensagem de erro ao usuário
MsgBox "Nome do cliente é obrigatório !", vbOKOnly + vbCritical, "Cadastrar cliente"
'Põe foco no campo nome
txtNome.SetFocus
'Abandona a rotina
Exit Sub
End If
'Monta a instrução sql e inicia a inclusão do registro
With sql

Set .ActiveConnection = cn
.CommandText = "INSERT INTO Clientes (Nome,Cpf,Datanasc,Cep,Endereco,Telefone,Celular,Obs,Bairro) VALUES (?,?,?,?,?,?,?,?,?)"

.Parameters.Append .CreateParameter("Nome", adVarChar, adParamInput, 50)
.Parameters.Append .CreateParameter("Cpf", adVarChar, adParamInput, 14)
.Parameters.Append .CreateParameter("Datanasc", adDate, adParamInput, 8)
.Parameters.Append .CreateParameter("Cep", adVarChar, adParamInput, 9)
.Parameters.Append .CreateParameter("Endereco", adVarChar, adParamInput, 50)
.Parameters.Append .CreateParameter("Telefone", adVarChar, adParamInput, 8)
.Parameters.Append .CreateParameter("Celular", adVarChar, adParamInput, 8)
.Parameters.Append .CreateParameter("Obs", adVarChar, adParamInput, 150)
.Parameters.Append .CreateParameter("Bairro", adVarChar, adParamInput, 50)

.Parameters("Nome") = txtNome

If txtCNPJ = Empty Then
.Parameters("Cpf") = Null
Else
.Parameters("Cpf") = txtCNPJ
End If
If MskNascimento = Empty Then
.Parameters("Datanasc") = Null
Else
.Parameters("Datanasc") = MskNascimento
End If
If MskCEP = Empty Then
.Parameters("Cep") = Null
Else
.Parameters("Cep") = MskCEP
End If
If txtEndereco = Empty Then
.Parameters("Endereco") = Null
Else
.Parameters("Endereco") = txtEndereco
End If
If txtTelefone = Empty Then
.Parameters("Telefone") = Null
Else
.Parameters("Telefone") = txtTelefone
End If
If TxtCelular = Empty Then
.Parameters("Celular") = Null
Else
.Parameters("Celular") = TxtCelular
End If
If txtObs = Empty Then
.Parameters("Obs") = Null
Else
.Parameters("Obs") = txtObs
End If
If txtBairro = Empty Then
.Parameters("Bairro") = Null
Else
.Parameters("Bairro") = txtBairro
End If

.Execute
End With
'Emite mensagem ao usuário no final da inclusão
MsgBox "Cliente incluído com sucesso ! ", vbOKOnly + vbInformation, "Cadastrar cliente"
'Chama a função para limpar os campos do formulário
'cmdLimpar_Click
'Call fuLimpar(Me)
'Põe foco no campo nome
txtNome.SetFocus
'Abandona a rotina
Exit Sub
End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

blza :D deu certo agora,só mudei o path e rodo sussegado,pode ser algum erro de digitação meu que estava causando o erro então,mas o importante que agora funcionou,vou dar mais uma olhada no código.

muuuuiiiito obrigado cara,faz dias q to tentando arrumar isso pois sou leigo em vb.

Valeu !

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.