SALVAR CAMPO DATA VAZIO ACCESS

MARCELO.TREZE 01/09/2010 17:47:49
#351966
testeou meu exemplo modicicando seu código
IRENKO 01/09/2010 17:58:17
#351967
Cara, Data1 é meu campo na tabela do meu banco. O seu campo deve estar configurado (Type) como DateTime, testa ae.
ALANTB 01/09/2010 18:02:27
#351968
MARCELO-TREZE, como disse na em msg anterior copie o teu código e executei, mas ele se me retorna a msg de erro que coloquei abaixo da rotina de inclusao e updadate [Ô] HOUVE UM ERRO DURANTE A GRAVAÇÃO DE DADOS NA TABELA[Ô].No momento estou travado na INCLUSAO, nem tentei o UPDATE ainda.E realmente não grava os dados.Não sei se ao copiar do forum alterou algum caractere, espaço, aspas, etc.Como deve ficar a configuração do campo dentro do ACCESS: tipo data ou texto; comprimento zero: sim ou não. Esse exemplo funciona tambem com MASKEDBOX???
Na ajuda do ACCESS diz que: quando for gravar campo em branco usar aspas duplas sem espaço entre elas, mas como fazer para escrever no codigo do vb6 ex: txtdata = [Ô][ô] , ou seja gravar essas aspas no banco via código???
ALANTB 01/09/2010 23:28:16
#351986
Pessoal, tirei as mensagens de erro no meu código para poder localizar melhor o erro. Tentei incluir dados e o erro foi o seguinte:
[Ô]Erro de sintaxe(operador faltando) na expressão de consulta [ô]3007mm/dd/yyyy5[ô],DtRescisao=NULL[Ô].Não entendi patavinas da onde puxou aquele 3007 e o 5 na linha de erro. No access os campos data estão no tipo data/hora e no vb6 ta assim para gravar:

.CommandText = [Ô]INSERT INTO tbcontrato [Ô] & _
[Ô](ContratoNro, Matricula, CodCargo, CodFuncao, CodSetor, DtAdmissao, DtDesligado, Funcionario, CodTipoContrato, DtConcurso, CodAto, NroAto, [Ô] & _
[Ô]DtAto) VALUES ([ô][Ô] & _
txtnrocontrato.Text & [Ô][ô],[ô][Ô] & _
txtMatricula.Text & [Ô][ô],[ô][Ô] & _
txtCodCargo.Text & [Ô][ô],[ô][Ô] & _
txtCodFuncao.Text & [Ô][ô],[ô][Ô] & _
txtCodSetor.Text & [Ô][ô],[ô][Ô] & _
IIf(Not IsDate(txtAdmissao.Text), [Ô]null[Ô], [Ô][ô][Ô] + Format(txtAdmissao.Text, [Ô]dd/mm/yyyy[Ô]) + [Ô][ô][Ô]) & [Ô],[Ô] & _
IIf(Not IsDate(txtDesligado.Text), [Ô]null[Ô], [Ô][ô][Ô] + Format(txtDesligado.Text, [Ô]dd/mm/yyyy[Ô]) + [Ô][ô][Ô]) & [Ô],[Ô] & _
Combo1.Text & [Ô][ô],[ô][Ô] & _
txtCodTipoContrato.Text & [Ô][ô],[ô][Ô] & _
txtDataConcurso.Text & [Ô][ô],[ô][Ô] & _
txtCodAto.Text & [Ô][ô],[ô][Ô] & _
txtNroAto.Text & [Ô][ô],[ô][Ô] & _
txtDataAto.Text & [Ô][ô]);[Ô]
IRENKO 02/09/2010 07:58:39
#351999
Fiz umas modificações, tente assim:

Dim strSQL As String


strSQL = [Ô]INSERT INTO tbcontrato (ContratoNro, Matricula, CodCargo, CodFuncao, CodSetor, DtAdmissao, DtDesligado, Funcionario,[Ô]
strSQL = strSQL & [Ô]CodTipoContrato, DtConcurso, CodAto, NroAto, DtAto)[Ô]

strSQL = strSQL & [Ô]VALUES([Ô]
strSQL = strSQL & [Ô][ô][Ô] & txtnrocontrato.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & txtMatricula.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & txtCodCargo.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & txtCodFuncao.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & txtCodSetor.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & IIf(Not IsDate(txtAdmissao.Text), Null, Format(txtAdmissao.Text, [Ô]dd/mm/yyyy[Ô])) & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & IIf(Not IsDate(txtDesligado.Text), Null, Format(txtDesligado.Text, [Ô]dd/mm/yyyy[Ô])) & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & Combo1.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & txtCodTipoContrato.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & txtDataConcurso.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & txtCodAto.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & txtNroAto.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & txtDataAto.Text & [Ô][ô])[Ô]

