Fórum Problemas com campo autoincrement(Firebird) #325462
17/07/2006
0
Tenho um banco com 2 tabelas e em cada uma delas criei um campo autoincrement, mas estou tendo problemas, pois quando tento salvar um registro recebo a seguinte mensagem de erro: Field value required.
Já fui no ClientDataSet e na Query e desliguei a propriedade Required dos campos, as opções pfInKey da propriedade ProviderFlags também estão desligadas, mas o erro persiste. Alguma outra dica??
Desde já agradeço.
Abçs.
Fabiano_aprendiz
Curtir tópico
+ 0Posts
17/07/2006
Aersoftware
Eu uso isso, e como eu gosto de ter o código gerado logo que insiro um nome registro, ainda coloco um código no evento OnNewRecord do ClientDataSet. Posso te passar ele quando chegar em casa.
Gostei + 0
17/07/2006
Fabiano_aprendiz
Os generators e as triggers foram criados, e o problema ocorre mesmo assim. Ficarei grato se puder me passar o código.
abçs
Gostei + 0
17/07/2006
Jlimajr
Usando um generator assim:
procedure TForm1.Button1Click(Sender: TObject); begin with dm.qrygeracodigo do begin close; sql.clear; sql.add(´SELECT CAST(GEN_ID(gen_empresas_id,1) AS INTEGER) AS COD FROM RDB$DATABASE´); open; dm.ibtb1.append; dm.ibtb1.FieldByName(´CODEMPR´).AsInteger:= DM.qrygeracodigo.fieldbyname(´COD´).asinteger; end;
Mais tambem naum sei se está correto.
Gostaria de tambem sanar esta duvida.
Gradecido.
Gostei + 0
17/07/2006
Fabiano_aprendiz
Alguém já passou por isso?
Gostei + 0
17/07/2006
Aersoftware
O código que uso no evento OnNewRecord do ClientDataSet é o seguinte:
var ResultSet : TCustomSQLDataSet; SQLstmt : string; begin SQLstmt := ´select gen_id(GEN_TABELA_ID, 1) ´+ ´as VALOR from RDB$DATABASE;´; ResultSet := nil; try ConexaoFb.Execute(SQLstmt, nil, @ResultSet); if Assigned(ResultSet) then ClientDataSetCAMPO_CODIGO.AsInteger := ResultSet.FieldByName(´VALOR´).AsInteger; finally ResultSet.Free; end;
Onde em GEN_TABELA_ID vai o nome do gerador criado e em
ClientDataSetCAMPO_CODIGO vai o nome dado ao TClientDataSet seguido do nome dado ao campo de chave primária.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)