un palier ???
Ce code est exemple SQL pour MySQL !
Je ne connais pas Absolute Database, je sais que cela remplace le BDE,
il te faut consulter leur documentation sur les possibilité SQL 92 comme
CASE WHEN et le SQL avancé comme les variables !
D'ailleurs en MySQL, dans une clé primaire composé, le champ AutoInc est relatif au premier champ de la clé, voir l'équivalent en ABS
Si ce ABS n'est pas assez évolué pour fournir un SQL avancé, il te faut le coder manuellement !
Pour le
TClientDataSet, tu pourrais chercher :
Home > Delphi/C++ Components > Absolute Database > Client Dataset Delphi Example
C'est un DataSet tout à fait classique que l'on peut gérer manuellement en mémoire
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| ClientDataSet.Close();
ClientDataSet.FieldDefs.Clear();
ClientDataSet.FieldDefs.Add('Champ1', ftInteger);
ClientDataSet.FieldDefs.Add('Champ2', ftString, 10);
ClientDataSet.FieldDefs.Add('Champ3', ftBoolean);
ClientDataSet.FieldDefs.Add('Champ4', ftDateTime);
ClientDataSet.FieldDefs.Add('Champ5', ftWideString, 10);
ClientDataSet.CreateDataSet();
ClientDataSet.Append();
ClientDataSet.FieldByName('Champ1').AsInteger := ClientDataSet.RecordCount + 1;
ClientDataSet.FieldByName('Champ2').AsString := '->' + IntToStr(ClientDataSet.FieldByName('Champ1').AsInteger);
ClientDataSet.FieldByName('Champ3').AsBoolean := Odd(ClientDataSet.FieldByName('Champ1').AsInteger);
ClientDataSet.FieldByName('Champ4').AsDateTime := Now();
ClientDataSet.Post(); |
un code vite fait, je te laisse adapter et corriger les fautes
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
| for i := 0 to ABS.FieldDefs.Count - 1 do
CDS.FieldDefs.Add(ABS.FieldDefs[i].FieldName, ABS.FieldDefs[i].DataType);
CDS.FieldDefs.Add('cde', ftInteger);
CDS.CreateDataSet();
ABS.First();
while not ABS.EOF do
begin
CDS.Append();
for i := 0 to CDS.Fields.Count - 1 do
CDS.Fields[i].Value := ABS.Fields[i].Value;
if CDS.FieldByName('chp').AsString = chpprecedent then
Inc(Compteur);
else
Compteur := 1;
CDS.FieldByName('cde').AsInteger := Compteur;
chpprecedent := CDS.FieldByName('chp').AsString;
CDS.Post();
ABS.Next();
end; |
Partager