Alterar registro em uma consulta com inner join

14/05/2008

1

olá meus caros amigos, estou com o seguinte problema em minha aplicação que usa o trio de componentes SQLDataSet + DataSetProvider + ClientDataSet, pois eu preenchi a propriedade commandtext do SQLDataSet com a seguinte sentença SQL: [i:ebd29fe094][b:ebd29fe094]select mapa.id_mapa, delegacia.delegacia, mapa.resp_preenchimento, mapa.mes, mapa.ano, tipo_mapa.tipo, mapa.situacao from mapa inner join delegacia on mapa.id_delegacia = delegacia.id_delegacia inner join tipo_mapa on mapa.id_tipo_mapa = tipo_mapa.id_tipo_mapa where mapa.situacao = ´ABERTO´[/b:ebd29fe094][/i:ebd29fe094].

E estou tentando alterar o CAMPO SITUACAO dessa consulta da seguinte forma:
if not dados.cdsmapasabertos.IsEmpty then
begin
dados.cdsmapasabertos.Edit;
dados.cdsmapasabertos.FieldByName(´SITUACAO´).AsString:= FINALIZADO´;
dados.cdsmapasabertos.Post;
dados.cdsmapasabertos.ApplyUpdates(0);
end;

e estou obtendo o seguinte erro: table unknow MAPA

O Q SERÁ Q ESTOU FAZENDO DE ERRADO, por favor peço uma luz!!


desde já agradeço![/i]


Responder

Posts

15/05/2008

Paulo

Cara, refiz seu join e aparentemente está tudo certo. Não vi nada de anormal olhando de repente. vais ter que bater linha a linha do seu código e ver se o SqlDataSet está apontando mesmo pra tabela. Esse ero é de que Não Existe e/ou O SqlDataSet não acha a tabela. Aí só vendo o código.

select mapa.id_mapa, mapa.resp_preenchimento, mapa.mes, mapa.ano, mapa.situacao delegacia.delegacia, tipo_mapa.tipo, from mapa inner join delegacia on mapa.id_delegacia = delegacia.id_delegacia inner join tipo_mapa on mapa.id_tipo_mapa = tipo_mapa.id_tipo_mapa where mapa.situacao = ´ABERTO´



Responder

15/05/2008

Joaoshi

Colega, você precisa colocar no evento [b:d522cc17d3]OnGetTableName[/b:d522cc17d3] do [b:d522cc17d3]DataSetProvider[/b:d522cc17d3] o nome da tabela.

Espero ter ajudado.


Responder
vc pode me dizer como eu faço isso???? como eu disse estou reiniciando minha carreira de programador!!


Responder

15/05/2008

Joaoshi

Colega,

- Dê um click no seu DataSetProvider
- Teclando a F11 vai abrir o Object Inspector
- Vá na aba events
- Dois clicks na opção [b:3dbed22118]OnGetTableName[/b:3dbed22118] (vai abrir o código)
- Digite: [b:3dbed22118]TableName := ´MAPA´;[/b:3dbed22118]

Espero ter ajudado.


Responder
olá João obrigado pela ajuda mas ainda não resolveu o meu problema valeu!!


Responder