GARANTIR DESCONTO

Fórum Gravar Campo Data em branco #205462

09/01/2004

0

Alguém sabe como faço para gravar em um campo um valor ´nulo ou em branco´. Meu problema é que na hora de incluir o campo não é obrigatório e na hora de alterar o usuário também pode limpar o conteúdo do mesmo. Ultilizo os camando em SQl abaixo através de um componente Tquery.

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

Drogao

Responder

Posts

10/01/2004

Alexdias

OLÁ COLEGA ...


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 ...


Responder

Gostei + 0

10/01/2004

Luizfernando777

caros colegas,
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.


Responder

Gostei + 0

10/01/2004

Alexdias

MAS É CLARO QUE SE DEVE FAZER VERIFICAÇÕES DO TIPO
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 !!!


Responder

Gostei + 0

10/01/2004

Alexdias

MAS É CLARO QUE SE DEVE FAZER VERIFICAÇÕES DO TIPO
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 !!!


Responder

Gostei + 0

10/01/2004

Luizfernando777

Caro colega:
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.


Responder

Gostei + 0

11/01/2004

Drogao

Caros colegas, primeiramente gostaria de agradecer pelo interesse em me ajudar, mas ainda nao resolveu meu problema. Meu banco de dados está em Paradoxx, estou executando o SQL através de um componente TQuery, tentei as opcoes abaixo e nao deu certo, é retornado uma mensagem de erro qdo executo

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.´


Responder

Gostei + 0

11/01/2004

Luizfernando777

Caro colega,
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


Responder

Gostei + 0

11/01/2004

Drogao

A observação que vc notou em meu código eu já havia modificado mas mesmo assim ainda não funciona.

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


Responder

Gostei + 0

11/01/2004

Luizfernando777

tenta este código:
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.


Responder

Gostei + 0

11/01/2004

Drogao

Gostaria de deixar aqui minha imensa gratidão pela ajuda, funcionou perfeitamente como eu queria. VALEU colega, são pessoas como vc que fazem do Clube Delphi o ´MELHOR´ site no assunto de toda ner.


Responder

Gostei + 0

12/01/2004

Fórum Vini

Caros colegas,
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)´


Responder

Gostei + 0

12/01/2004

Luizfernando777

Caro colega:
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.


Responder

Gostei + 0

12/01/2004

Drogao

reamente o colega tem plena razão, a solução que ele me apresentou foi 10 (dez) resolveu muito meu problema, o campo precisa ser gravado, mas nao precisa ter valor pois ele não é obrigatorio, tanto na inclusao qto na alteração,
VALEU GALERA PELA ATENÇÃO


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar