Fórum Erro GenID #382255
27/07/2010
0
Glaucio Silva
Curtir tópico
+ 0Posts
28/07/2010
Wesley Yamazack
Seguinte meu velho, veja o parâmetro tableName e veja como ele esta, qual o nome do generator que você criou no banco de dados ?
Pois sem dúvidas você esta com o generator errado, na hora de executar o seu script
Veja e me fale. Qualquer coisa manda o banco de dados (.FDB)
Um abraço
Wesley Y
Gostei + 0
29/07/2010
Glaucio Silva
Gostei + 0
29/07/2010
Wesley Yamazack
Qual é o conteúdo que você esta passando para tablename ?
Att,
Wesley Y
Gostei + 0
29/07/2010
Glaucio Silva
Um abração!
Gostei + 0
29/07/2010
Wesley Yamazack
A função eu conheço muito bem, pois fui eu quem a fiz naquela turma que você participou.
A questão é saber se você esta passando o nome do generator certo, pois o erro é de nome de Generator "GEN_CLIENTE_ID IS NOT DEFINED" , veja o nome do se generator por exemplo, o nome do mesmo é GEN_CLIENTES_ID, ou seja voce esta passando GENID('Cliente'), e não GENID('CLientes').
Veja se isso não resolve seu problema
Att,
Wesley Y
Gostei + 0
29/07/2010
Glaucio Silva
Gostei + 0
30/07/2010
Wesley Yamazack
Seguinte sua função
procedure TDM.GetID(DataSet: TDataSet);
begin
DataSet.Fields[0].AsInteger := GenID(Copy(DataSet.Name,4));
end;
Ela esta dando problema pois o nome do seu ClientDataSet é cdsCliente, e o nome do seu generator é GEN_CLIENTES_ID
Você tem que mudar e nome do seu cdsCliente para cdsClientes.
Att,
Wesley Y
Gostei + 0
02/08/2010
Glaucio Silva
var
I: Integer;
begin
for I := 0 to Pred(ComponentCount) do
if Components[I] is TClientDataSet then
TClientDataSet(Components[I]).OnNewRecord := GetID (<-Aqui no GetID que o ctrl+espaço não acha o mesmo)
end; No aguardo!
Gostei + 0
02/08/2010
Glaucio Silva
var
I: Integer;
begin
for I := 0 to Pred(ComponentCount) do
if Components[I] is TClientDataSet then
begin
TClientDataSet(Components[I]).OnNewRecord := GetID;
end;
end;
Gostei + 0
02/08/2010
Wesley Yamazack
Glaucio,
Você esta querendo fazer um method point, reescrever os método NewRecord, mas a assinatura do seu genID é diferente do NewRecord, e isso não funciona, a declaração dos parâmetros é a mesma, você terá que ver outro local para fazer isso, porém não desta forma com method pointer, pois não vai funcionar.
Quanto a dúvida inicial foi resolvido certo? Podemos fechar o chamado ?
Att,
Wesley Y
Gostei + 0
02/08/2010
Glaucio Silva
Gostei + 0
02/08/2010
Wesley Yamazack
Como os nomes eram bem parecidos genid e getid, acabei confundindo. O mesmo tem de funcionar, pois a assinatura é igual, fiz um teste aqui e funcionou perfeitamente.
procedure TForm1.FormCreate(Sender: TObject);
var
I: Integer;
begin
for I := 0 to Pred(ComponentCount) do
if Components[I] is TClientDataSet then
begin
TClientDataSet(Components[I]).OnNewRecord := GetID;
end;
end;
procedure TForm1.GetID(DataSet: TDataSet);
begin
ShowMessage('');
end;
O exemplo funciona de forma perfeita, agora sua dúvida inicial não foi esta, para resolver este problema, se o mesmo persistir você tem que abrir outro chamado, um chamado para cada dúvida.
Att.
Wesley Y
Gostei + 0
08/08/2010
Wesley Yamazack
Um abraço
Wesley Y
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)