INSERT INTO NULL OU DATA
resumidamente é assim:
na tabela tenho: [ô]codigo[ô], [ô]data[ô], [ô]valor[ô]
no form os campo: txtcodigo, txtdata, txtvalor
txtdata as vezes possui uma data informada e as vezes não
tentei fazer o [ô]insert into[ô] assim:
insert into tabela (codigo, data, valor) values (txtcodigo, iif(isdate(txtdata) = true, txtdata, null), txtvalor)
preciso que o valor fique nulo na tabela quando não for informado uma data, mas sempre é acusado erro de
[ô]data type[ô] por conta desse [ô]iif[ô] que foi usado, já que se retirar o iif colocar apenas o valor de txtdata ou
null, tudo da certo.
uma solução seria utilizar um recordset pra deixar o campo null quando não houver uma data, mas
o que eu gostaria de fazer é não declarar um recordset, usar apenas o [ô]execute[ô] da conexão para
fazer o trabalho com o [ô]insert into[ô], e quando não houver a data, o valor ser nulo.
existe outra forma de [ô]verificar[ô] o txtdata sem um [ô]iif[ô] na mesma linha?
obrigado!
Citação::
Use comandos parametrizados.
muitas coisas que faço já são assim, mas a solução que eu queria, com a parametrização não é o que eu estava pensando ser
queria algo mais simples, como fazemos com o simples [ô]iif[ô]
Citação::
Só uma pergunta: Você trabalha como programador mesmo por conta ou para alguma empresa?
quanto à pergunta, sou autônomo mesmo e curioso
agora é minha vez: porque a curiosidade?
é estive olhando o seu histórico de perguntas, e tem várias com essa mesma temática de dificuldade com comandos SQL e várias delas já bem antigas, o que indica que tem um bom tempo que você está apanhando para isso...
Citação::
Parametrização é além de a solução correta, a mais simples.
é estive olhando o seu histórico de perguntas, e tem várias com essa mesma temática de dificuldade com comandos SQL e várias delas já bem antigas, o que indica que tem um bom tempo que você está apanhando para isso...
Vc tem razão, SQL as vezes está me fazendo perder bons cabelos da cabeça.
Mas é assim mesmo quando a gente quer aprender por conta própria. Se houvesse mais tempo para dedicação, talvez estaria [Ô]apanhando[Ô] menos.
Maioria dos meus tópicos foram referentes à SQL, mas estou consciente que outros ainda virão...
Citação::
:
Parametrização é além de a solução correta, a mais simples.
é estive olhando o seu histórico de perguntas, e tem várias com essa mesma temática de dificuldade com comandos SQL e várias delas já bem antigas, o que indica que tem um bom tempo que você está apanhando para isso...
Vc tem razão, SQL as vezes está me fazendo perder bons cabelos da cabeça.
Mas é assim mesmo quando a gente quer aprender por conta própria. Se houvesse mais tempo para dedicação, talvez estaria [Ô]apanhando[Ô] menos.
Maioria dos meus tópicos foram referentes à SQL, mas estou consciente que outros ainda virão...
Sinceramente, acho que você está estudando(e aprendendo) da maneira errada. O melhor caminho para você seria:
1 - Esquecer como aprendeu até agora, já que tem tempo e ainda não conseguiu desenvolver um aprendizado eficiente.
2 - Entender SQL de verdade. Todas as queries básicas de seleção, inserção, deleção, atualização, todas as formas possÃveis de joins, enfim, entender como funciona a linguagem SQL. Não digo dominar tudo, até porque só isso tomaria vários anos de estudo, mas pelo menos o básico de como cada uma delas funciona.
3 - Entender como usar essas queries à partir de um client(no seu caso, o Visual Basic). Não somente concatenar strings, entender as ferramentas que a tecnologia disponibiliza para você, que no caso, é o ADO
Aprenda a fazer as queries em um editor de queries, faça as queries conforme precisa e então transfira essas queries para o seu client. é esse o caminho mais simples à ser seguido. Pelo que vi, você está fazendo o contrário, primeiro usando as queries no client e depois tentando entender como elas funcionam...
ruim do que sei da programação
Minha dúvida de hj foi referente à um recurso que o VB6 tem e é muito usado mas
que existe um [ô]bug[ô] que não vi acontecer, no pouco que olhei, em .NET.
Meu aprendizado no SQL está como todo iniciante, havendo dúvidas e em busca do
esclarecimento e solução, mas uma coisa tenho que concordar com vc, não estou [ô]focando[ô],
tudo que sei hj é baseado em buscas [ô]auto-didatas[ô]. Não ter o acompanhamento de um profissional
é bem complicado pra aprofundar nesse mundo complexo da programação, a internet passa muito pra
gente, mas nem sempre conseguimos o aprendizado [ô]focado[ô] naquela correta sequencia, como vc
mencionou.
Já sua dica da montagem das queries, faço todas em um editor (RazorSQL), foi o melhor do já
usei.
Você tem outras fontes de materiais que vão me ajudar? ... sei lá, já tenho muita coisa, mas nunca é de mais.
Algo como:
cmd.Execute [Ô]Insert into tabela (campo1, campo2) values([ô][Ô] + txtCampo1.Text + [Ô][ô], [Ô] + iif(txtCampo2.Text=[Ô][Ô], [Ô]null[Ô], [Ô][ô][Ô] + txtCampo2.Text + [Ô][ô][Ô] + [Ô])[Ô]
Isso vai inserir um registro com o campo2 como null caso o textbox txtCampo2 não contenha um texto.
O que aconselho é o uso de parâmetros, como no link que passei, eles fazem essa [Ô]massaroca[Ô] de string concatenada ficar muito mais compreensÃvel:
Dim Cmd As New ADODB.Command
With Cmd
.CommandText = [Ô]Insert Into Tabela(Campo1, Campo2) Values (?, ?)[Ô]
.CommandType = adCmdText
.CommandTimeout = 15
End With
Cmd.Parameters(0).Value = txtCampo1.Text
If txtCampo2.Text = [Ô][Ô] Then
Cmd.Parameters(1).Value = Nothing
Else
Cmd.Parameters(1).Value = txtCampo2.Text
End If
Veja que o tratamento para o campo estar vazio, pode até mesmo conter uma caixa de mensagem avisando o que vai acontecer, o código fica mais limpo e a depuração muito mais fácil. Além de praticamente anular uma falha de segurança gigantesca que se chama [Ô]SQL Injection[Ô].
obrigado Kerplunk
vou pesquisar mais sobre suas dicas
SALVAR DATA NULL
Dá uma olhada e veja se te ajuda.