DATA EM BRANCO
olá
Tô tentando gravar uma data em branco num banco de dados access e não tô conseguindo. Tenho um form onde há um TextBox7 que pode ou não conter uma data. havendo data a instrução sql Funciona bem.. Mas qd o campo é deixado em branco, a data 31/12/1899 é gravada no tabela
Segue um trecho da minha função para atualizar o banco de dados
============================================================
Dim dt2 As String
If TextBox7.Text = [Ô][Ô] Then
dt2 = vbNull
Else
dt2 = [Ô]#[Ô] & TextBox7.Text & [Ô]#[Ô]
End If
Dim SQL As String = [Ô]update mensalidades set DataVenc=#[Ô] & TextBox6.Text & [Ô]#, DataPgto=[Ô] & _
dt2 & [Ô],VrMens=[ô][Ô] & TextBox8.Text & [Ô][ô],VrPago=[ô][Ô] & TextBox9.Text & _
[Ô][ô], obs=[ô][Ô] & TextBox10.Text & [Ô][ô] WHERE index=[Ô] & INDEX.Text
ExecutaComando( SQL)
===============================================================
onde
DT2 conterá uma data de pagamento ou um valor nulo
ExecutaComando > minha rotina para gavar no banco de dados
ps.: uso vb net 2012 express
alguém já passou por isso?
Tô tentando gravar uma data em branco num banco de dados access e não tô conseguindo. Tenho um form onde há um TextBox7 que pode ou não conter uma data. havendo data a instrução sql Funciona bem.. Mas qd o campo é deixado em branco, a data 31/12/1899 é gravada no tabela
Segue um trecho da minha função para atualizar o banco de dados
============================================================
Dim dt2 As String
If TextBox7.Text = [Ô][Ô] Then
dt2 = vbNull
Else
dt2 = [Ô]#[Ô] & TextBox7.Text & [Ô]#[Ô]
End If
Dim SQL As String = [Ô]update mensalidades set DataVenc=#[Ô] & TextBox6.Text & [Ô]#, DataPgto=[Ô] & _
dt2 & [Ô],VrMens=[ô][Ô] & TextBox8.Text & [Ô][ô],VrPago=[ô][Ô] & TextBox9.Text & _
[Ô][ô], obs=[ô][Ô] & TextBox10.Text & [Ô][ô] WHERE index=[Ô] & INDEX.Text
ExecutaComando( SQL)
===============================================================
onde
DT2 conterá uma data de pagamento ou um valor nulo
ExecutaComando > minha rotina para gavar no banco de dados
ps.: uso vb net 2012 express
alguém já passou por isso?
Você não deveria concatenar strings assim, deveria usar parâmetros, eu recomendaria que aprendesse a usar parâmetros em consultas SQL o quanto antes pois vai resolver vários problemas que você pode ter ao concatenar strings na SQL.
Mas quanto a sua dúvida o problema é que você está tentando passar uma constante numérica (vbNull) e concatenar ela na SQL.
Quando se monta a SQL da forma que você está fazendo o correto para um valor nulo é passar a string [Ô]NULL[Ô], se você simplesmente trocaro vbNull por [Ô]NULL[Ô] deve funcionar, salvo o caso de ter algum outro erro na SQL que eu não conferi.
Mas ainda assim recomendo aprender a usar parâmetros na SQL, isso resolve outros problemas que você pode ter ai como o caso de SQL Injection.
Mas quanto a sua dúvida o problema é que você está tentando passar uma constante numérica (vbNull) e concatenar ela na SQL.
Quando se monta a SQL da forma que você está fazendo o correto para um valor nulo é passar a string [Ô]NULL[Ô], se você simplesmente trocaro vbNull por [Ô]NULL[Ô] deve funcionar, salvo o caso de ter algum outro erro na SQL que eu não conferi.
Mas ainda assim recomendo aprender a usar parâmetros na SQL, isso resolve outros problemas que você pode ter ai como o caso de SQL Injection.
Eu colocaria o seu IF desse jeito:
If IsDate(TextBox7.Text) = True Then
dt2 = [Ô]#[Ô] & TextBox7.Text & [Ô]#[Ô]
Else
dt2 = [Ô]NULL[Ô]
End If
If IsDate(TextBox7.Text) = True Then
dt2 = [Ô]#[Ô] & TextBox7.Text & [Ô]#[Ô]
Else
dt2 = [Ô]NULL[Ô]
End If
ÓTIMAS respostas. agradeço a ambos.
usei o
=====>>>> dt2 = [Ô]NULL[Ô]
e FUNCIONOU
vou tentar aprender mais sobre essas concatenações
Crescencio
usei o
=====>>>> dt2 = [Ô]NULL[Ô]
e FUNCIONOU
vou tentar aprender mais sobre essas concatenações
Crescencio
Tópico encerrado , respostas não são mais permitidas