INSERT NULL

HELIO.COSTA 10/06/2014 16:00:25
#438819
VB.et 201 - sql server 2008,
como gravar dados quando alguns itens são NULL.

dim Reg-1, reg_2, Reg_3 as integer
dim Reg_4, Reg_5 as string

[ô] Reg_2 e Reg5 neste caso sãoNUL, não receberão valor.

sql = [Ô][Ô]
sql += [Ô]insert into Tabela(Reg1, Reg2, Reg3, Reg4, Reg5) [Ô]
sql += [Ô] values (reg_1, REg_2, REg_3, REg_4.tostring(), Reg_5.tostring()) [Ô]
sql += [Ô] where Seq + [Ô] cstr(txtseq.text)

Dependendo do insert, uns itens serão nulo, já em outros podemos não ter valor NULL.
Conto com vocês.

GUIMORAES 10/06/2014 16:15:17
#438820
Resposta escolhida
utilizando parâmetros fica mais fácil.
ex: sql = [Ô]Insert into tabela(codigo,nome) values (@codigo,@nome)[Ô]

SqlCommand cmd;
cmd = new SqlCommand(sql, classedeconexao.sqlConnection);

cmd.Parameters.AddWithValue([Ô]@codigo[Ô], classe.codigo);
cmd.Parameters.AddWithValue([Ô]@nome[Ô], classe.nome);

cmd.ExecuteNonQuery();


Isto seria um exemplo, agora basta aplicar.
Utilizar orientação a objetos é essencial, muitos desses problemas são [Ô]Resolvidos[Ô] quando feito da forma correta.
Abraços
HELIO.COSTA 10/06/2014 16:33:38
#438821
Desde já agradeço,

ex: sql = [Ô]Insert into tabela(codigo,nome) values (@codigo,@nome)[Ô] neste caso coloco as variáveis de values com os mesmos nomes da tebela ou o nome das variáveis?

NILSONTRES 10/06/2014 18:03:55
#438825
GUIMORAES123,

Citação:

Isto seria um exemplo, agora basta aplicar.
Utilizar orientação a objetos é essencial, muitos desses problemas são [Ô]Resolvidos[Ô] quando feito da forma correta.


Perfeito, depois que descobri isso refiz todos os meus códigos de uns anos para ca.

HELIO COSTA,

Citação:

neste caso coloco as variáveis de values com os mesmos nomes da tebela ou o nome das variáveis


é o nome dos campos mesmo.
No caso de datas, eu faço assim:
MY_COMAND.Parameters.Add(New MySqlParameter([Ô]@Data_Nasc[Ô], IIf(Me.Data_Nasc = Nothing, System.DBNull.Value, Me.Data_Nasc)))
Embora o exemplo do GUIMOARES é para sql e o meu para mysql.
HELIO.COSTA 10/06/2014 18:30:42
#438827
Certo.

agora apareceu esse erro:

Estouro de SqlDateTime. Deve estar entre 1/1/1753 12:00:00 AM e 31/12/9999 11:59:59 PM.
HELIO.COSTA 10/06/2014 19:55:13
#438829
Erro está no formato de data e hora.

Dim DataEntrada, HoraEntrada As DateTime
Dim DataAtual As DateTime = DateTime.Now
DataEntrada = Format(DataAtual, [Ô]yyyy-MM-dd[Ô])
HoraEntrada = FormatDateTime(DataAtual, DateFormat.ShortTime)

[ô]cd.Parameters.AddWithValue([Ô]@DataEntrada[Ô], DataEntrada)
[ô]cd.Parameters.AddWithValue([Ô]@HoraEntrada[Ô], HoraEntrada)


o que está de errado?
HELIO.COSTA 10/06/2014 20:46:56
#438830
Resolvi da seguinte forma:

Dim DataEntrada, HoraEntrada As DateTime
Dim DataAtual As DateTime = DateTime.Now
Dim HoraAtual As DateTime = TimeOfDay
DataEntrada = Format(DataAtual, [Ô]dd-MM-yyyy[Ô])
HoraEntrada = FormatDateTime(HoraAtual, DateFormat.ShortTime)

cd.Parameters.AddWithValue([Ô]@DataEntrada[Ô], DateTime.Parse(DataEntrada))
cd.Parameters.AddWithValue([Ô]@HoraEntrada[Ô], DateTime.Parse(HoraEntrada))

Valeu pela ajuda.
Tópico encerrado , respostas não são mais permitidas