Jump to content
Fórum Script Brasil
  • 0

Variável receber um valor de um campo do banco de dados


Sandrelle

Question

Bom Dia...

Alguém poderia me ensinar, como faço para uma variável, receber o valor de um campo de uma tabela, do banco de dados.

Preciso fazer uma validação... Mas preciso que essa variável receba o valor do banco para comparação!

Estou usando mysql e delphi 2010... AdoQuery e datasource!

Obrigada!

Link to comment
Share on other sites

12 answers to this question

Recommended Posts

  • 0
Alguém poderia me ensinar, como faço para uma variável, receber o valor de um campo de uma tabela, do banco de dados.

Preciso fazer uma validação... Mas preciso que essa variável receba o valor do banco para comparação!

Se você já programou alguma linha de código (e acredito que sim), com certeza já fez uma declaração de variável e atribuiu alguma coisa a ela. Se ainda não, aconselho a dar uma olhada em apostilas básicas, pois qualquer ajuda que alguém possa lhe dar vai exigir um mínimo de compreensão - do contrário, não haverá entendimento de ambos os lados (seu e de quem lhe responde).

Fazer uma atribuição de um campo do banco de dados para uma variável é exatamente igual a qualquer outra atribuição, exceto pelo fato de que você não está estipulando uma valor fíxo (um número, um texto, ...).

O seu ADOquery, depois que foi aberta a conexão com o banco, possuirá os valores do tal registro armazenado em cache e, para acessar estes valores, voce apenas tem que buscar o campo necessário - seja usando uma componente Field criado em design-time ou run-time.

Voce tem que levar em conta que o tipo de dados do campo e da variável tem que ser compatíveis (inteiro/inteiro, text/string, ...)

O local da declaração da variável vai depender do escopo da mesma - se local ou global - está intimamente ligado ao que você vai fazer com ela. Se seu valor for utilizado de diferentes pontos do código (procedure ou function), com certeza a declaração deverá ser global.

Voce sabe como como usar os campos do componente ADOquery? Se não, voce sabe que a propriedade Fields é onde eles são armazenados?

Voce adicionou os campos em design-time (no momento em que vc "desenha" os forms no Delphi)? Se sim, o acesso a eles é direto. Se não, voce sabe que ADOquery possui uma função e uma propriedade que lhe permitem acessar o conteúdo de um campo em run-time (durante a execução)?

Link to comment
Share on other sites

  • 0

Olá Micheus

Acho que me expressei mal, quando disse "me ensinar", eu queria uma ajuda... :blush:

Em relação aos fields, é definido quando se tem um DBedit, dbtext, certo?? Ai se tem acesso direto no registro, aos dados...

Na verdade eu queria sim, que em tempo de execusão, uma variavél, recebesse o valor de um campo do banco...

Porque é assim, a minha intenção é:

Eu faço um select para achar uma certo registro, quando achar o registro...

gostaria que a variável recebesse, o valor de um dos campo, para fazer um cálculo.

Bem, eu não conheço todos os componentes do Adoquery...

Essa função que o Sr. citou, seria o Parameters ? (que são os parametros?);

Desculpe a minha falta de jeito....

Obrigada!

Link to comment
Share on other sites

  • 0
Em relação aos fields, é definido quando se tem um DBedit, dbtext, certo?? Ai se tem acesso direto no registro, aos dados...
Não exatamente...

A forma a que me referi diz respeito a existência deles em design-time, ou seja, quando você dá um duplo click no componente e na janela que aparece você tem os fields ou, se está vazia, voce pode adicioná-los usando o menu de contexto (clica com o botão direito do mouse) aciona a opção "Add Fields...".

Na verdade eu queria sim, que em tempo de execusão, uma variavél, recebesse o valor de um campo do banco...

Porque é assim, a minha intenção é:

Eu faço um select para achar uma certo registro, quando achar o registro...

gostaria que a variável recebesse, o valor de um dos campo, para fazer um cálculo.

Acho que o que você vai fazer é exatamente o que tem neste post.

O certo registro já pode ser filtrado através da query que você vai construir.

Bem, eu não conheço todos os componentes do Adoquery...
ADOQuery é o componente. Os itens a que me referi sobre ele, são suas propriedades e metodos (leia sobre OOP - programação orientada a objetos)

Essa função que o Sr. citou, seria o Parameters ? (que são os parametros?);
Não. Parâmetros (Parameters) são parêmetros. Campos (Fields) são campos,...

Isto que você vai implementar é tarefa de curso de informática?

