GRAVAR DATA EM BRANCO NO MYSQL

ADHEL 08/07/2010 16:20:36
#346881
Pessoal boa tarde
Antes de criar o tópico pesquisei aqui no site mas não entendi.Gostaria de saber como faço para gravar os campos que armazenam as datas em branco.

Eu gravo datas assim

sqlInsert = [Ô]INSERT INTO Vendas(Data1,Data2,Data3)Values([ô][Ô] & _
Format(CType(txtData1.Text, Date), [Ô]yyyy-MM-dd[Ô]) & [Ô][ô],[ô][Ô] & Format(CType(txtData2.Text, Date), [Ô]yyyy-MM-dd[Ô]) & [Ô][ô],[ô][Ô] & Format(CType(txtData3.Text, Date), [Ô]yyyy-MM-dd[Ô]) & [Ô][ô])[Ô]
Comando = New MySqlCommand(sqlInsert, Conexao)
Comando.ExecuteNonQuery()

O problema é que as vezes algum campo ficará em branco e desse jeito que postei dá erro
Agradeço a todos.
JONATHANSTECKER 08/07/2010 16:35:20
#346885
ADHEL,

Eu verifico se a data é nula...
Se for, eu faço um insert [txt-color=#e80000]DBNull.Value[/txt-color]
ADHEL 08/07/2010 17:05:19
#346892
JONATHANSTECKER

Desculpe, não entendi.
JONATHANSTECKER 08/07/2010 17:23:50
#346898
Coloque uma condição:

Se Data = vazio então insira DBNull.Value senão insira Format(CType(txtData1.Text, Date), [Ô]yyyy-MM-dd[Ô])

Acho que fica assim:

sqlInsert = [Ô]INSERT INTO Vendas(Data1,Data2,Data3)Values([ô][Ô] & _
If txtData1.Text = [Ô][Ô] then DBNull.Value else Format(CType(txtData1.Text, Date), [Ô]yyyy-MM-dd[Ô]) & [Ô][ô],[ô][Ô] & If txtData2.Text = [Ô][Ô] then DBNull.Value else Format(CType(txtData2.Text, Date), [Ô]yyyy-MM-dd[Ô]) & [Ô][ô],[ô][Ô] & If txtData3.Text = [Ô][Ô] then DBNull.Value else Format(CType(txtData3.Text, Date), [Ô]yyyy-MM-dd[Ô]) & [Ô][ô])[Ô]
Comando = New MySqlCommand(sqlInsert, Conexao)
Comando.ExecuteNonQuery()
ADHEL 02/08/2010 11:40:15
#349130
JONATHANSTECKER

Desculpe, a demora.O pc que estava fazendo esse projeto deu problema e estava aguardando uns $$ parar resolver.
Escrevi do jeito que você falou e da erro na escrita do código.Tentei mudar mas continua dando erro na escrita do código.
Enfim não consegui.

KILLER 02/08/2010 17:50:38
#349206
Resposta escolhida
ADHEL não sei se é assim que você quer, mais funciona:

Dim Campos As String = [Ô][Ô]
Dim Dados As String = [Ô][Ô]

If IsDate(txtData1.Text) Then
If Campos = [Ô][Ô] Then
Campos = [Ô]Data1[Ô]
Dados = [Ô][ô][Ô] & Format(CType(txtData1.Text, Date), [Ô]yyyy-MM-dd[Ô]) & [Ô][ô][Ô]
Else
Campos = Campos & [Ô], Data1[Ô]
Dados = Dados & [Ô], [ô][Ô] & Format(CType(txtData1.Text, Date), [Ô]yyyy-MM-dd[Ô]) & [Ô][ô][Ô]
End If
End If
If IsDate(txtData2.Text) Then
If Campos = [Ô][Ô] Then
Campos = [Ô]Data2[Ô]
Dados = [Ô][ô][Ô] & Format(CType(txtData2.Text, Date), [Ô]yyyy-MM-dd[Ô]) & [Ô][ô][Ô]
Else
Campos = Campos & [Ô], Data2[Ô]
Dados = Dados & [Ô], [ô][Ô] & Format(CType(txtData2.Text, Date), [Ô]yyyy-MM-dd[Ô]) & [Ô][ô][Ô]
End If
End If
If IsDate(txtData3.Text) Then
If Campos = [Ô][Ô] Then
Campos = [Ô]Data3[Ô]
Dados = [Ô][ô][Ô] & Format(CType(txtData3.Text, Date), [Ô]yyyy-MM-dd[Ô]) & [Ô][ô][Ô]
Else
Campos = Campos & [Ô], Data3[Ô]
Dados = Dados & [Ô], [ô][Ô] & Format(CType(txtData3.Text, Date), [Ô]yyyy-MM-dd[Ô]) & [Ô][ô][Ô]
End If
End If
Comando = New MySqlCommand([Ô]INSERT INTO Vendas([Ô] & Campos & [Ô]) VALUES ([Ô] & Dados & [Ô])[Ô], conexao)
Comando.ExecuteNonQuery()

se eu fosse você trocaria as caixas de texto por MaskedTextBox e na propriedade Mask colocaria [ô]99/99/9999[ô] sem aspas ok, é só uma dica.
ADHEL 03/08/2010 09:29:51
#349247
JONATHANSTECKER
Obrigado .

KILLER simplesmente você solucionou melhor do que queria.
Muito OBRIGADO, MESMO.

KILLER depois que resolver umas pendencias aqui.(Alterar a gravação de datas,colocar tudo desse jeito que você ensinou),
Vou criar mais um tópico sobre Teclas de Atalho.Uma vez você criou e fiquei com uma dúvida.Aqui não ficou legal.

Até mais
Tópico encerrado , respostas não são mais permitidas