CAMPO DATA EM BRANCO

JEFFERMARTINS 27/05/2013 10:02:24
#424074
Bom dia pessoal.

Estou fazendo uma pequena aplicação e esbarrei em um problema ao fazer teste.
Tenho 2 campos (Data Inicial e Final), consequentemente, a data inicial será sempre preenchida e a data final ficará em branco.

Para inserir as informações no Access, fiz um IF para verificar se o campo Data Termino esta preenchido ou nao. Caso esteja em branco, eu utilizo um Insert sem incluir o campo DataTermino.

Porém, estou com problemas na consulta. Quando tento consultar um registro que possui da Data Termino em branco, ocorre erro : A conversão do tipo [ô]DBNull[ô] no tipo [ô]String[ô] não é válida.

Como fazer para resolver:?

Estou utilizando o código abaixo:

St = [Ô]Select controle,codempresa,codfunc,codservico,obs,dtinicio,dttermino,status,razao,servico,xx From tblExecucao WHERE controle = [Ô] & txtPesquisa.Text & [Ô][Ô]
tblDataAdapter = New OleDb.OleDbDataAdapter(St, conexao)
tblDataAdapter.Fill(Consulta, [Ô]tblExecucao[Ô])


Dim Result As DataTable = Consulta.Tables([Ô]tblExecucao[Ô])
Dim Result_linha As DataRow
If Result.Rows.Count > 0 Then
Result_linha = Result.Rows(0)
txtControle.Text = Result_linha([Ô]controle[Ô])
txtCodigoEmpresa.Text = Result_linha([Ô]codempresa[Ô])
txtFuncionario.Text = Result_linha([Ô]codfunc[Ô])
txtCodServico.Text = Result_linha([Ô]codservico[Ô])
txtObs.Text = Result_linha([Ô]obs[Ô])
txtDtInicio.Text = Result_linha([Ô]dtinicio[Ô])
txtDtTermino.Text = Result_linha([Ô]dttermino[Ô])
txtStatus.Text = Result_linha([Ô]status[Ô])
txtRazao.Text = Result_linha([Ô]razao[Ô])
txtServico.Text = Result_linha([Ô]servico[Ô])
txtXX.Text = Result_linha([Ô]XX[Ô])
F001E 27/05/2013 10:34:22
#424077
Resposta escolhida
faz assim :
txtDtTermino.Text = IIf(Convert.IsDBNull(Result_linha([Ô]dttermino[Ô])) = True, [Ô][Ô], Result_linha([Ô]dttermino[Ô]))
JEFFERMARTINS 27/05/2013 10:57:39
#424081
F001E,
Maravilha. certissimo.!
Mto Obrigado.

Aproveitando, uma oura duvida:
Para o insert, é possivel fazer algo similar?
F001E 27/05/2013 11:03:22
#424082
sim...no insert voce joga o valor nulo assim :

IIf(txtDtTermino.Text = [Ô][Ô], DBNull.Value, txtDtTermino.Text)

JEFFERMARTINS 27/05/2013 11:15:05
#424083
Meu insert esta assim:

St = [Ô]Insert INTO tblExecucao (controle,codempresa,codfunc,codservico,obs,dtinicio,status,razao,servico) Values ([ô][Ô] & txtControle.Text & [Ô][ô],[ô][Ô] & txtCodigoEmpresa.Text & [Ô][ô],[ô][Ô] & txtFuncionario.Text & [Ô][ô], [ô][Ô] & txtCodServico.Text & [Ô][ô],[ô][Ô] & txtObs.Text & [Ô][ô],[ô][Ô] & txtDtInicio.Text & [Ô][ô],[ô][Ô] & txtDttermino.Text & [ô][Ô],[ô][Ô] & txtStatus.Text & [Ô][ô],[ô][Ô] & txtRazao.Text & [Ô][ô] ,[ô][Ô] & txtServico.Text & [Ô][ô])[Ô]
Cmd.CommandText = St
Cmd.CommandType = CommandType.Text
Cmd.Connection = conexao
Inclusao = Cmd.ExecuteNonQuery
FELLIPEASSIS 27/05/2013 13:27:42
#424089
use parametros assim fica mais profissional, e com boas praticas de programaçao
strSql = [Ô]INSERT INTO tabela (campo1,campo2,campo3) VALUES(@campo1,@campo2,@campo3)[Ô]

cmd.CommandText = strSql
cmd.Parameters.AddWithValue([Ô]@campo1[Ô], txtcodigo.Text.Trim())
cmd.Parameters.AddWithValue([Ô]@campo2[Ô], CDate(maskDataNasc.Text))
cmd.Parameters.AddWithValue([Ô]@campo3[Ô], txtnome.Text.Trim())
cmdcliente.Connection = conexao
Try
cmd.ExecuteNonQuery()
MessageBox.Show([Ô]Gravado![Ô], [Ô]Gravar[Ô], MessageBoxButtons.OK)
cmd.Parameters.Clear()
Catch
MsgBox(ex.Message)
cmd.Parameters.Clear()
Exit Sub
End Try
JEFFERMARTINS 27/05/2013 14:26:24
#424091
Ok.

Obrigado!
Tópico encerrado , respostas não são mais permitidas