Ir para conteúdo
Fórum Script Brasil
  • 0

Exibir dados preestabelecidos no BDEdit


Alex Freitas

Pergunta

Bom dia!

Preciso de uma ajuda!

Estou criando uma aplicação, que usa alguns campos DBEdit para o cadastro de dados em um banco de dados Access 2003.

Preciso de um comando que no DBEdit seja apresentado um valor preestabelecido.

Na Form existe 4 DBEdit usando a ADOQuery

DBEdit1 - Tipo Data, (Neste campo quero exibir a data atual sem permitir alteração).

DBEdit2 – Tipo Currency, (Ficará livre pra digitação do valor “Valor do Cheque”).

DBedit3 – Tipo Currency, (Neste campo quero exibir uma taxa fixa de 3,5% para calculo futuro).

DBEdit4 – ( Quero realizar o seguinte cálculo DBEdit2 * DBEdit3)

Espero ter sido claro. Isso é possível??

Desde já agradeço.

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0
Guest --carlos --

Boa tarde Alex..

Se você esta usando dbedits, você pode até dizer por exemplo no form show..

dbedit1.text := datetostr(now);

dbedit2.text := '';

dbedit3.text := floattostr('3,5');

dbedit4.text := floattostr(strtofloat(dbedit2.text) * strtofloat(dbedit3.text));

no entanto por usar dbedit, sempre que o focu cair no campo você perdera o dado pré-estabelecido...

o correto é ao invés de atribuir esses valores ao dbedit, atribua à query...

ex:

query1.fieldbyname('SEUCAMPO').value := 'o valor a ser pré estabelecido';

espero ter ajudado...

abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Concordo...

Mas pode se utilizar uma outra opção tmb.

Se você usa BDExpress então você pode usar as operações de POST, EDIT, DELETE, UPDATERECORD.

Ai no Create ou no Show do Formulario você coloca ClientDataSet.UpdateRecord;

Assim no momento que você colocar o focus em cima de qualquer dbedit ele não perde o valor recebido anteriormente.

Mas como o carlos disse o correto seria isso mesmo que ele falow jogar na query, mas tmb tem outra forma, você pode guardar tudo em memoria no ClientDataSet, desta forma:

ClientDataSetNOMEDOCAMPO.TIPODOCAMPO:= 'o valor a ser estabelecido'

Espero ter ajudado de alguma forma...

P.S : Sou novo no fórum nunca fui muito de participar de foruns mas resolvi entrar para ajudar ... qualquer duvida a mais fique a disposição.

Link para o comentário
Compartilhar em outros sites

  • 0
Preciso de um comando que no DBEdit seja apresentado um valor preestabelecido.

Na Form existe 4 DBEdit usando a ADOQuery

DBEdit1 - Tipo Data, (Neste campo quero exibir a data atual sem permitir alteração).

DBEdit2 – Tipo Currency, (Ficará livre pra digitação do valor “Valor do Cheque”).

DBedit3 – Tipo Currency, (Neste campo quero exibir uma taxa fixa de 3,5% para calculo futuro).

DBEdit4 – ( Quero realizar o seguinte cálculo DBEdit2 * DBEdit3)

Alex Freitas, reforçando e completando o que já disseram...

Inicializações deste tipo, devem ocorrer na inclusão de um novo registro, não é mesmo!?

Com isto em mente, localize no seu dataset o evento OnNewRecord (novo registro) e na eventual falta dele, algo como AfterInsert (que também ocorre após um Insert ou Append).

Nele, faça toda e qualquer inicialização de campos deste dataset.

Não aconselho pensar nos TDBEdit's com sendo a mesma coisa que um TEdit, e assim fazer atribuições utilizando a propriedade Text. Isto pode lhe fazer esquecer de que, na verdade, as informações que constam nele são de fato provenientes do campo pertencente ao dataset a ele vinculado.

