Jump to content

Archived

This topic is now archived and is closed to further replies.

diogotadeu

[Resolvido] TabelaO

Recommended Posts

Ola galera, sou novo no forum e iniciante em delphi e preciso de uma ajudinha um uma coisa

seguinte

tenho um campo que cadastra usuarios e ai tem a data do dia do cadastro e automaticamente outro campo com a data com acrecimo de 10 dias, ao criar um cadastro um campo status e definico com o item "Aguardando".

ai vem o problema, preciso que quando chegar a data 2 (a com 10 dias a mais), o status muda para "ativo".

Isso e facil mais o problema e que preciso fazer isso ao executar o programa.

 

EX: iniciei o programa

ai ele testa todo o banco de dados e verifica se tem algum com a data de hj, se tive ele ja altera todos para ativo.

 

 

Uso delphi 7 e bd paradox

 

sou iniciante e estou desesperado pq preciso implementar esse sistema aqui na loja, ja esta pronto so falta isso

 

 

 

desdeja agradeco a todos

 

 

meu e-mail e diogotca@gmail.com

Share this post


Link to post
Share on other sites

ola pessoal

tentarei ser mais especifico ainda

preciso que na data descrita em um edit o delphi faça uma varredura no meu banco de dados PARADOX e no compa status altere de sim para nao

 

 

exemplo

 

tenho 60 cadastros sendo que 30 serao expirados no dia 10/05/2010, e essa data esta em um edit, quando essa data chegar preciso que todos os cadastros (30) que expira no dia 10/05/2010 mude um campo do seu cadastro, campo status de sim para nao.

so que essa rotina tem que ser carregada todos os dias ja que todo dia tera cadastro a ser expirado e tem que ser em todos os cadastros do BD.

obrigado

Share this post


Link to post
Share on other sites

Olá diogotadeu peço que tenha paciencia, e na hora de fazer as postagens tenha calma enquanto as páginas do fórum são carregas, veja, você postou diversas vezes o mesmo "post".

 

Você ja experimentou utilizar um update na sua tabela?

Share this post


Link to post
Share on other sites

Raficca, os posts me desculpe foi problema aqui njo meu pc, mas sobre o update da tabela você poderia me explicar mais, e me dar alguns toques e codigos pq sou iniciante/estudante de delphi e sozinho ta dificil

se alguem puder me ajudar ficarei grato

Share this post


Link to post
Share on other sites

Caso você já tenha o código pronto !

 

Se você precisa atualizar os seus registros diariamente, uma idéia seria colocar o código de atualização do BD quando você carregar o Menu se existir ou senão colocar um botão no devido Form.

 

Isso se eu entendi bem.

Share this post


Link to post
Share on other sites

wllf obrigado pela resposta

 

mas eu precisava do codigo, tipoe e um codigo simples so para mudar um dbcombobox de sim para nao so que isso em funcao da data. ex hj vao expirar 20 registros entrao o proprio sistema tera que varrer o bd e mudar esse status de sim para nao (EU USO PARADOX)

se alguem puder me mandar o codigo e que sou iniciante e num sei como fazer.

 

 

desdeja agradeco a todos

Share this post


Link to post
Share on other sites

wllf obrigado pela resposta

 

mas eu precisava do codigo, tipoe e um codigo simples so para mudar um dbcombobox de sim para nao so que isso em funcao da data. ex hj vao expirar 20 registros entrao o proprio sistema tera que varrer o bd e mudar esse status de sim para nao (EU USO PARADOX)

se alguem puder me mandar o codigo e que sou iniciante e num sei como fazer.

 

 

desdeja agradeco a todos

 

 

você precisa fazer a seguinte forma (não darei mastigado, pois assim você não aprende)

 

no oncreate ou onShow do form, coloque algo semelhante a isso

 

enquanto não for final da tabela faça

Se DataBanco = DataHoje então

Altera Status para ativo

pule para o proximo

é basicamente isso, coloquei no oncreate ou no onshow do form pq é didatico, mas isso deixará seu sistema lento na abertura.

Share this post


Link to post
Share on other sites

Eu vou dar uma idéia bem vaga, você pode montar uma query e mandar ela selecionar na sua tabela em questão todos os registros que tenhão a data de hoje igual ao campo data com acréscimo, com essa informação em mãos é só mandar editar os registros encontrados através de um while.

 

select *

from tblteste

where Data_acrescimo = :dt

 

 

Só lembrando que :dt significa que você vai passar a data via parâmetro para a query, assim sendo você clica na object Inspetor a propriedade (TParameters)..., e configura a propriedade DataType = ftDateTime e a propriedade Value > type = Date.

 

Nesse exemplo usei AdoQuery, pode variar um pouco dependendo de qual componente você está usando para conexão.

 

Bom é mais ou menos isso, conforme você for montando posta as dúvidas ...

Share this post


Link to post
Share on other sites

Faccruz obrigado pela resposta so poderia me esclarecer algumas coisinhas

primeiro, esse codigo eu colocaria na oncreate do form principal correto?

outra coisa esse codigo, tipo a data que quero compara esta salva em um dbedit ok

intao preciso comparar essa data com a do sistema.

so mais uma coisinha a primeira linha nao consigo entender como e e nem a ultima

as duas do meio eu ate consegui montar mais as duas a primeira e ultima num, poderia me ajudar?

 

enquanto não for final da tabela faça

Se DataBanco = DataHoje então

