Fórum Status mensagem #485431
14/07/2014
0
Preciso muito de uma ajuda para alterar o status das minhas mensagens.
Exemplo: se eu envio uma mensagem para 3 usuários.. eu tenho que salvar como recebido apenas aquele usuário que já abriu o sistema e viu ... ai coloquei para mostrar no dbgrid e no clique dele, coloquei para alterar para recebido... ele até altera, porém... só altera o primeiro registro
Eu fiz assim:
if (dm.cdsrelusumsg.fieldbyname('Status').asstring = 'Enviado') and (dm.cdsrelusumsg.FieldByName('codigousu').AsString = quotedstr(xpubusu)) then
begin
dm.cdsrelusumsg.Edit;
dm.cdsrelusumsg.fieldbyname('Status').asstring:='Recebido';
dm.cdsrelusumsg.Post;
dm.cdsrelusumsg.ApplyUpdates(0);
end;
DBMemo1.Visible:=True;
Tem algo de errado para não salvar e nem alterar nada?
P. Azeredo
Curtir tópico
+ 0Posts
14/07/2014
Valquiria Silva
Assim como está apenas o registro selecionado na linha do DbGrid será alterado.
Para alterar todos, você teria que percorrer todos os registros modificando os status.
Gostei + 0
14/07/2014
P. Azeredo
Pode me dar uma ajuda?
Eu teria que colocar:
dm.cdsrelusumsg.first;
while not dm.cdsrelusumsg.eof do
begin
if (dm.cdsrelusumsg.fieldbyname('Status').asstring = 'Enviado') and (dm.cdsrelusumsg.FieldByName('codigousu').AsString = quotedstr(xpubusu)) then
begin
dm.cdsrelusumsg.Edit;
dm.cdsrelusumsg.fieldbyname('Status').asstring:='Recebido';
dm.cdsrelusumsg.Post;
dm.cdsrelusumsg.ApplyUpdates(0);
end;
DBMemo1.Visible:=True;
dm.cdsrelusumsg.next;
Gostei + 0
14/07/2014
Valquiria Silva
Mas não entendi uma coisa, vc disse :
Quem deve alterar este status? O usuário ao entrar no sistema pela grid?
Gostei + 0
14/07/2014
P. Azeredo
Eu não compreendi!
Eu tentei dar um Update, mas diz que está com erro de síntaxe.
Sim, quem altera o status, é o usuário. Quando ele dá dois cliques na mensagem, a mensagem abre embaixo e o status altera para RECEBIDO.
Gostei + 0
14/07/2014
Valquiria Silva
neste caso se aparecerem 3 mensagens, o usuário tem que clicar em uma de cada vez e atualizar o status? Você tem tela pra mostrar essas mensagens?
Se for isso:
no doubleclick da grid
if (dm.cdsrelusumsg.fieldbyname('Status').asstring = 'Enviado') and (dm.cdsrelusumsg.FieldByName('codigousu').AsString = quotedstr(xpubusu)) then
begin
dm.cdsrelusumsg.Edit;
dm.cdsrelusumsg.fieldbyname('Status').asstring:='Recebido';
dm.cdsrelusumsg.Post;
DBMemo1.Visible:=True;
end;
e ao sair dessa tela
dm.cdsrelusumsg.ApplyUpdates(0);
Gostei + 0
14/07/2014
P. Azeredo
Gostei + 0
14/07/2014
Valquiria Silva
Gostei + 0
14/07/2014
P. Azeredo
Gostei + 0
14/07/2014
P. Azeredo
Gostei + 0
14/07/2014
Valquiria Silva
Volte o comando
dm.cdsrelusumsg.ApplyUpdates(0);
para onde estava assim:
if (dm.cdsrelusumsg.fieldbyname('Status').asstring = 'Enviado') then
begin
dm.cdsrelusumsg.Edit;
dm.cdsrelusumsg.fieldbyname('Status').asstring:='Recebido';
dm.cdsrelusumsg.Post;
dm.cdsrelusumsg.ApplyUpdates(0);
DBMemo1.Visible:=True;
end;
veja se salva
Gostei + 0
14/07/2014
P. Azeredo
Gostei + 0
14/07/2014
Valquiria Silva
Qual o tipo deste campo no banco de dados?
Este field ele é um campo calculado?
Gostei + 0
14/07/2014
P. Azeredo
Deixa eu te falar uma coisa...
Não sei se estou fazendo certo, mas sabe como eu coloquei para ficar como Enviado?
Na hora de enviar a mensagem e salvar na tabela... eu coloquei p o status salvar como ENVIADO
Será que é por isso que está dando problema? Eu deveria salvar de outra forma?
Gostei + 0
14/07/2014
Valquiria Silva
Qual o tipo deste campo no Banco de dados? Varchar de que tamanho?
Gostei + 0
14/07/2014
P. Azeredo
Varchar(200)
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)