CAMPO_DATAHORA
Meus amigos do VbMania, estou tentando gravar no banco access
campos do tipo Data/Hora e nem sempre terei esses campos
preenchidos ou seja terei situacoes que ficaram em branco,
pergunta como fazer com que os campos sem conteudo sejam
gravados tambem. Fiz varias tentativas mais fico barrado
nessa mensagem: [Ô]Tipo de dados incompativel com a expressao
de criterio.[Ô]
Fico grato a todos.
campos do tipo Data/Hora e nem sempre terei esses campos
preenchidos ou seja terei situacoes que ficaram em branco,
pergunta como fazer com que os campos sem conteudo sejam
gravados tambem. Fiz varias tentativas mais fico barrado
nessa mensagem: [Ô]Tipo de dados incompativel com a expressao
de criterio.[Ô]
Public Function InserirCtasPagar(ByVal strRegistro As String, _
strData As String, _
strForn As String, strFatura As String, _
strParcla1 As String, strDataParcla1 As String, _
strSit1 As String, strParcla2 As String, _
strDataParcla2 As String, strSit2 As String, _
strParcla3 As String, strDataParcla3 As String, _
strSit3 As String, strParcla4 As String, _
strDataParcla4 As String, strSit4 As String, _
strParcla5 As String, strDataParcla5 As String, _
strSit5 As String) As Variant
[ô]Campos base de dados
[ô]Registro = numerico
[ô]Data = data/hora
[ô]Forn = texto
[ô]Fatura = moeda
[ô]Parcla1 = moeda
[ô]DataParcla1 = data/hora
[ô]Sit1 = texto
[ô]Parcla2 = moeda
[ô]DataParcla2 = data/hora
[ô]Sit2 = texto
[ô]Parcla3 = moeda
[ô]DataParcla3 = data/hora
[ô]Sit3 = texto
[ô]Parcla4 = moeda
[ô]DataParcla4 = data/hora
[ô]Sit4 = texto
[ô]Parcla5 = moeda
[ô]DataParcla5 = data/hora
[ô]Sit5 = texto
cn.Execute ([Ô]Insert Into TbCtasPagar(Registro,Data,Forn,Fatura,Parcla1,DataParcla1,Sit1,Parcla2,DataParcla2,Sit2,Parcla3,DataParcla3,Sit3,Parcla4,DataParcla4,Sit4,Parcla5,DataParcla5,Sit5)[Ô] _
& [Ô]values([ô][Ô] & strRegistro & [Ô][ô],[ô][Ô] & _
strData & [Ô][ô],[ô][Ô] & strForn & [Ô][ô],[ô][Ô] & _
strFatura & [Ô][ô],[ô][Ô] & strParcla1 & [Ô][ô],[ô][Ô] & _
strDataParcla1 & [Ô][ô],[ô][Ô] & strSit1 & [Ô][ô],[ô][Ô] & _
strParcla2 & [Ô][ô],[ô][Ô] & strDataParcla2 & [Ô][ô],[ô][Ô] & _
strSit2 & [Ô][ô],[ô][Ô] & strParcla3 & [Ô][ô],[ô][Ô] & _
strDataParcla3 & [Ô][ô],[ô][Ô] & strSit3 & [Ô][ô],[ô][Ô] & _
strParcla4 & [Ô][ô],[ô][Ô] & strDataParcla4 & [Ô][ô],[ô][Ô] & _
strSit4 & [Ô][ô],[ô][Ô] & strParcla5 & [Ô][ô],[ô][Ô] & _
strDataParcla5 & [Ô][ô],[ô][Ô] & strSit5 & [Ô][ô])[Ô])
InserirCtasPagar = True
End Function
Private Sub lvBIncluir_Click()
[ô]na tentativa de sucesso eu preparo a string de conexao com o banco
[ô]para fazer a verificacao com os if's e se for vazio ele deveria
[ô]deixar o campo no formato hora e gravar no banco, eu tambem
[ô]tentei deixar o formato [Ô]dd/mm/yyyy[Ô] mais sem sucesso.
Dim SQL As String
SQL = [Ô]SELECT * FROM TbCtasPagar[Ô]
Set rs = cn.Execute(SQL)
If TxtDta1.Text = [Ô][Ô] Then
TxtDta1.Text = Format(TxtDta1.Text, [Ô]00:00:00[Ô])
End If
If TxtDta2.Text = [Ô][Ô] Then
TxtDta2.Text = Format(TxtDta2.Text, [Ô]00:00:00[Ô])
End If
If TxtDta3.Text = [Ô][Ô] Then
TxtDta3.Text = Format(TxtDta3.Text, [Ô]00:00:00[Ô])
End If
If TxtDta4.Text = [Ô][Ô] Then
TxtDta4.Text = Format(TxtDta4.Text, [Ô]00:00:00[Ô])
End If
If TxtDta5.Text = [Ô][Ô] Then
TxtDta5.Text = Format(TxtDta5.Text, [Ô]00:00:00[Ô])
End If
[ô]Aqui eu monto e chamo a variavel [Ô]InserirCtasPagar[Ô] que ira gravar no banco de dados
[ô]o movimento do contas a pagar.
[ô]se eu deixar o campo do tipo [Ô]Texto[Ô] no Access, funciona perfeitamente, com o porem
[ô]quando eu for chamar o report por periodo, nao vai ser o esperado porque o campo data
[ô]eh do tipo texto, ou seja resolvo um problema e me aparece outro, que surra estou
[ô]estou levando com o tipo de dados na expressao de criterio do banco amigos.
Dim NovaCtaPagar As Variant
NovaCtaPagar = InserirCtasPagar(TxtReg.Text, TxtDta.Text, TxtForn.Text, _
TxtVlorFat.Text, TxtVlor1.Text, TxtDta1.Text, LblDtaPg1.Caption, _
TxtVlor2.Text, TxtDta2.Text, LblDtaPg2.Caption, TxtVlor3.Text, _
TxtDta3.Text, LblDtaPg3.Caption, TxtVlor4.Text, TxtDta4.Text, _
LblDtaPg4.Caption, TxtVlor5.Text, TxtDta5.Text, LblDtaPg5.Caption)
If NovaCtaPagar = True Then
MsgBox [Ô]Nova Conta Incluido Com Sucesso. ![Ô], vbInformation
Unload Me
Else
MsgBox [Ô]Erro na incluisão.[Ô], vbCritical
End If
End Sub
Fico grato a todos.
GOODSPEAKERS, viu eu deixei os if's com o formato sugerido, mais o erro ainda permanece.
Valeu, amigo.
Valeu, amigo.
Amigos, fiz essa modificacao abaixo no meu INSERT INTO, e o erro continua, como resolver esse criterio do banco.
Valeu atencao de todos do VbMania.
Public Function InserirCtasPagar(ByVal strRegistro As String, _
strData As String, _
strForn As String, strFatura As String, _
strParcla1 As String, strDataParcla1 As String, _
strSit1 As String, strParcla2 As String, _
strDataParcla2 As String, strSit2 As String, _
strParcla3 As String, strDataParcla3 As String, _
strSit3 As String, strParcla4 As String, _
strDataParcla4 As String, strSit4 As String, _
strParcla5 As String, strDataParcla5 As String, _
strSit5 As String) As Variant
cn.Execute ([Ô]Insert Into TbCtasPagar(Registro,Data,Forn,Fatura,Parcla1,DataParcla1,Sit1,Parcla2,DataParcla2,Sit2,Parcla3,DataParcla3,Sit3,Parcla4,DataParcla4,Sit4,Parcla5,DataParcla5,Sit5)[Ô] _
& [Ô]values([ô][Ô] & strRegistro & [Ô][ô],[ô][Ô] & _
strData & [Ô][ô],[ô][Ô] & strForn & [Ô][ô],[ô][Ô] & _
strFatura & [Ô][ô],[ô][Ô] & strParcla1 & [Ô][ô],[ô][Ô] & _
IIf(strDataParcla1 = [Ô][Ô], [Ô]null[Ô], [Ô]#[Ô] & Format(strDataParcla1, [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô]) & [Ô][ô],[ô][Ô] & strSit1 & [Ô][ô],[ô][Ô] & _
strParcla2 & [Ô][ô],[ô][Ô] & _
IIf(strDataParcla2 = [Ô][Ô], [Ô]null[Ô], [Ô]#[Ô] & Format(strDataParcla2, [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô]) & [Ô][ô],[ô][Ô] & _
strSit2 & [Ô][ô],[ô][Ô] & strParcla3 & [Ô][ô],[ô][Ô] & _
IIf(strDataParcla3 = [Ô][Ô], [Ô]null[Ô], [Ô]#[Ô] & Format(strDataParcla3, [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô]) & [Ô][ô],[ô][Ô] & strSit3 & [Ô][ô],[ô][Ô] & _
strParcla4 & [Ô][ô],[ô][Ô] & _
IIf(strDataParcla4 = [Ô][Ô], [Ô]null[Ô], [Ô]#[Ô] & Format(strDataParcla4, [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô]) & [Ô][ô],[ô][Ô] & _
strSit4 & [Ô][ô],[ô][Ô] & strParcla5 & [Ô][ô],[ô][Ô] & _
IIf(strDataParcla5 = [Ô][Ô], [Ô]null[Ô], [Ô]#[Ô] & Format(strDataParcla5, [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô]) & [Ô][ô],[ô][Ô] & strSit5 & [Ô][ô])[Ô])
InserirCtasPagar = True
End Function
Valeu atencao de todos do VbMania.
Amigos, alguma ideia. Como posso resolver, sem ter que modifica o campo para tipo texto no access ?
ferraz sua ultima modificção está certa vc só esqueceu de retirar as aspas simples veja esta modificação
eu reescrevi de forma que se tenha um melhor entendimento
Teste agora
eu reescrevi de forma que se tenha um melhor entendimento
Public Function InserirCtasPagar(ByVal strRegistro As String, _
strData As String, _
strForn As String, strFatura As String, _
strParcla1 As String, strDataParcla1 As String, _
strSit1 As String, strParcla2 As String, _
strDataParcla2 As String, strSit2 As String, _
strParcla3 As String, strDataParcla3 As String, _
strSit3 As String, strParcla4 As String, _
strDataParcla4 As String, strSit4 As String, _
strParcla5 As String, strDataParcla5 As String, _
strSit5 As String) As Variant
[txt-color=#007100][ô] Declare mais uma string[/txt-color]
Dim sSQL As String
sSQL = sSQL & [Ô]Insert Into TbCtasPaga(Registro,Data,Forn,Fatura,Parcla1,DataParcla1,Sit1,Parcla2,DataParcla2[Ô]
sSQL = sSQL & [Ô],Sit2,Parcla3,DataParcla3,Sit3,Parcla4,DataParcla4,Sit4,Parcla5,DataParcla5,Sit5)values([Ô]
sSQL = sSQL & [Ô][ô][Ô] & strRegistro & [Ô][ô],[Ô]
sSQL = sSQL & [Ô][ô][Ô] & strData & [Ô][ô],[ô][Ô] & strForn & [Ô][ô],[Ô]
sSQL = sSQL & [Ô][ô][Ô] & strFatura & [Ô][ô],[ô][Ô] & strParcla1 & [Ô][ô],[Ô]
sSQL = sSQL & IIf(strDataParcla1 = [Ô][Ô], [Ô]null[Ô], [Ô]#[Ô] & Format(strDataParcla1, [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô]) & [Ô],[Ô]
sSQL = sSQL & [Ô][ô][Ô] & strSit1 & [Ô][ô],[Ô]
sSQL = sSQL & [Ô][ô][Ô] & strParcla2 & [Ô][ô],[Ô]
sSQL = sSQL & IIf(strDataParcla2 = [Ô][Ô], [Ô]null[Ô], [Ô]#[Ô] & Format(strDataParcla2, [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô]) & [Ô],[Ô]
sSQL = sSQL & [Ô][ô][Ô] & strSit2 & [Ô][ô],[ô][Ô] & strParcla3 & [Ô][ô],[Ô]
sSQL = sSQL & IIf(strDataParcla3 = [Ô][Ô], [Ô]null[Ô], [Ô]#[Ô] & Format(strDataParcla3, [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô]) & [Ô],[Ô]
sSQL = sSQL & [Ô][ô][Ô] & strSit3 & [Ô][ô],[Ô]
sSQL = sSQL & [Ô][ô][Ô]strParcla4 & [Ô][ô],[Ô]
sSQL = sSQL & IIf(strDataParcla4 = [Ô][Ô], [Ô]null[Ô], [Ô]#[Ô] & Format(strDataParcla4, [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô]) & [Ô],[Ô]
sSQL = sSQL & [Ô][ô][Ô] & strSit4 & [Ô][ô],[Ô]
sSQL = sSQL & [Ô][ô][Ô] & strParcla5 & [Ô][ô],
sSQL = sSQL & IIf(strDataParcla5 = [Ô][Ô], [Ô]null[Ô], [Ô]#[Ô] & Format(strDataParcla5, [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô]) & [Ô],[Ô]
sSQL = sSQL & [Ô][ô][Ô] & strSit5 & [Ô][ô])[Ô]
cn.Execute (sSQL)
InserirCtasPagar = True
End Function
Teste agora
Marcelo, valeu vou testar sim.
Goodspeakers, viu valeu por sua atencao tambem.
Foi mal pela demora em responder por esta com alguns problemas de conexao, desculpem.
valeu amigos.
Goodspeakers, viu valeu por sua atencao tambem.
Foi mal pela demora em responder por esta com alguns problemas de conexao, desculpem.
valeu amigos.
Meus amigos, como estou com problemas de conexao na minha regiao, mais uma vez me desculpem a demora em responder.
Marcelo eu fiz os testes e funcionou perfeitamente,
Agora estou apanhando na instrucao de Update, onde estou errando veja:
[txt-color=#e80000]Mensagem de erro = Parametro Insuficientes, eram esperados 2[/txt-color]
Grato, pela atencao de todos.
Marcelo eu fiz os testes e funcionou perfeitamente,
Public Function InserirCtasPagar(ByVal strRegistro As String, _
strData As String, _
strForn As String, strFatura As String, _
strParcla1 As String, strDataParcla1 As String, _
strSit1 As String, strParcla2 As String, _
strDataParcla2 As String, strSit2 As String, _
strParcla3 As String, strDataParcla3 As String, _
strSit3 As String, strParcla4 As String, _
strDataParcla4 As String, strSit4 As String, _
strParcla5 As String, strDataParcla5 As String, _
strSit5 As String) As Variant
[ô] Declare mais uma string
Dim sSQL As String
sSQL = sSQL & [Ô]Insert Into TbCtasPagar(Registro,Data,Forn,Fatura,Parcla1,DataParcla1,Sit1,Parcla2,DataParcla2[Ô]
sSQL = sSQL & [Ô],Sit2,Parcla3,DataParcla3,Sit3,Parcla4,DataParcla4,Sit4,Parcla5,DataParcla5,Sit5)values([Ô]
sSQL = sSQL & [Ô][ô][Ô] & strRegistro & [Ô][ô],[Ô]
sSQL = sSQL & [Ô][ô][Ô] & strData & [Ô][ô],[ô][Ô] & strForn & [Ô][ô],[Ô]
sSQL = sSQL & [Ô][ô][Ô] & strFatura & [Ô][ô],[ô][Ô] & strParcla1 & [Ô][ô],[Ô]
sSQL = sSQL & IIf(strDataParcla1 = [Ô][Ô], [Ô]null[Ô], [Ô]#[Ô] & Format(strDataParcla1, [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô]) & [Ô],[Ô]
sSQL = sSQL & [Ô][ô][Ô] & strSit1 & [Ô][ô],[Ô]
sSQL = sSQL & [Ô][ô][Ô] & strParcla2 & [Ô][ô],[Ô]
sSQL = sSQL & IIf(strDataParcla2 = [Ô][Ô], [Ô]null[Ô], [Ô]#[Ô] & Format(strDataParcla2, [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô]) & [Ô],[Ô]
sSQL = sSQL & [Ô][ô][Ô] & strSit2 & [Ô][ô],[ô][Ô] & strParcla3 & [Ô][ô],[Ô]
sSQL = sSQL & IIf(strDataParcla3 = [Ô][Ô], [Ô]null[Ô], [Ô]#[Ô] & Format(strDataParcla3, [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô]) & [Ô],[Ô]
sSQL = sSQL & [Ô][ô][Ô] & strSit3 & [Ô][ô],[Ô]
sSQL = sSQL & [Ô][ô][Ô] & strParcla4 & [Ô][ô],[Ô]
sSQL = sSQL & IIf(strDataParcla4 = [Ô][Ô], [Ô]null[Ô], [Ô]#[Ô] & Format(strDataParcla4, [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô]) & [Ô],[Ô]
sSQL = sSQL & [Ô][ô][Ô] & strSit4 & [Ô][ô],[Ô]
sSQL = sSQL & [Ô][ô][Ô] & strParcla5 & [Ô][ô],[Ô]
sSQL = sSQL & IIf(strDataParcla5 = [Ô][Ô], [Ô]null[Ô], [Ô]#[Ô] & Format(strDataParcla5, [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô]) & [Ô],[Ô]
sSQL = sSQL & [Ô][ô][Ô] & strSit5 & [Ô][ô])[Ô]
cn.Execute (sSQL)
InserirCtasPagar = True
End Function
Agora estou apanhando na instrucao de Update, onde estou errando veja:
Public Function AlterarCtasPagar(ByVal strRegistro As String, _
strData As String, _
strForn As String, strFatura As String, _
strParcla1 As String, strDataParcla1 As String, _
strSit1 As String, strParcla2 As String, _
strDataParcla2 As String, strSit2 As String, _
strParcla3 As String, strDataParcla3 As String, _
strSit3 As String, strParcla4 As String, _
strDataParcla4 As String, strSit4 As String, _
strParcla5 As String, strDataParcla5 As String, _
strSit5 As String) As Variant
Dim sSQL As String
sSQL = sSQL & [Ô]Update TbCtasPagar Set[Ô]
sSQL = sSQL & [Ô] Data= [ô][Ô] & strData & [Ô][ô],[Ô]
sSQL = sSQL & [Ô] Forn= [ô][Ô] & strForn & [Ô][ô],[Ô]
sSQL = sSQL & [Ô] Fatura= [ô][Ô] & strFatura & [Ô][ô],[Ô]
sSQL = sSQL & [Ô] Parcla1= [ô][Ô] & strParcla1 & [Ô][ô],[Ô]
sSQL = sSQL & [Ô] DtaParcla1= [ô][Ô] & IIf(strDataParcla1 = [Ô][Ô], [Ô]null[Ô], [Ô]#[Ô] & Format(strDataParcla1, [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô]) & [Ô][ô],[Ô]
sSQL = sSQL & [Ô] Sit1= [ô][Ô] & strSit1 & [Ô][ô],[Ô]
sSQL = sSQL & [Ô] Parcla2= [ô][Ô] & strParcla2 & [Ô][ô],[Ô]
sSQL = sSQL & [Ô] DtaParcla2= [ô][Ô] & IIf(strDataParcla2 = [Ô][Ô], [Ô]null[Ô], [Ô]#[Ô] & Format(strDataParcla2, [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô]) & [Ô][ô],[Ô]
sSQL = sSQL & [Ô] Sit2= [ô][Ô] & strSit2 & [Ô][ô],[Ô] [ô]Aqui esta = a false nao sei porque, estou procurando o porque.
sSQL = sSQL & [Ô] Parcla3= [ô][Ô] & strParcla3 & [Ô][ô],[Ô]
sSQL = sSQL & [Ô] DataParcla3= [ô][Ô] & IIf(strDataParcla3 = [Ô][Ô], [Ô]null[Ô], [Ô]#[Ô] & Format(strDataParcla3, [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô]) & [Ô][ô],[Ô]
sSQL = sSQL & [Ô] Sit3= [ô][Ô] & strSit3 & [Ô][ô],[Ô]
sSQL = sSQL & [Ô] Parcla4= [ô][Ô] & strParcla4 & [Ô][ô],[Ô]
sSQL = sSQL & [Ô] DataParcla4= [ô][Ô] & IIf(strDataParcla4 = [Ô][Ô], [Ô]null[Ô], [Ô]#[Ô] & Format(strDataParcla4, [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô]) & [Ô][ô],[Ô]
sSQL = sSQL & [Ô] Sit4= [ô][Ô] & strSit4 & [Ô][ô],[Ô]
sSQL = sSQL & [Ô] Parcla5= [ô][Ô] & strParcla5 & [Ô][ô],[Ô]
sSQL = sSQL & [Ô] DataParcla5= [ô][Ô] & IIf(strDataParcla5 = [Ô][Ô], [Ô]null[Ô], [Ô]#[Ô] & Format(strDataParcla5, [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô]) & [Ô][ô],[Ô]
sSQL = sSQL & [Ô] Sit5= [ô][Ô] & strSit5 & [Ô][ô][Ô]
sSQL = sSQL & [Ô] Where Registro = [Ô] & strRegistro
cn.Execute (sSQL)
AlterarCtasPagar = True
End Function
[txt-color=#e80000]Mensagem de erro = Parametro Insuficientes, eram esperados 2[/txt-color]
Grato, pela atencao de todos.
FERRAZ,
Esse exemplo é com MaskedBox , VB6 gravando no ACCESS e funcionou beleza com campo em branco :
Incluir:
IIf(mskAdmissao.Text = [Ô]__/__/____[Ô], Null, mskAdmissao.Text) & [Ô][ô],[ô][Ô] & _
Editar:
[Ô]DtAdmissao =[ô][Ô] & IIf(mskAdmissao.Text = [Ô]__/__/____[Ô], Null, mskAdmissao.Text) & [Ô][ô],[Ô] & _
ALANTB
Esse exemplo é com MaskedBox , VB6 gravando no ACCESS e funcionou beleza com campo em branco :
Incluir:
IIf(mskAdmissao.Text = [Ô]__/__/____[Ô], Null, mskAdmissao.Text) & [Ô][ô],[ô][Ô] & _
Editar:
[Ô]DtAdmissao =[ô][Ô] & IIf(mskAdmissao.Text = [Ô]__/__/____[Ô], Null, mskAdmissao.Text) & [Ô][ô],[Ô] & _
ALANTB
ALANTB, valeu, mais ainda nao eh isso, estou fazendo direto na string.
Tópico encerrado , respostas não são mais permitidas