Guest --nahim -- Postado Agosto 5, 2008 Denunciar Share Postado Agosto 5, 2008 Pessoal to precisando de uma força;Tenho um DBGrid ligado a uma select com mais de uma tabela.Exemplo:tenho a select codcliente,cliente,numpedido,numnotas from cliente,pedido,notas;Hoje ao clickar no butao consultar no form ele me mostra o resultado da select no dbgridassim gostaria de no campo numpedido poder alterar e motivicar o valor ou no campo notas a mesma coisaObrigado Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Agosto 6, 2008 Denunciar Share Postado Agosto 6, 2008 nahim, para editar os registros em um DBGrid, o dataset deve permitir isto. Em geral, apenas tendo um dataset do tipo table ligado ao DBGrid é que você conseguirá isto ou, usando um componente tipo query, quando habilitando a propriedade RequestLive=True, sendo que não há garantia de que funcionará - tornando o resultado ReadOnly. Isto pode ocorrer caso a consulta SQL não respeite alguns requerimentos para que possa ser aplicado pelo BDE, com não ter join's, order by, funções de agregação (sum, avg, ...), bem como o banco de dados sendo utilizado (os Server's, diferentemente dos tipos similares ao Paradox, podem resolver as questões relacionadas a join)Como você comentou que tem um select com mais que uma tabela (isto é um join) e não indicou o banco utilizado, já há uma grande chance de você não conseguir fazer o que quer.Na pior das hipóteses, você pode tentar e ver o que acontece. ;)Abraçosalguma referência:- TQuery - SQL In Delphi (About.com)- DataBase Application Developper's Guide (ver capítulo 5 - pag. 120, sobre TQuery)- TClientDatasets - Gary's Delphi Client Dataset Based Application (ler: Problems with TClientDatasets and their solutions)Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --NAHIM -- Postado Agosto 6, 2008 Denunciar Share Postado Agosto 6, 2008 VALEU MICHEUSMas e o sequinte meu banco e o oracle certo?na realidade quero trabalha com duas tabelas a de clientes aonde coleto o nome do clientee a de pedidos aonde coleto os dados como numero do pedido, qtdeitens, valor, e o campo separadorassim o campo separador tem que deixar eu digitar na dbgrid o codigo do separador.Tem como eu realizar algo parecido?Como anteriormente estava como query agora liguei meu dbgrid a tabelas assim gostaria de trabalhar com mais de uma tabela uma como o nome do cliente ligado codcliente da tabela 1 a tabela2 pedidos e trazer o resto mas o campo separador da tabela2 (pedido) tinha que ficar editavel.Tem uma dica para me ajudar nesse caso? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Agosto 7, 2008 Denunciar Share Postado Agosto 7, 2008 (editado) na realidade quero trabalha com duas tabelas a de clientes aonde coleto o nome do clientee a de pedidos aonde coleto os dados como numero do pedido, qtdeitens, valor, e o campo separadorassim o campo separador tem que deixar eu digitar na dbgrid o codigo do separador.Tem como eu realizar algo parecido?Como anteriormente estava como query agora liguei meu dbgrid a tabelas assim gostaria de trabalhar com mais de uma tabela uma como o nome do cliente ligado codcliente da tabela 1 a tabela2 pedidos e trazer o resto mas o campo separador da tabela2 (pedido) tinha que ficar editavel.Tem uma dica para me ajudar nesse caso?NAHIM, da forma como você coloca, talvez você pudesse fazer da seguinte forma:- Use um table para pedidos ligado ao DBGrid (dataset principal, onde será feita a edição);- Precisaremos de um dataset do tipo query para consultar cada tabela referenciada (no seu exemplo seria a cliente) onde, em cada uma, deverá ser incluso na cláusula SELECT o campo de referência e o campo de descrição (p.e., Nome, Razao_Social, ...);- Agora, no dataset principal, faremos a referência a estes dataset's de consulta (lookup); Para isso, em design-time, acesse a lista de campos do dataset principal (duplo click no componente); Agora, adicione um novo campo (botão direito -> New field...); Em Name, vamos definir NomeCliente, seguido por Type igual a String e Size conforme definido o referido campo na sua tabela de clientes; A seguir, definimos o tipo deste campo como sendo Lookup; Mais abaixo, fazemos a vinculação à consulta definindo KeyFields com o campo de referência à tabela clientes (codcliente), DataSet apontando para a consulta à clientes (a query), em Lookup Keys selecionamos o campo referenciado (provavelmente, também codcliente) e em Result Field selecionamos o campo a ser apresentado no DBGrid (nome ou razao, ...);- O procedimento anterior deverá ser repetido para todos os campos do pedido que venham a ser obtidos a partir de outras tabelas (lookups);- Ao DBGrid, são então adicionados apenas os campos a serem digitados e os que foram criados como Lookup (não os "nativos");Como resultado, estes tipos de campos são mostrados no DBGrid na forma de uma caixa de lista. Obs:1) Antes de o dataset principal ser aberto, as consultas lookup's já devem estar abertas;2) Se alguma alteração for realizada nas tabelas utilizadas como lookup neste DBGrid, as respectivas consultas tem que ser atualizadas (close e open);3) Como você mencionou Oracle e uma consulta simples, você poderia sim utilizar o TQuery com a propriedade RequestLive=True. Dou 99% de chances de funcionar nestas condições. :D Tente por este caminho e veja se você chega onde quer.Abraços Editado Agosto 7, 2008 por Micheus Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Nahim Postado Agosto 7, 2008 Denunciar Share Postado Agosto 7, 2008 Micheu;--> C e o cara irmãotem amanha total te devo uma campeão usei o lookup. E ficou muito bom.Aqui precisando pode contar comigo.C passar por Mariana - MG me manda um e-mail Abraços.José Nahim Safadi Junior. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Guest --nahim --
Pessoal to precisando de uma força;
Tenho um DBGrid ligado a uma select com mais de uma tabela.
Exemplo:
tenho a select codcliente,cliente,numpedido,numnotas from cliente,pedido,notas;
Hoje ao clickar no butao consultar no form ele me mostra o resultado da select no dbgrid
assim gostaria de no campo numpedido poder alterar e motivicar o valor ou no campo notas a mesma coisa
Obrigado
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.