Além do mais, a inicialização utilizando valores strings pode gerar dor de cabeça quando você estiver tratando de datas e numeros com decimais. Feicará muito mais claro e simples a atribuição de valores utilizando diretamente o campo (field) do dataset.

Caso você esteja adicionando os campos (fields) do seu dataset em design-time, você pode acessá-lo diretamente, do contrário poderá utilizar métodos como o FieldByName para acessá-lo.

Ex. Tendo um dataset chamado TabCliente que possua um campo Nome, caso você tenha adicionado o field em design-time, você poderá acessá-lo deste modo:

TabClienteNome.Value := 'Armando Lero';

caso contrário:

TabCliente.FieldByName('Nome').Value := 'Armando Lero';

Detalhando cada item questionado:

1) DBEdit1 - Tipo Data, (Neste campo quero exibir a data atual sem permitir alteração).

a parte da inicialização já está explicada. Quanto a parte de não permitir alteração, você deverá usar a propriedade ReadOnly ou Enabled do componente;

2) DBEdit2 – Tipo Currency, (Ficará livre pra digitação do valor “Valor do Cheque”).

a princípio, não há como você mostrar o texto “Valor do Cheque” em um campo que não é string (se é o que você quer fazer);

3) DBedit3 – Tipo Currency, (Neste campo quero exibir uma taxa fixa de 3,5% para calculo futuro).

também a inicialização já está explicada. Caso este campo não possa ser alterado, agora você já sabe como fazer;

4) DBEdit4 – ( Quero realizar o seguinte cálculo DBEdit2 * DBEdit3)

Caso a informação que apareça neste DBEdit seja apenas informativa, ou seja, não fica gravada no banco de dados, então você terá um campo calculado (fkCalculated) e deverá fazer a operação no evento OnCalcFields do dataset em questão.

Mas, caso seja um campo que fica armazenado em seu banco de dados, e sabendo que o valor do campo que está no DBEdit4 é resultado da operação entre outros dois, parece razoável que ao alterar qualquer um deles, você tenha que refazer os cálculos, não é mesmo?! Com esta idéia em mente, você pode imaginar que o melhor lugar para isto ser feito seja algum evento que indique a alteração de algum deles. A adição dos fields em design-time, trazem mais este benefício, já que você terá acesso ao evento OnChange deles. A título de exemplo, o que você faria é selecionar os dois campos na lista de campos do dataset, acessar a guia Events na janela Object inspector e dar um duplo-click no evento OnChange. A parte do código em que a operação deverá ser feita ficaria algo como:

TabItemValorMulta.AsFloat := TabItemValor.AsFloat *(TabItemPercMulta.AsFloat /100);

algo equivalente ao seu exemplo

Você pode perguntar: por que usar ".AsFloat" e não ".Value"?

e a resposta é que ao usar Value, você está tratando de um tipo Variant que pode conter valores nulos (caso você não inicialize os campos). Como resultado, uma exception pode ocorrer. Ao usar AsFloat, a "função" fará a validação internamente e se for o caso de estar nulo, será retornado o valor 0 (zero) que não gerará erro.

Abraços

Editado por Micheus
Link para o comentário
Compartilhar em outros sites

  • 0

Caros colegas achei interssante a explicação e como todo mundo sempre diz qeu é iniciante não vou fugir a regra.. pois bem

Assunto 1 - tenho um campo dbedit que quero qeu saia a data do dia corrente, mas qeu esta data possa ser alterada e posteriomente ser gravada no banco de dados de uma tabela .

Assunto 2

Tenho outros varios dbedit qeu já busca de uma tabela os campos pra serem gravados,

dbedit1 a dbedit07 valores que serao inseridos valores em dinheiro como colocar neles a mascara 0,00 e que quando eu digitar 1258 fique 1.258,00 ou se digitar 1258,5 fique 1,258,50 ??

Assunto 3

