GARANTIR DESCONTO

Fórum Problema com SQL, DBGrid e DBText #288769

19/07/2005

0

Ola amigos,

Primeiro uso paradox e delphi5

Fiz um programa num form aonde tenho 4 querys query1 para cadastrar, query2 para somar valores query3 para somar despesa e query4 para mostrar num dbgrid

bom a query1 o datasource esta ligada em outro form (form3.datasource2)

na SQL da query1 esta assim
select * from tbsalario
where codfunc=:codfunc

nas outras querys o datasource estao ligadas na datasource da query1 e o codigo SQL esta assim

query2
select sum (valor) from tbsalario
where codfunc=:codfunc

query3
select sum(desconto) from tbsalario
where codfunc=:codfunc

query4
select * from tbsalario
where codfunc=:codfunc
order by codigo

Isso serve pra quando eu digitar o codigo do funcionario o form pegar somente os valores do funcionario selecionado. (Obs: nao uso chave primaria para esse tipo de ligaçao)

O problema eh que na dbgrid aonde esta a query4 nao aparece o que esta gravado antes de ser confirmada a operaçao tipo dar um post num botao, e assim tambem a query2 e query3 ficam em branco ate confirmar pra depois sim aparecer na dbgrid e dbtext os valores digitados, e se eu tiver que fazer um novo lançamento novamente ficam em branco.

Com fazer pra resolver esse problema, sem precisar fazer chave primaria, pois nao curto essa de chave primaria da muito problema.


Agradeço quem puder me ajudar
Obrigado
Adriano...


Adriano_servitec

Adriano_servitec

Responder

Posts

19/07/2005

Daemon

...o lance eh o seguinte, como você está fazendo o relacionamento das Query´s através de parametro, ou seja, [i:589709da33]where codfunc=[b:589709da33]:codfunc[/b:589709da33] [/i:589709da33]
acontece que enquanto você não salva no banco o registro do qry1, o cursor está posicionado em um registro em branco e por consequencia, as outras querys estão posicionadas no ponto a que ele se refere, ou seja, vazio, o lance seria você trocar a forma como esse relacionamento é feito. ....mas qual seria, no caso a necessidade de você ver o que está na Qry2, Qry3 e 4 enquanto está inserindo na Qry principal??


Responder

Gostei + 0

20/07/2005

Adriano_servitec

valeu amigo,
Agora entendi como fazer, nao vi que quando dava um append abria um campo em branco no dbgrid, entao fiz assim quando da um append ja mando um edit com o codfunc e logo um post, assim ele fica gravado antes de terminar o lançamento.


Obrigado
T+


Responder

Gostei + 0

20/07/2005

Rjun

[quote=´Adriano_Servitec´]Ola amigos,
Com fazer pra resolver esse problema, sem precisar fazer chave primaria, pois nao curto essa de chave primaria da muito problema.


Tudo bem, cada um trabalha como quer, mas o básico em estrutura de dados é utilizar chave primária. Como que você faz para controlar que não se repita o código?

Com Paradox eu prefiro utilizar TTable. Você pode criar índices para ordenar seus registros sem que esses indices sejam chaves primárias. Com isso, você não precisar criar esse monte de query.


Responder

Gostei + 0

20/07/2005

Adriano_servitec

Ola RJun

Usei muto a TTable mais acontece que precisava criar chave primaria e arquivos indexados dava muito problema na hora de instalar em outra maquina, as vezes tinha que remolver os arquivos indexados para resolver algum problema com o BD, entao resolvi mudar para query e SQL achei mais interessante e bem mais completo, em questao de de controlar para nao repetir o codigo uso o locate fazendo uma checagem se o codigo ja esta cadastrado.


Bom eu acho que pra mim melhorou dessa forma, nao tenho mais vontade de criar chave primaria.

Blz
T+ amigo


Responder

Gostei + 0

20/07/2005

Rjun

Uma sugestão pra você que esta utilizando Paradox. Utilize Access como banco de dados. Você pode usar as queries como num Banco de Dados de verdade. Além de poder utilizar ADO.


Responder

