Geelherme 1 Denunciar post Postado Dezembro 29, 2009 Olá amigos... Estive a criar um botao que insere informações em um banco de dados Firebird, mas tem um campo IDLIGACOES que é do tipo AUTO_INCREMENT.. como fazer com ele? abaixo vai o codigo... DM.DataModule1.ZTable1.Insert; DM.DataModule1.ZTable1.FieldByName('CLIENTE').Value := 'Teste'; DM.DataModule1.ZTable1.FieldByName('IDLIGACOES').Value := ''; DM.DataModule1.ZTable1.Post; Compartilhar este post Link para o post Compartilhar em outros sites
flavioavilela 0 Denunciar post Postado Dezembro 29, 2009 bom, até onde eu sei, basta você levar apenas o parametro Cliente, o IDLIGACOES nao precisa passar nao, pois como é um autoincremento, quando você da um insert e posteriormente da um post, ele já insere uma linha com o cliente passado e o IDLIGACOES um numero a mais do que o anterior, automatico... Compartilhar este post Link para o post Compartilhar em outros sites
wllf 2 Denunciar post Postado Dezembro 29, 2009 Colega no MySQL + Delphi ele também gera um código auto Increment sem precisar passar um valor do respectivo campo, só entro com os valores dos campos restantes de tabela. Compartilhar este post Link para o post Compartilhar em outros sites
Humberto - S.O.S. 2 Denunciar post Postado Dezembro 31, 2009 Auto incremento é um campo que ja gera o numero automatico, o que pode ocorrer fazendo isso é somente gerar erro no banco de dados. Compartilhar este post Link para o post Compartilhar em outros sites
Discorpio 1 Denunciar post Postado Janeiro 1, 2010 Boa tarde a todos. Para criar um campo auto incremento no Firebird, voce precisa antes criar um Generator. Faça assim: 1º) Dentro do console do Firebird ou até mesmo do IBExpert, onde voce criou o banco, na instrução SQL voce digita assim: Create Generator GEN_ID_FUNC; Set Generator GEN_ID_FUNC to 0; Pronto, acaba de criar um gerador para uma tabela Funcionários por exemplo e configurou o seu valor inicial para 0 (zero). Depois vamos criar uma Trigger (Gatilho) ainda dentro do console do Firebird ou dentro do IBExpert, com a seguinte instrução SQL: SET TERM ^ ; CREATE TRIGGER AUTO_INC_FUNC FOR FUNCIONARIO ACTIVE BEFORE INSERT POSITION 0 AS begin if (new.cod_func is null) then new.cod_func = gen_id(gen_id_func, 1); end ^ SET TERM ; ^ Agora lá na aplicação em Delphi, voce vai colocar o seguinte código: with DM.DataModule1.ZTable1 do begin FieldByName('IDLIGACOES').Required := False; Append; FieldByName('CLIENTE').Value := 'Teste'; Post; end; Repare que eu configurei a propriedade Required do campo autoincremento IDLIGACOES como false, para que ele possa passar valores nulos e não gerar erro, pois ele vai autoincrementado dentro do banco, através da Trigger (Gatilho) que criamos) lá. Essa propriedade "Required" pode ser configurada também via Object Inspector, onde a mesma possa ser configurada apenas uma única vez. Repare também que eu usei o método Append ou invés de Insert, que na verdade tem a mesmo função de colocar a tabela em modo de inserção, porém há uma pequena diferença, o Append cria uma estrutura de registro em branco no final da tabela, enquanto que o Insert, cria a estrutura em branco onde estiver posicionado o ponteiro de registros da tabela. Ex. Uma tabela que contenha 50 registros e o ponteiro está posicionado no nº 25 (meio da tabela), o Insert insere uma posição acima do 25, renomeando o 25 para 26. Pode parecer bobagem, porém essa renumeração só feita dentro dos ponteiros internos da tabela, e não no campo autoincremento, Por essa razão, sempre gosto de inserir no final da tabela com o Append. O Senhor é meu Pastor e nada me faltará (Sl. 23:01). Jorge da Silva Abreu Compartilhar este post Link para o post Compartilhar em outros sites
Geelherme 1 Denunciar post Postado Janeiro 18, 2010 Gostaria de agradecer a todos que responderam Jorge, a sua resposta foi excelente. Todos os meus problemas estavam nesse Required, que eu não sabia dessa possibilidade de fazê-lo dessa maneira. O Trigger e o Generator já estavam criados, então não precisei fazê-los, mas se alguém quiser usar o auto increment, basta seguir as instruções, estão todas corretas. Agradeço imensamente pela ajuda amigo, tenha um bom dia. Guilherme L. Chaves Compartilhar este post Link para o post Compartilhar em outros sites
CRISTOVAM 0 Denunciar post Postado Maio 10, 2010 Amigo em que componente ou onde coloco este código la no delphi? with DM.DataModule1.ZTable1 do begin FieldByName('IDLIGACOES').Required := False; Append; FieldByName('CLIENTE').Value := 'Teste'; Post; Compartilhar este post Link para o post Compartilhar em outros sites