Link to comment
Share on other sites

  • 0
Isto que você vai implementar é tarefa de curso de informática?

Mais ou menos, foi apenas uma materia em um curso, mais já terminou... e estou exercitando... ou tentando! :unsure:

Acho que o que você vai fazer é exatamente o que tem neste post.

Não é bem igual a esse post, eu quero fazer so uma comparação... ^_^

Mas me ajudou bastante... tinha o que eu queria:

A linha ...

Valor := Valor + QBase.FieldbyName('Valor').value;
Era basicamente isso que eu precisava... so que mudei mais ou menos assim....
p := AdoQuery1.FieldbyName('quant_parcelas').value;

Agora preciso fazer a comparação usando 'p' ...

Muito Obrigada pela ajuda!

Ainda preciso ler mais, tenho muito a aprender... a cada descoberta e acerto me animo mais...

mesmo ainda não sabendo muito ... gosto bastante dessa area de programação! :wub:

Link to comment
Share on other sites

  • 0
so que mudei mais ou menos assim....

p := AdoQuery1.FieldbyName('quant_parcelas').value;

Agora preciso fazer a comparação usando 'p' ...

E voce vai comparar o que com ele? Uma informação de outra tabela ou informado em uma tela pelo usuário?

Link to comment
Share on other sites

  • 0

Bom Dia ...

Eu vou comparar uma informação dada pelo usuário!

Vou tentar explicar, espero que me entenda...

"Quando se cadastra uma duplicata, se informa quantas parcelas ela vai ter.... (no máximo 6), quando vai cadastrar a parcela é cadastra

qual parcela vai pagar, so que nem sempre a duplicta tem as 6 parcelas... ai eu tava querendo essa informação, puxar da tabela quantas

parcelas foram cadastradas e fazer a comparação pra saber se não ta cadastrando mais do que o devido... (essa parte eu consegui...)

agora preciso evitar que sejam cadastrados valores repetidos.... "

^_^

Link to comment
Share on other sites

  • 0

Bom, não conhecemos a estrutura de dados que você está usando, então vou comentar genericamente...

- se você tem uma tabela que guardas as informações da duplicata, talvez ela pudesse armazenar esta informação (quantidade de parcelas) para facilitar-lhe as coisas.

- se a esta tabela voce tem relacionada uma outra tabela onde estão as informações especificamente das parcelas, então se voce simplesmente fizesse uma consulta SQL utilizando a função de agrupamento COUNT, voce conseguiria saber diretamente qual a quantidade de parcelas vinculada a uma determinada duplicata.

Link to comment
Share on other sites

  • 0

Oi Boa Tarde...

Sim, a minha "tabela duplicata", armazena quantidade de parcelas... e tem a "tabela parcela" também, onde vai ficar parcela por parcela....

se na tabela "duplicata" a quantidade de parcelas é cinco, so posso deixar cadastrar na tabela "parcela", cinco parcelas....

poderias me dar um exemplo... ^_^

Link to comment
Share on other sites

  • 0

Em teoria, esta sua tabela de parcelas seria gerada automaticamente após voce ter: valor total da duplicata, quantidade de parcelas, dia/data do primeiro vencimento.

Mas é claro, isto depende de como cada um implementa seu sistema.

A sua tabela de parcelas deve ter um campo que a relaciona com a duplicata. Este campo seria utilizado para voce filtrar na tabela parcelas todas as parcelas existentes para aquela duplicata.

Ou ainda, se quer apenas saber quantos registros existem na tabela parcelas associada a uma determinada duplicata, então voce poderia usar uma query para a contagem (conforme mensionei):

Select Count(<numparcela>) as QtdParcelas 
From parcelas 
Where <codduplicata> = :codduplicata

onde os nomes entre <> são os nomes dos campos que eu não conheço. :D

Dê uma olhada neste post. Ele não é exatamente sobre o seu caso, mas é pode ajudar um pouco no que tento explicar.

Link to comment
Share on other sites

  • 0

Select Count(<numparcela>) as QtdParcelas 
From parcelas 
Where <codduplicata> = :codduplicata

Não acertei fazer o "select count ", não entendi muito bem... :wacko:

Mas, lendo aquele exemplo no post que me mandaste, me ajudou bastante... ^_^

Eu fiz um "select inner join" nas minhas tabelas "duplicata e parcelas", e estou pegando o resultado do "recordcount" do adoquery...

para fazer a minha validação!

será que irá da algum erro??

Obrigada pela paciência! :D

Sandrelle!

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...