DATA EM BRANCO

CRESCENCIO 23/09/2013 11:28:53
#429162
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?


OCELOT 23/09/2013 13:32:39
#429169
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.
KILLER 23/09/2013 13:44:37
#429171
Eu colocaria o seu IF desse jeito:

If IsDate(TextBox7.Text) = True Then
dt2 = [Ô]#[Ô] & TextBox7.Text & [Ô]#[Ô]
Else
dt2 = [Ô]NULL[Ô]
End If
CRESCENCIO 23/09/2013 15:08:39
#429174
ÓTIMAS respostas. agradeço a ambos.
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