Bonjour à tous!
Voici, j'ai deux tables, un maitre et un esclave, la table Contact est maitre de la table Factures.
Dans ma table Factures, j'ai un champ appelé Numfact, il contient les numeros de factures. je gère par programmation son auto increment .
Le probleme se situe à ce niveau, la table Contact contient les noms des contacts et ces contacts ont des factures. Lorsque je voudrais ajouter une nouvelle facture , il le fait selon le nombre de factures de ce contact et non selon le nombre de factures de la table.
c'est à dire ceci:
si j'ajoute premièrement dans ma table Contact un nouveau contact et que je veux créer un facture à ce dernier , il commencera par 1, or il y a deja des factures dans la table Factures, et le numero 1 existe deja .
il ne tient pas compte de la dernière facture de la table , mais de la dernière facture du contact. Pour ce contact , c'est sa première facture. il incremente selon le nombre de factures de chaque contact et non selon le nombre de facture de la table.
Or je voudrais qu'il tienne compte de la dernière facture de la table et non celle du Contact.
voici mon code , dans l'evenement OnShow de ma form ajoutFacture , je fais ceci:
ici je place la table Facture à la fin et j'incremente le numero de +1;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 procedure TAjoutFactForm.FormShow(Sender: TObject); var nNumfact:variant; begin DM.tbFacture.Last; nNumfact:=DM.tbFactureNUMFACT.Value + 1; Edit_numfact.Text:=IntToStr(nNumfact); end;
ensuite ici , je fais une verification avant d'encoder la facture dans la table ;
ici il regarde dans la table si ce numero existe , et s'il existe , il doit incrementer le dernier numero.
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 procedure TAjoutFactForm.Button111Click(Sender: TObject); var resultat :variant; begin resultat:=DM.tbFacture.Locate('NUMFACT',StrToInt(Edit_numfact.Text),[]); if resultat then begin MessageDlg(' Ce numéro existe déjà !!! ', mtInformation,[mbOk],0); Edit_numfact.Text:=InttoStr(DM.tbFactureNUMFACT.Value + 1); Edit_numfact.SetFocus; exit; end; .. ..... end;
mais helas , il regarde par rapport au nombre de facture du contact et non par rapport à la table.
je ne sais pas comment regler cette situation .
merci pour votre aide à tous.
Partager