CAMPO_DATAHORA

FERRAZ 02/06/2011 09:37:49
#375651
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.[Ô]

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.
FERRAZ 02/06/2011 10:05:48
#375657
GOODSPEAKERS, viu eu deixei os if's com o formato sugerido, mais o erro ainda permanece.

Valeu, amigo.
FERRAZ 02/06/2011 10:43:45
#375661
Amigos, fiz essa modificacao abaixo no meu INSERT INTO, e o erro continua, como resolver esse criterio do banco.

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.
FERRAZ 02/06/2011 16:21:06
#375700
Amigos, alguma ideia. Como posso resolver, sem ter que modifica o campo para tipo texto no access ?
MARCELO.TREZE 02/06/2011 17:22:02
#375705
Resposta escolhida
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

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

FERRAZ 03/06/2011 13:50:17
#375779
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.
FERRAZ 06/06/2011 08:58:03
#375942
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,

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.
ALANTB 06/06/2011 09:08:17
#375943
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
FERRAZ 06/06/2011 09:25:35
#375947
ALANTB, valeu, mais ainda nao eh isso, estou fazendo direto na string.
Página 1 de 2 [13 registro(s)]
Tópico encerrado , respostas não são mais permitidas