Altera Status para ativo

pule para o proximo

 

wllf

vou tentar com a query tbm mais eu nunca usei uma num sei nem por onde comecar entao se você tiver como me dar maiores informacoes, exemplos num sei eu agradeceria :-)

 

 

pessoal me desculpa se num sei nada kkkk e que sou iniciante e estou me esforcando muito para aprender.

 

 

 

obrigado a todos

Share this post


Link to post
Share on other sites

 

enquanto não for final da tabela faça

Se DataBanco = DataHoje então

Altera Status para ativo

pule para o proximo

 

 

esse enquanto não for final é uma instrução While

Eu deduzi que você quer fazer isso para todos os registros de sua tabela, por isso fiz dessa forma

 

<Sua tabela>.First;
While Not <Sua Tabela>.Eof do
  if <Campos Data da Tabela> = Today then
    <Campo Ativo da Tabela>.AsString := 'S'; -> Supondo que seja um char(1) que recebe S para ativo e N para não ativo
Next

Share this post


Link to post
Share on other sites

Mais uma vez estou enrrolado kkkk

Galera a terceita linha

onde tenho que colocar o campo da tabela

eu coloco

 

if Data = today then

 

erro > Undeclarad identifier : 'Data'

 

 

o que pode ser isso?

outra coisa eu num teria que colocar table1.campo = today then

 

outro erro depois

 

Build

[Error] C_BK.pas(145): Undeclared identifier: 'Today'

[Error] C_BK.pas(146): Statement expected but '<' found

[Error] C_BK.pas(146): Missing operator or semicolon

[Error] C_BK.pas(146): Undeclared identifier: 'AsString'

[Error] C_BK.pas(146): Incompatible types: 'Boolean' and 'Char'

[Error] C_BK.pas(146): Missing operator or semicolon

[Error] C_BK.pas(146): Missing operator or semicolon

[Error] C_BK.pas(146): Missing operator or semicolon

[Error] C_BK.pas(146): Missing operator or semicolon

[Error] C_BK.pas(146): Missing operator or semicolon

[Error] C_BK.pas(147): Missing operator or semicolon

[Fatal Error] F_inicio.pas(87): Could not compile used unit 'C_BK.pas'

Share this post


Link to post
Share on other sites

aeeeeeeeeeee galera consegui faze roda

 

podem me dizer se esse codigo funciona?

 

table1.First;

While Not table1.Eof do

if 'Data' = DateToStr(date) then

<so preciso saber como faco para mudar um dbcombobox>

Next

 

e mais uma coisinha, (Sei que estou abusando mais e que quero muito aprende)

como faria para colocar uma progressbar para monitorar o status da operacao?

 

 

desdeja agradeco a todos

Share this post


Link to post
Share on other sites

aeeeeeeeeeee galera consegui faze roda

 

podem me dizer se esse codigo funciona?

 

table1.First;

While Not table1.Eof do

if 'Data' = DateToStr(date) then

cadbk.table1.'Status'.AsString:= 'S'; <quando insiro esse codigo da o erro>

Next

 

Build

[Error] Splash.pas(35): Identifier expected but string constant found

[Fatal Error] SisBK.dpr(15): Could not compile used unit 'Splash.pas'

 

 

 

e mais uma coisinha, (Sei que estou abusando mais e que quero muito aprende)

como faria para colocar uma progressbar para monitorar o status da operacao?

 

 

desdeja agradeco a todos

 

Share this post


Link to post
Share on other sites

Para alterar o campo status a tabela tem que estar em modo de edição ? E após editar tem que salvar as novas informações.

 

Quanto ao erro você tem que certeza que está apontando para o campo certo da tabela ?

Share this post


Link to post
Share on other sites

Para alterar o campo status a tabela tem que estar em modo de edição ? E após editar tem que salvar as novas informações.

 

Quanto ao erro você tem que certeza que está apontando para o campo certo da tabela ?

 

tenho certeza sim cara, certeza bsoluta

no comeco do codigo e bom eu dar um table.edit?

o que o erro quer dizer pq ele da logo depois do campo especificado

 

 

abrax

Share this post


Link to post
Share on other sites

table1.First;

While Not table1.Eof do

if cadbk.table1.fieldbyname('Data').AsString= DateToStr(date) then

table1.edit;

cadbk.table1.fieldbyname('Status').AsString:= 'S';

table1.post;

table1.Next;

 

testa assim,

Share this post


Link to post
Share on other sites

table1.First;

While Not table1.Eof do

if cadbk.table1.fieldbyname('Data').AsString= DateToStr(date) then

table1.edit;

cadbk.table1.fieldbyname('Status').AsString:= 'S';

table1.post;

table1.Next;

 

testa assim,

 

 

 

erro

 

 

Table1: Cannot perform this operation on a closed dataset.

 

num teria como implantar isso em uma progressbar assim daria pra ve se ele esta fazendu tudo certinhu

Share this post


Link to post
Share on other sites

Agora sim ficou bom a msg de erro, isso quer dizer que temos que abrir a tabela antes de edita - la;

 

table1.open;

table1.First;

While Not table1.Eof do

if cadbk.table1.fieldbyname('Data').AsString= DateToStr(date) then

table1.edit;

cadbk.table1.fieldbyname('Status').AsString:= 'S';

table1.post;

table1.Next;

 

 

Quanto ao progressbar na grande maioria dos casos é só enfeite, após o fim do processo que o progress dispara.

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.