Bonjour à tous,
J'ai une table client dont la clé primaire est Alphanumérique
Code....Nom
1....Marcel
2....José
4....Alfred
Si je fais cette procédure tout ce passe bien :
Mon probleme est que si la table client ressemble plutôt à çela :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 function ProchainCodeLibre(Table, Champ: String; Option: Byte): Integer; Begin result := 0; With ModuleDeDonnee.ADOQueryX do Begin if Option = 1 then //.... //.... end; if Option = 2 then Begin SQL.Clear; SQL.Add('SELECT Last('+Table+'.'+Champ+') AS LastDeCode FROM '+ Table); Try Try Open; Result := Fields.Fields[0].AsInteger + 1; Except MessageDlg(Application.Title + ' a généré une erreur pendant l''éxécution de : ' +#10+#13 + SQL.Text +#10+#13 + 'Noter ce message et contacter le service Technique', mtError, [mbOk], 0); end; Finally Close; end; end; end; end;
Code..........Nom
1...............Marcel
2...............José
4...............Alfred
MT.............Mathieu
J'ai donc une erreur sur la ligne :
Result := Fields.Fields[0].AsInteger + 1;
forcément puisque 'MT' n'est pas numérique.
J'aurais aimé qu'il me retourne 'MU' par exemple.
Ma question :
Connaissez vous un moyen simple pour trouver le prochaine code dispo ? d'un champs alohanumérique.
Où suis-je obligé de tester les cas alpha et numérique séparer pour sortir un code ?
Partager