INSERT INTO X CAMPOS NULOS
Pessoal, são três questões neste código vejam:
questão 1: eu fazia meus aplicativos com controle adodc e quando inseria valores em um recordset ele aceitava campos em branco, porém estou modificando um aplicativo para começar a fazer tudo via código e me deparei com uma questão, abaixo está meu código, ele não aceita quando um dos campos está em branco, quais as possÃÂÂveis soluções?:
questão 2 :é mesmo necessário sempre fechar o command e o recordset ao final da aplicação?
Set rs_Pronaf = Nothing
Set cnncommando = Nothing
questão 3: se quiser inserir num campo da tabela um valor sem referência no form? ou seja, no campo: FASE_PROJETO inserir sempre a string: EM ANÃÂÂLISE, pois tentei de todas as formas e não consegui
questão 1: eu fazia meus aplicativos com controle adodc e quando inseria valores em um recordset ele aceitava campos em branco, porém estou modificando um aplicativo para começar a fazer tudo via código e me deparei com uma questão, abaixo está meu código, ele não aceita quando um dos campos está em branco, quais as possÃÂÂveis soluções?:
Private Sub Cmd_SALVAR_Click()
Dim cnncomando As New ADODB.Command
Dim rs_Pronaf As New ADODB.Recordset
With cnncomando
.ActiveConnection = cnnProjetos
.CommandType = adCmdText
.CommandText = " insert into projetos " & _
"(cod, data, cpf, nome, projetista, valor, atividade, municipio, porte)values ('" & _
Text_COD.Text & "','" & _
Text_DATA.Text & "','" & _
Text_CPF.Text & "', '" & _
Text_NOME.Text & "','" & _
Combo_PROJ.Text & "','" & _
Text_VALOR.Text & "','" & _
Combo_ATIV.Text & "','" & _
Combo_MUN.Text & "','" & _
Combo_PORTE.Text & "');"
.Execute
End With
Set rs_Pronaf = Nothing
Set cnncommando = Nothing
Dim vOK As Integer
vOK = MsgBox("Projeto salvo com sucesso", vbOKOnly + vbInformation, "Salvar Projeto")
End Sub
questão 2 :é mesmo necessário sempre fechar o command e o recordset ao final da aplicação?
Set rs_Pronaf = Nothing
Set cnncommando = Nothing
questão 3: se quiser inserir num campo da tabela um valor sem referência no form? ou seja, no campo: FASE_PROJETO inserir sempre a string: EM ANÃÂÂLISE, pois tentei de todas as formas e não consegui
talvez no seu banco tava com not null pq aqui em ksa aceita normal
agora em questão de fecha as variaveis faça assim
set frmseuform = nothing
fazendo isso vc mata tudo banco, variaveis
e melhor
cria uma variavel, joga o valor nela e grava com ela
lembrando q quando no bd o campo e varchar vc tem q coloca aspas simples
'" & txttal & "'
quando e numero num precisa
" & txttal & "
falo kra axo q e so isso
agora em questão de fecha as variaveis faça assim
set frmseuform = nothing
fazendo isso vc mata tudo banco, variaveis
e melhor
cria uma variavel, joga o valor nela e grava com ela
lembrando q quando no bd o campo e varchar vc tem q coloca aspas simples
'" & txttal & "'
quando e numero num precisa
" & txttal & "
falo kra axo q e so isso
Cara o melhor a fazer e verificar se os campos estao batendo ...
poste o erro que esta apresentando fica melhor pra gente te ajudar...
pois olhando assim pode ser muitas coisas...
Att,
Marcelo Bressan
poste o erro que esta apresentando fica melhor pra gente te ajudar...
pois olhando assim pode ser muitas coisas...
Att,
Marcelo Bressan
Fiz o seguinte teste
fui tirando campo a campo pois vi que alguns aceitava o campo nulo e o único que não aceita campo nulo é o campo: VALOR ele é do tipo(currency), os outros aceitam.
o erro é:
Tipos de dados incompativel na expressão de critério 2147217913(80040e07)
fui tirando campo a campo pois vi que alguns aceitava o campo nulo e o único que não aceita campo nulo é o campo: VALOR ele é do tipo(currency), os outros aceitam.
o erro é:
Tipos de dados incompativel na expressão de critério 2147217913(80040e07)
Se vc deseja que aceite nulo basta ir no seu banco de dados alterar o campo Valor para aceitar NULL...
ou vc faz as modificações abaixo para funcionar:
Combo_PROJ.Text & "'," & _
iif (len(Text_VALOR.Text)=0,0,txt_valor.Text) & ",'" & _
OBS.: Se o Text_VALOR.Text não for preenchido (estiver vazio) o codigo acima passa para o banco o valor zero.
FAÇA O TESTE...
ou vc faz as modificações abaixo para funcionar:
Combo_PROJ.Text & "'," & _
iif (len(Text_VALOR.Text)=0,0,txt_valor.Text) & ",'" & _
OBS.: Se o Text_VALOR.Text não for preenchido (estiver vazio) o codigo acima passa para o banco o valor zero.
FAÇA O TESTE...
kra se eu num me engano e isso mesmo
na sua sql onde no bd for numero vc coloca sem aspas simples
" & txttal & "
agora quando for texto vc coloca aspas simples
'" & txttal & "'
axo q isso resolve
outra coisa tbm e vc faze um if para quando num tive nda, muda para 0 e add como 0
na sua sql onde no bd for numero vc coloca sem aspas simples
" & txttal & "
agora quando for texto vc coloca aspas simples
'" & txttal & "'
axo q isso resolve
outra coisa tbm e vc faze um if para quando num tive nda, muda para 0 e add como 0

