| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
Diegohilario3 Aprendiz

Registrado: Sábado, 17 de Novembro de 2007 Mensagens: 143
|
Enviada: Qui Jun 26, 2008 7:22 pm Assunto: Problemas Com Projeto(Comp. ZEOS) |
|
|
Pessoal, to desenvolvendo um sistema aqui por video aula, ele se chama SISCOM, ele é com intuito academico por isso eu to seguindo umas video aula e colocando ele com a opção de acesso ao FIREBIRD e ao MYSQL. Ok até ai tudo bem.Resolvi uns problemas de campos com nomes diferentes em ambos os bancos.Estou fazendo o Formulario de Cadastro de produtos, com o MySQL deu tudo certo, ele entra adiciona os registro, gera o codigo autoincremento, tudo ok, mais no firebird ele entra , consigo visualizar os registro que inclui manualmente pelo IBEXPERT, mais ele não ta aceitando a inclusão de novos registros. Para facilita o entendimento dos amigos, vou posta uma sequencia de imagens para vocês entenderem melhor.Segue ai a baixo....
Aqui estou configurando para o GENERATOR do FIRBIRD funcione no sistema
Como o sistema tem acesso a dois bancos,ai esta os campos da tabela produto de ambos os bancos.Estão iguais
Estou entrando no sistema, escolhendo FB aonde esta acontecendo o erro.
Entrei no Formulario Produto
Tentando incluir um registro
O erro
Bom pessoal, eu sou novato, então achei essa a melhor forma de voces verem a realidade do problema. Se necessitarem de mais partes do sistema me falem.Preciso resolve isso logo, pois vai ser minha monografia.
Obrigado. |
|
| Voltar ao Topo |
|
 |
fabinho Aprendiz


Registrado: Quinta-Feira, 27 de Fevereiro de 2003 Mensagens: 122
|
Enviada: Qui Jun 26, 2008 7:29 pm Assunto: |
|
|
Cara o Zeos é bonzinho, ma aconselho usar o Fibplus.
Fabio. |
|
| Voltar ao Topo |
|
 |
Diegohilario3 Aprendiz

Registrado: Sábado, 17 de Novembro de 2007 Mensagens: 143
|
Enviada: Qui Jun 26, 2008 7:33 pm Assunto: |
|
|
Sim, mais agora não tenho mais tempo de troca de componente. Infelizmente o tempo ta contra mim.
Minha esperança é alguem conseguir me ajuda com ele. |
|
| Voltar ao Topo |
|
 |
fabinho Aprendiz


Registrado: Quinta-Feira, 27 de Fevereiro de 2003 Mensagens: 122
|
Enviada: Qui Jun 26, 2008 7:38 pm Assunto: |
|
|
| Diegohilario3 escreveu: | Sim, mais agora não tenho mais tempo de troca de componente. Infelizmente o tempo ta contra mim.
Minha esperança é alguem conseguir me ajuda com ele. |
Entendo. A água do TCC tá subindo né? Já passei por isso, mas consegui mudar a tempo. Não sei a quantas anda seu projeto e nem sobre o que é, mas a migração pro firebird é rápida compenheiro. Se você tem 30 tabelas e um conhecimento básico em Delphi, acredito que em dois dias você migra tranquilo.
Boa sorte no seu TCC!
Fabio. |
|
| Voltar ao Topo |
|
 |
Diegohilario3 Aprendiz

Registrado: Sábado, 17 de Novembro de 2007 Mensagens: 143
|
Enviada: Qui Jun 26, 2008 9:39 pm Assunto: |
|
|
| Pessoal, meu sistema não precisa de migra nada, ele ta funfando em dois Bancos, o negocio ta sendo esse erro ai que ta na imagem.Por favor alguem saberia me ajuda... |
|
| Voltar ao Topo |
|
 |
adriano_servitec Colaborador

Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Qui Jun 26, 2008 11:40 pm Assunto: |
|
|
O erro que esta acusando ai é que o banco esta reclamando da falta da chave secundária.
Ela esta vindo nula quando vc esta incluindo um dado ai.
Vc deve trazer a referencia da FK no BeforePost (antes de gravar) desta tabela produto ai.
Exemplo
| Código: | | tabquerecebeaFK.fieldbyname('campo').asInteger := tabquemandaFK.fieldbyname('campo').asInteger; |
E acho que teu professor esta errado, jamais deve deixar required false de uma referencia de chave secundária, se não para que serveria a referencia entre uma tabela e outra? Requered = false pode ser para a PK se for um autoincremento que vem pelo trigger no beforeinsert, que vc não precisa colocar valor nela, assim quando for fazer um update na tabela ela não vai reclamar violação de chave primaria. _________________ Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree |
|
| Voltar ao Topo |
|
 |