SuaConexao.BeginTrans
SuaConexao.Execute (strSQL)
SuaConexao.CommitTrans
ALANTB 02/09/2010 10:07:26
#352007
Pessoal, já virei do avesso aqui e não saio do lugar. Sendo assim vou postar meu projeto para os colegas verificarem, senão a coisa não vai adiante. Para facilitar, a maneira que estou executando é a seguinte:
Executar o projeto, no menu CADASTRO selecionar CADASTRO DE CONTRATOS
no campo Nº CONTRATO digito 7 (que é o próximo numero de contrato no BD), e nos próximos campos faço uma seleção aleatória nos listviews, nos campos com data preencho a data de admissão e os outros deixo vazio, no combo SIM ou NÃO , preencho um tipo de ato e um numero e tento incluir, mas da erro, ou até mesmo tive situações em que me exibiu a msg gravação OK, mas no bd não apareceu nada. Peço aos colegas que dêem uma olhada..
LUIS.HERRERA 02/09/2010 10:27:01
#352010
ALANTB no access você precisa Obrigatoriamente:

1- Definir o campo da tabela para aceitar: Requerido = Sim
2- Se indexar o campo colocar duplicação autorizada
3- O campo deve ser definido como DATA e não texto, do contrário não conseguirá realizar pesquisas por períodos no banco
4- Ao montar sua SQL no VB, colocar a data entre # # se não não funciona
5- Por último pode incluir Null sim, não assim no VB:
[Ô]UPDATE tabela sete campoData = Null .......[Ô]

Isso é o necessário, do contrário terá problemas realmente.
IRENKO 02/09/2010 11:27:31
#352017
ALANTB, o problema estava aqui:

Private Sub txtDesligado_LostFocus()
[ô]If txtDesligado.Text = [Ô][Ô] Then Exit Sub
[ô]txtDesligado.Text = Format(txtDesligado, [Ô]00/00/0000[Ô])
End Sub

comentei as linhas e esta gravando normalmente na alteração. Mudei o código, veja o anexo.
MARCELO.TREZE 02/09/2010 13:52:33
#352025
o erro é o seguinte quando se trata de access estas são as regras:

quando é um campo do tipo texto vc salva entre aspas simples, ex:

nome = [ô] Marcelo [ô]

quanfor numero ou nulo(Null) não se usa aspas, ex:

codigo = 1234

ou

codigo = Null

se for do tipo Data/Hora o campo de estar entre o caractere(#) no formato mm/dd/yyyy, ex:

data = #07/31/2010#

lógico a data deve eser uma data válida, um erro de digitação pode lhe causar erro

então o mais certoa para sua função é:

strSQL = [Ô]INSERT INTO tbcontrato (ContratoNro, Matricula, CodCargo, CodFuncao, CodSetor, DtAdmissao, DtDesligado, Funcionario,[Ô]
strSQL = strSQL & [Ô]CodTipoContrato, DtConcurso, CodAto, NroAto, DtAto)[Ô]

strSQL = strSQL & [Ô]VALUES([Ô]
strSQL = strSQL & [Ô][ô][Ô] & txtnrocontrato.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & txtMatricula.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & txtCodCargo.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & txtCodFuncao.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & txtCodSetor.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][Ô] & IIf(txtAdmissao.Text=[Ô][Ô], [Ô]Null[Ô], [Ô]#[Ô] & Format(txtAdmissao.Text, [Ô]dd/mm/yyyy[Ô]) & [Ô]#[Ô]) & [Ô],[Ô]
strSQL = strSQL & [Ô][Ô] & IIf(txtDesligado.Text=[Ô][Ô], [Ô]Null[Ô], [Ô]#[Ô] & Format(txtDesligado.Text, [Ô]dd/mm/yyyy[Ô]) & [Ô]#[Ô]) & [Ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & Combo1.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & txtCodTipoContrato.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & txtDataConcurso.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & txtCodAto.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & txtNroAto.Text & [Ô][ô],[Ô]
strSQL = strSQL & [Ô][ô][Ô] & txtDataAto.Text & [Ô][ô])[Ô]

SuaConexao.BeginTrans
SuaConexao.Execute (strSQL)
SuaConexao.CommitTrans


bom eu mesmo havia colocado errado da ultimavez, pois coloquei o (#) dentro do format, da forma acima dará certo, ou seja:

traduzindo o IIf

IIf(txtAdmissao.Text=[Ô][Ô], [Ô]Null[Ô], [Ô]#[Ô] & Format(txtAdmissao.Text, [Ô]dd/mm/yyyy[Ô]) & [Ô]#[Ô]) & [Ô],[Ô]


será a mesma coisa que

If txtAdmissao.Text = [Ô][Ô] then
strSQL = strSQL & [Ô]Null[Ô]
Else
strSQL = strSQL & [Ô]#07/31/2010#[Ô]
End if


entendeu, teste novamente, só que desta vez com o código posta acima, tenho certeza que funcionará





ALANTB 02/09/2010 17:37:13
#352045
MARCELO-TREZE, fiz conforme código acima e exibe erro de operador faltando na expressao de consulta.Tirando o campo Admissao, os outros campos com data eventualmente também podem ser incluidoatualizados em branco.Continuo fazendo testes e contando com a colaboração dos colegas do forum...
Página 2 de 3 [27 registro(s)]
Tópico encerrado , respostas não são mais permitidas