vcs tem q expliacar melhor
nao da para entender
Olá FRAU, cara essa expressão que vc pÃÂ's me parece que realmente funciona, mas no momento tá dando um erro que ainda tÃÂ' tentando concertar, se puder me ajudar, erro:
"erro de sintaxe na sequencia de caracteres"
"0,",",");'.
"erro de sintaxe na sequencia de caracteres"
"0,",",");'.
faz assim
Private Sub Cmd_SALVAR_Click()
Dim cnncomando As New ADODB.Command
Dim rs_Pronaf As New ADODB.Recordset
With cnncomando
.ActiveConnection = cnnProjetos
.CommandType = adCmdText
.CommandText = " insert into projetos " & _
"(cod, data, cpf, nome, projetista, valor, atividade, municipio, porte)values ('" & _
Text_COD.Text & "','" & _
Text_DATA.Text & "','" & _
Text_CPF.Text & "', '" & _
Text_NOME.Text & "','" & _
Combo_PROJ.Text & "','0" & _
Text_VALOR.Text & "','" & _
Combo_ATIV.Text & "','" & _
Combo_MUN.Text & "','" & _
Combo_PORTE.Text & "');"
.Execute
End With
Set rs_Pronaf = Nothing
Set cnncommando = Nothing
Dim vOK As Integer
vOK = MsgBox("Projeto salvo com sucesso", vbOKOnly + vbInformation, "Salvar Projeto")
End Sub
Citação:Olá FRAU, cara essa expressão que vc pÃÂ's me parece que realmente funciona, mas no momento tá dando um erro que ainda tÃÂ' tentando concertar, se puder me ajudar, erro:
"erro de sintaxe na sequencia de caracteres"
"0,",",");'.
DàIMPRESSÃO QUE VC ESTàCOLOCANDO O ZERO ENTRE APOSTROFO...OU TEM APOSTROFO A MAIS...faz o seguinte: poste exatamente o codigo fonte desta parte...para ficar + fácil na ajuda.
Bom antes de mais nada acho que não custa nada você dar uma verificada no banco para ajustar os campos que são ou não obrigatórios. Se seu BD for Access, verifique se o campo permite comprimento zero ou não, etc...pois as vezes é um simples problema de propriedades na tabela.
Tópico encerrado , respostas não são mais permitidas