Diegohilario3 Aprendiz

Registrado: Sábado, 17 de Novembro de 2007 Mensagens: 143
|
Enviada: Sex Jun 27, 2008 1:01 am Assunto: |
|
|
| Obrigado Adriano , parte do problema resolvido. Ta gravando certinho, mas tem um porem, o campo CODIGO auto incremento não ta aparecendo na hora, eu preciso sai do sistema e entra novamente para ele aparecer.Alguem saberia de algo a respeito ? |
|
| Voltar ao Topo |
|
 |
adriano_servitec Colaborador

Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Sex Jun 27, 2008 9:04 am Assunto: |
|
|
Eu particularmente não gosto de ficar mostrando o AutoInc no programa, mais ja fiz uma assim para mostrar
1º criei uma SP
| Código: | CREATE PROCEDURE AUTO_INCREMENTO
RETURNS (
CODIGO INTEGER)
AS
begin
codigo = GEN_ID(gen_autoic_id,1);
suspend;
end |
Coloquei um StoreProc do DataModule chamando a Procedure
Depois no AfterInsert(depois do Insert) do clientdataset fiz assim
| Código: | procedure Tdm.cdsControleSindcialAfterInsert(DataSet: TDataSet);
begin
SPAutoIncremento.ExecProc; //executando a SP pelo componente
cdsControleSindicial.FieldByName('ID').AsInteger:= SPAutoIncremento.Params[0].AsInteger;
end; |
Só que o caso é que os Generator's não tem controle transacional. Ou seja, eles não dependem da transação para efetivar suas alterações, sendo assim, se vc incrementou um deles, mesmo que vc dê um Rollback, o valor será persistente.
Resumindo, a cada insert vai ser disparado um novo Incremento pelo generators. _________________ Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree |
|
| Voltar ao Topo |
|
 |
Diegohilario3 Aprendiz

Registrado: Sábado, 17 de Novembro de 2007 Mensagens: 143
|
Enviada: Sex Jun 27, 2008 9:31 am Assunto: |
|
|
Mais uma vez muito obrigado Adriano pela ajuda.Eu crio uma Trigger que dispara um Generator no Firebird,então o eu ja tenho o esquema de gerar o autoincremento, e ele esta funcionando corretamente.Esta pegando é que ele não aparece na hora, só vai aparece depois que reinicio o Sistema.Precisaria de alguma "gabiarra" para atualiza essa generator ali na hora de inclusão dos registros.
Desde ja , muito obrigado . |
|
| Voltar ao Topo |
|
 |
adriano_servitec Colaborador

Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
|
| Voltar ao Topo |
|
 |
Diegohilario3 Aprendiz

Registrado: Sábado, 17 de Novembro de 2007 Mensagens: 143
|
Enviada: Sex Jun 27, 2008 9:50 am Assunto: |
|
|
Desculpa a ignorancia, é que sou novato , estou fazendo tudo seguindo umas video aula,então oque eu colocaria nesse evento ?  |
|
| Voltar ao Topo |
|
 |
adriano_servitec Colaborador

Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
|
| Voltar ao Topo |
|
 |
adriano_servitec Colaborador

Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Sex Jun 27, 2008 9:58 am Assunto: |
|
|
Tem gente que gosta de pegar o generatos atraves de um query assim
| Código: | | select * FROM SP_GEN_AUTOINC_ID |
Depois mostrar assim no aplicativo, por exemplo num label
| Código: | With Query1 do
begin
If active then close; //caso esteja aberta, fechar
Open; //ao abrir, será gerado o proximo número <se>
end;
Label1.caption:= IntToStr(Query1ID.value); //mostra o número <no> no label
//caso queira que o label mostre o número formatado Ex: 1000 mostrar 1.000, dispense a linha acima e use esta:
{Label1.caption:= FormatFloat('##,##0', Query1ID.value);} |
Existem varias formas de se fazer isso, depende de como vc queira fazer. _________________ Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree |
|
| Voltar ao Topo |
|
 |
|