Gostei + 0

20/07/2005

Adriano_servitec

Sugestao aceita amigo,


Mais como fazer?

Uso o database desktop para criar a tabela e ligo ela no ADO access? ou crio a tabela dentro do access?

Estou disposto, mais ai nao utilizarei mais o BDE?

Se vc me der uma pequena dica como fazer eu aceito pq nunca utilizer nada que nao seja tabela paradox e BDE


Valeu
T+


Responder

Gostei + 0

20/07/2005

Rjun

Você cria as tabelas no access. No Delphi você utiliza os componentes da palheta ADO.

ADOConnection para montar a conexão com o banco que você criou no access.

ADOQuery para você acessar as tabelas. Nela você pode usar order by, fazer joins.

BDE, esqueça. Qualquer máquina com Windows terá o MDAC instalado.

Para fazer a conexão no ADOConnection, coloque ele no DataModule. Dê um duplo clique. Irá abrir a janela de configuração. Clique no botão build, selecione o provider Microsoft Jet. Clique em avançar e aponte para o banco que você criou no access.

Pronto, agora e só apontar a propriedade connection de suas ADOquery´s para o connection que você criou.

Qualquer dúvida é só postar.


Responder

Gostei + 0

20/07/2005

Adriano_servitec

So uma duvidazinha amigo.

Eu abro o MicroSoft Access e crio um novo banco de dados?

Se for como fazer, desculpe nunca usei o access.


Responder

Gostei + 0

20/07/2005

Rjun

Sim, você abre o access, clica em novo e cria um novo banco de dados. Ai você pode criar as tabelas.


Responder

Gostei + 0

20/07/2005

Adriano_servitec

Ok vou tentar entao amigo

qualquer coisa posto ai

mais antes so uma pergunta

no paradox uma tabela tipo tbsalario fiz assim

codfunc N
codigo N
descricao A 50
ref a 10
valor $
desconto $


E no access como ficaria?


Outra pergunta, muita gente fala que o paradox nao aguenta muitos dados ele começa a fica lento e as fezes ate travar por falta de capacidade, no access posso incluir supomos uns 50.000 cadastros ou mais?


Responder

Gostei + 0

20/07/2005

Rjun

Eu to sem Access aqui, mas acho que ficaria a mesma coisa ou algo parecido com isso.

codfunc Numerico
codigo Numerico
descricao char 50
ref char 10
valor monetário
desconto monetário

Tenho um cliente que possui tabelas com mais de 200000 registros e nunca reclamou.


Responder

Gostei + 0

20/07/2005

Host

Cuidado com o tamanho do banco de dados e numero de usuarios .... seria bom q a base de dados ñ ultrapasse os 500 mb , e q ñ tivesse + que dez usuarios ... pois a performance cairia drasticamente .... outro detalhe é que vc pode compactar a base de dados de vez em qunado pelo ms access, e mais um probleminha... quando vc pesquisa em sql pelo access em sql, embora selecione os campos ele trara a tupla inteira, fato decorrente de ele ñ ser um SGDB. Mas entre paradox e Access , ainda fico com access.... ahh... se vc esta acustumado a ultilizar o dbexplores para testes com o bde, pesquisa em sql, te dou uma dica, nas pesquisas com data ñ ultiliza ´00/00/00´ ultiliza #00/00/00, que ira funcionar, e sempre atualize o MDAC, isto sim é importante.


Responder

Gostei + 0

20/07/2005

Adriano_servitec

Obrigado tambem pela dica Host

Rogerio nao consegui ativar o ADOQuery, pede uma senha

Q esta errado?

Criei uma tabelinha para fazer um teste, mais nao consigo conectar


Responder

Gostei + 0

20/07/2005

Rjun

No ADOConnection, coloque a propriedade LoginPrompt como false.


Responder

Gostei + 0

20/07/2005

Adriano_servitec

Ola amigo, fiz isso, mais quando vou colocar o active com true aparece uma mensagem: erro nao especificado


Sera que eh pq no meu micro nao esta funcionando corretamente o office?


Responder

Gostei + 0

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

Aceitar