Fórum Gravar Campo Data em branco #205462
09/01/2004
0
Query.Close;
Query.SQL.Clear;
Query.SQL.Add(´INSERT INTO tbCARGO (Cod, Nome, Data)´);
Query.SQL.Add(´VALUES (:Cod, :Nome, Data)´);
Query.Params[0].AsSmallInt := Codigo;
Query.Params[1].AsString := NomCargo;
Query.Params[2].AsDate := Data;
Query.ExecSQL;
Outra dúvida, qdo o campo é numérico qual o tipo de parametro devo informar (AsFloat, AsWord etc.)
Valeu galera
Drogao
Curtir tópico
+ 0Posts
10/01/2004
Alexdias
1º salvar como vazio usa-se:=´´;
2º salvar como nulo usa-se:=null;
3º quando for inteiro usa-se .asinteger;
ex :
adoquery1.insert;
adoquery1.FieldByName(´codigo´).asinteger:=strtoint(edit1.text);
adoquery1.FieldByName(´nome´).asstring:=´´;
adoquery1.FieldByName(´data´).value:=null;
adoquery1.post;
messagedlg(´SALVO COM SUCESSO !!!´,mtcustom,[mbok],0);
SE FOR UTIL POR FAVOR ME MANDE UM E-MAIL CONUNICANDO ...
Gostei + 0
10/01/2004
Luizfernando777
gostaria de fazer um comentário
sobre isso:
adoquery1.insert;
adoquery1.FieldByName(´codigo´).asinteger:=strtoint(edit1.text);
adoquery1.FieldByName(´nome´).asstring:=´´;
adoquery1.FieldByName(´data´).value:=null;
adoquery1.post;
[b:baf77129bd][color=red:baf77129bd]messagedlg(´SALVO COM SUCESSO !!!´,mtcustom,[mbok],0)[/color:baf77129bd][/b:baf77129bd];
acontece que se sair algo de errado, mesmo
assim vai sair a mensagem,
use o
try
comandos...
post;
messagedlg(´SALVO COM SUCESSO !!!´,mtcustom,[mbok],0)
except
messagedlg(´ERRO AO SALVAR !!!´,mtcustom,[mbok],0)
end;
TB Não pode esquecer que:
adoquery1.FieldByName(´codigo´).asinteger:=strtoint(edit1.text);
StrToInt(Edit1.Text)-> e se o edit1 não ter nenhum número,
isso vai ocasionar um erro,
if Edit1.Text <> ´´ then
adoquery1.FieldByName(´codigo´).asinteger:=strtoint(edit1.text)
else
opções que seu projeto necessita para a proteção.
abraços.
Gostei + 0
10/01/2004
Alexdias
IF EDIT1.TEXT<>´´ THEN
BEGIN
´ ENTÃO GRAVA ´;
END
ELSE
BEGIN
´ENTÃO MENSAGEM PRENCHA EDIT´
END
TB DEVE SER PREVER COM COMANDOS DO TIPO TRY ...EXCEPT
POREM NAO QUERIA CONFUNDIR A CABEÇA DO NOSSO COLEGA POIS O MESMO ESTÁ INICIANDO ENTÃO QUIS SER O MAIS PRATICO E SIMPLES POSSIVEL SOMENTE PARA ´ DAR A LUZ ´...
MAS VALEU A CRITICA POIS DESSA FORMA TALVEZ AMBOS TENHAMOS APRENDIDO ALGO !!!
Gostei + 0
10/01/2004
Alexdias
IF EDIT1.TEXT<>´´ THEN
BEGIN
´ ENTÃO GRAVA ´;
END
ELSE
BEGIN
´ENTÃO MENSAGEM PREENCHA EDIT´
END
TB DEVE SER PREVER COM COMANDOS DO TIPO TRY ...EXCEPT
POREM NAO QUERIA CONFUNDIR A CABEÇA DO NOSSO COLEGA POIS O MESMO ESTÁ INICIANDO ENTÃO QUIS SER O MAIS PRATICO E SIMPLES POSSIVEL SOMENTE PARA ´ DAR A LUZ ´...
A ESQUECI TB DE DIZER QUE ELE PODE TRATAR NO EVENTO KEYPREES DO EDIT PARA RECEBER SOMENTE NUMEROS DE ( 0 ...9 ) .
MAS VALEU A CRITICA POIS DESSA FORMA TALVEZ AMBOS TENHAMOS APRENDIDO ALGO !!!
Gostei + 0
10/01/2004
Luizfernando777
Não era minha intenção com a mensagem que
enviei fazer uma crítica, longe de mim,
apenas achei necessário acrescentar aquilo,
para que nosso colega não esqueça de fazer
as seguranças.
abraços.
Gostei + 0
11/01/2004
Drogao
Query.Params[2].AsDate := Null;
ou
Query.Params[2].value := Null;
Acho que estou utilizando o componte errado para executar as instruçoes em SQL, se puderem me ajudar. Lembrando que o campo em questao é o tipo ´Date´.
Valeu
´OS GRANDES HOMENS SÃO COMO QUADROS PINTADOS A TINTA ÓLEO, MUITO BONITO DE LONGE MAS CHEIOS DE IMPERFEIÇOES SE OLHADOS BEM DE PERTO.´
Gostei + 0
11/01/2004
Luizfernando777
Da uma olhada no seu script
Query.Close;
Query.SQL.Clear;
Query.SQL.Add(´INSERT INTO tbCARGO (Cod, Nome, Data)´);
Query.SQL.Add(´VALUES (:Cod, :Nome, Data)´);
Query.Params[0].AsSmallInt := Codigo;
Query.Params[1].AsString := NomCargo;
Query.Params[2].AsDate := Data;
Query.ExecSQL;
se estiver assim como vc colocou na primeira
mensagem que foi enviada para o forum,
nota-se que tem um erro,
Query.Close;
Query.SQL.Clear;
Query.SQL.Add(´INSERT INTO tbCARGO (Cod, Nome, Data)´);
Query.SQL.Add(´VALUES (:Cod, :Nome, [color=red:cabe2d9914][b:cabe2d9914]Data[/b:cabe2d9914][/color:cabe2d9914])´);
Query.Params[0].AsSmallInt := Codigo;
Query.Params[1].AsString := NomCargo;
Query.Params[2].AsDate := Data;
Query.ExecSQL;
Fata [b:cabe2d9914][color=red:cabe2d9914]:[/color:cabe2d9914][/b:cabe2d9914]
assim -> :Data
Gostei + 0
11/01/2004
Drogao
usando o código: Params[2].AsDate := null
é retornado a seguinte mensagem: ´Invalid variant type conversion´
usando o código: Params[2].valeu := null
é retornado a seguinte mensagem: ´Field ´data´ is of an unknown type.´
tentei também assim mas não deu certo
Params[2].IsNull
Gostei + 0
11/01/2004
Luizfernando777
Query.Close;
Query.SQL.Clear;
Query.SQL.Add(´INSERT INTO tbCARGO (Cod, Nome, Data)´);
Query.SQL.Add(´VALUES (:Cod, :Nome, :Data)´);
Query.Params[0].Value := Codigo;
Query.Params[1].Value := NomCargo;
Query.Params[2].DataType := ftDate;
Query.Params[2].Value := Data; // ou null ou como vc achar necessário
Query.ExecSQL;
em meu teste deu certo.
Gostei + 0
11/01/2004
Drogao
Gostei + 0
12/01/2004
Fórum Vini
desculpem me intrometer no assunto depois de resolvido, mas você pode simplesmente omitir o campo data do SQL, para deixá-lo com o valor padrão.
´INSERT INTO tbCargo (Cod, Nome) values (:Cod, :Nome)´
Gostei + 0
12/01/2004
Luizfernando777
Vc tem razão mesmo,
mas vc já pensou no futuro,
e se por acaso ele precise colocar Data.
e aí!!!!!
Não podemos deixar um problema de lado
na programação, pode ser que no futuro
precisamos usar esse campo.
Eis o motivo de resolver esse problema.
Gostei + 0
12/01/2004
Drogao
VALEU GALERA PELA ATENÇÃO
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)