Nos mesmo dbedit qeu já busca de uma tabela os campos pra serem gravados,

dbedit1 a dbedit07 quero que os numeros inseridos apareçam somados no campo dbedit14(total)

ou seha dbedit1 + 2 + 3+ 4+ 5 + 6 + debedit7 = dbedit14 (total)

naso sei se pode colocar email mas meu email é rclaudio7@hotmail.com ou rclaudio7@gmail.com

Link para o comentário
Compartilhar em outros sites

  • 0

rclaudio7, releia esta parte:

Não aconselho pensar nos TDBEdit's com sendo a mesma coisa que um TEdit, e assim fazer atribuições utilizando a propriedade Text. Isto pode lhe fazer esquecer de que, na verdade, as informações que constam nele são de fato provenientes do campo pertencente ao dataset a ele vinculado.

(...) Ficará muito mais claro e simples a atribuição de valores utilizando diretamente o campo (field) do dataset.

quanto às questões...

Assunto 1 - tenho um campo dbedit que quero qeu saia a data do dia corrente, mas qeu esta data possa ser alterada e posteriomente ser gravada no banco de dados de uma tabela.
primeiramente, já que você diz-se iniciante, dbedit não é um campo e sim um componente. Ele está sim associado a um campo da sua tabela (via dataset).

O correto uso dos termos ajuda a não criar confusões quando você faz os questionamentos. ;)

se o que você quiz perguntar é como fazer a inicialização do campo que está ligado ao DBEdit, então você deverá fazer uso da sugestão que fiz no post anterior:

"Com isto em mente, localize no seu dataset o evento OnNewRecord (novo registro) e na eventual falta dele, algo como AfterInsert (que também ocorre após um Insert ou Append)."

assim, supondo que o nome do campo seja DatSaida e do dataset TabVendas, neste evento você escreveria algo como:

procedure TForm1.TabVendasNewRecord(Sender ...);
begin
  TabVendasDatSaida.Value := Date; // Date é uma função que retorna a data atual
// ou
// TabVendas.FieldByName('DatSaida').Value := Date;
// ou ...
end;
a forma de fazer isto pode variar um pouco de acordo com o tipo de componente de acesso (dataset) que você utiliza.
Assunto 2 Tenho outros varios dbedit qeu já busca de uma tabela os campos pra serem gravados, dbedit1 a dbedit07 valores que serao inseridos valores em dinheiro como colocar neles a mascara 0,00 e que quando eu digitar 1258 fique 1.258,00 ou se digitar 1258,5 fique 1,258,50 ??
você deverá usar a propriedade DisplayFormat do campo (Field) desejado. Se você adicionar os campos ao componente dataset em design-time, basta selecioná-lo e na janela Object Inspector localizar a propriedade citada. Se for fazer isto em tempo de execução, você pode fazer isto no evento OnCreate do form, como por ex.:
TabVendasTotalVenda.DisplayFormat := '#.##0,00';

note que na máscara, é usado invertido em relação ao que você quer, porque ela é definida utilizando a notação americana (ponto no lugar de vírgula e vice-versa)

Assunto 3

Nos mesmo dbedit qeu já busca de uma tabela os campos pra serem gravados,

dbedit1 a dbedit07 quero que os numeros inseridos apareçam somados no campo dbedit14(total)

ou seha dbedit1 + 2 + 3+ 4+ 5 + 6 + debedit7 = dbedit14 (total)

Esta questionamento, eu já tentei explicar no item 4 do outro post. Talvez algum colega possa tornar isto mais claro a você.

Leia alguma apostila, execute algum tutorial passo-a-passo e tente conhecer os componentes que você usará. Tem muito material na net (e aqui no forum). Use muito a tecla F1 em um componente, propriedade ou linha do código - o help tem quase tudo que você precisará saber.

Se tiver dificuldades com inglês, use um tradutor on-line, como o Altavista BabelFish.

Abraços

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...