Fórum atualizar informacoes em mais de uma tabela #219842

11/03/2004

0

olá amigos

tenho um select entre duas tabelas e gostaria de modificar informacoes das duas tabelas em uma dbgrid !!!! alguem sabe me dizer como fazer ?


Cristiano Santos
Fortaleza/CE


Cristiano021

Cristiano021

Responder

Posts

11/03/2004

Cabelo

Amigo

poderia explicar melhor a sua dúvida e se possível poste o seu SQL para eu analizar..

Bem como vc faz as alterações, e quais elas são..

sem mais

Cabelo


Responder

Gostei + 0

11/03/2004

Cristiano021

vamos supor


tabelas :

areas
-areid
-aredescricao

clientes
-cliid
-areid
-cliNome

SELECT * FROM areas are, clientes cli
WHERE (cli.areid=are.areid)

as informacoes de areas e clientes, de acordo com o select, será mostrado na dbgrid

como faria para alterar as informacoes de areas e cliente na dbgrid
?


Responder

Gostei + 0

11/03/2004

Cabelo

Caro Amigo

este problema ocorre devido o método request Live..

quando vc executa um join em uma query, vc não consegue alterar os dados..

Eu sugiro uma ´Gambiarra´, fazendo isto :

Use dois componente TTable, e selecione somente o campo1 para a 1ª table e somente o campo2 para a segunda table, no evento beforePost da query vc atribui os valores para alteração e grave na base, não esqueça de colocar um ABORT no final da procedure, para evitar assim que delphi execute o evento Post;

depois feche e abra a query novamente, que os dados estarão alterados, não esqueça de ponteirar a query primeiro..

sem mais

Cabelo


Responder

Gostei + 0

11/03/2004

Cristiano021

voce tem como me enviar um exemplo ?


Responder

Gostei + 0

11/03/2004

Cabelo

não tenho nenhum exemplo que vc possa usar, mas vou passar aqui o que deve fazer..

Componentes usados

Query1, DataSourse1, Table1, Table2, Grid1 :

SELECT * FROM areas are, clientes cli
WHERE (cli.areid=are.areid);
abre a query1, o datasource terá as propriedades Dataset = Query1, e o grid1 tera o datasurce = datasourse1

os campos irão aparecer no grid :

no evento BeforePost da Query1:

as propriedades : Table1

table = areas
fieldindex = areid

table 2

table = clientes
fieldindex = cliid

não esqueça de adicionar os campos ao fields editor das duas tabelas.


table1.Open;
Table2.open;
Table1.edit;
Table2.edit;
Table1.fieldbyname(´CAMPO_da_1ª_tabela´).value := Query1.fieldbyname(´CAMPO_da_1ª_tabela´).value;
Table2.fieldbyname(´CAMPO_da_2ª_tabela´).value := Query1.fieldbyname(´CAMPO_da_2ª_tabela´).value;
Table1.Post;
Table2.Post;
query1.close;
query1.open;
query.locate(campo index, valor do campo index, []);
abort;

se houver problemas me diga..

sem mais

cabelo


Responder

Gostei + 0

11/03/2004

Cristiano021

ok..vou ver se da certo

[]s

Cristiano Santos
Fortaleza/CE


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar