Campo codigo em um DBedit
como faço para que o campo código de cliente em um dbedit entre com numeração automatica
Ou seja, a cada novo cliente o campo codigo gere uma numeração automatica e não sobreponha uma a outra?
Ou seja, a cada novo cliente o campo codigo gere uma numeração automatica e não sobreponha uma a outra?
Ulisses R.l.c
Curtidas 0
Respostas
Jcmsistemas
16/01/2005
[quote:471b9f08dd=´Ulisses R.L.C´]como faço para que o campo código de cliente em um dbedit entre com numeração automatica
Ou seja, a cada novo cliente o campo codigo gere uma numeração automatica e não sobreponha uma a outra?[/quote:471b9f08dd]
Se fosse para um cadastro de clientes, veja exemplo:-
[b:471b9f08dd]procedure TFmCliente.BitBtn5Click(Sender: TObject);
var c: integer;
jam: string;
begin
dm.Cliente.Refresh;
dm.Cliente.Insert;
if dm.Cliente.RecordCount = 0 then
jam := ´00001´
else
begin
dm.Cliente.IndexName := ´Ind_Codigo´;
dm.Cliente.Last;
c := dm.ClienteCodigo.AsInteger + 1;
jam := formatcurr(´00000´,c);
end;
dm.ClienteCodigo.AsString := jam;
dm.Cliente.Refresh;
end;[/b:471b9f08dd]
Ou seja, a cada novo cliente o campo codigo gere uma numeração automatica e não sobreponha uma a outra?[/quote:471b9f08dd]
Se fosse para um cadastro de clientes, veja exemplo:-
[b:471b9f08dd]procedure TFmCliente.BitBtn5Click(Sender: TObject);
var c: integer;
jam: string;
begin
dm.Cliente.Refresh;
dm.Cliente.Insert;
if dm.Cliente.RecordCount = 0 then
jam := ´00001´
else
begin
dm.Cliente.IndexName := ´Ind_Codigo´;
dm.Cliente.Last;
c := dm.ClienteCodigo.AsInteger + 1;
jam := formatcurr(´00000´,c);
end;
dm.ClienteCodigo.AsString := jam;
dm.Cliente.Refresh;
end;[/b:471b9f08dd]
GOSTEI 0
Isabelct
16/01/2005
Que banco de dados você está utilizando? Dependendo do banco, há algumas alternativas mais elegantes. De forma genérica, o que pode-se fazer é o seguinte:
Acho que isso resolve seu problema. Caso tenha dúvidas, manda pra cá!
function NovoCodigo(NomeTabela: string; NomeCampo: string): Integer; begin QueryConsulta.Clear; QueryConsulta.SQL.Add(´SELECT ´ + NomeCampo + ´ + 1 AS NOVOCODIGO´); QueryConsulta.SQL.Add(´FROM ´ + NomeTabela); QueryConsulta.Open; if QueryConsulta.FieldByName(´NOVOCODIGO´).AsInteger = 0 then Result := 1 else Result := QueryConsulta.FieldByName(´NOVOCODIGO´).AsInteger; end;
Acho que isso resolve seu problema. Caso tenha dúvidas, manda pra cá!
GOSTEI 0
Isabelct
16/01/2005
Desculpe, me enganei no post anterior. O código correto é este.
function NovoCodigo(NomeTabela: string; NomeCampo: string): Integer; begin QueryConsulta.Clear; QueryConsulta.SQL.Add(´SELECT MAX(´ + NomeCampo + ´) + 1 AS NOVOCODIGO´); QueryConsulta.SQL.Add(´FROM ´ + NomeTabela); QueryConsulta.Open; if QueryConsulta.FieldByName(´NOVOCODIGO´).AsInteger = 0 then Result := 1 else Result := QueryConsulta.FieldByName(´NOVOCODIGO´).AsInteger; end;
GOSTEI 0