Voila j'ai ce petit code afin d'enregistrer un nouveau client.
La table CLIENT comprend a 22915 clients

Lorsuqe je fais le post, il se passe prés de 15 à 20 secondes pour l'enregistrement en local, mais sur un serveur prés de 30 secondes

Comment faire pour rendre plus rapide l'enregistrement
J'ai essayé avec un tblclient.insert et tblclient.post c'est pareil

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
With UDonnees.QryInsert do
          begin
           close;
           sql.clear;
           sql.add('INSERT INTO CLIENT (CODE_CLI,NOM_CLI,TYPE_CLIENT, ');
           sql.add('PROPRIETAIRE, DATE_VALIDITE, NOM_ADRESSE, ATTENTION_DE,');
           sql.add('POINT_FIDELITE, SOLDE_ACOMPTE, TYPE_FINITION,');
           sql.add('ORDINATEUR, EMAIL_CLI, TYPE_PRESENTATION,NUM_INTRA,');
           sql.add('TYPE_PAPIER, NB_BL_EN_COURS, NUM_TVA, SOLDE_ANNUEL,');
           sql.add('SOLDE_CUMULE, NB_FACTURES, NOM_HABILITE1, NOM_HABILITE2,');
           sql.add('NOM_HABILITE3,NOM_HABILITE4,NOM_HABILITE5, NOM_HABILITE6,');
           sql.add('TEL_HABILITE1,TEL_HABILITE2,TEL_HABILITE3, TEL_HABILITE4,');
           sql.add('TEL_HABILITE5,TEL_HABILITE6, ADR_CLI, ADR1_CLI,INTRA,');
           sql.add('CP_CLI, VILLE_CLI,TEL_CLI,ACCES_CLI,VENDEUR, CREE_LE)');
           sql.add(' values(:code,:nom,:type,:proprio,:validite,:nom_adr,');
           sql.add(':attention, :point, :solde, :finition, :ordi, :email,');
           sql.add(':presentation,:numintra, :papier, :bl, :tva, :annuel, :cumule, ');
           sql.add(':factures, :hab1, :hab2, :hab3, :hab4, :hab5, :hab6, ');
           sql.add(':tel1, :tel2, :tel3, :tel4, :tel5, :tel6, :adr, :adr1, ');
           sql.add(':intra, :cp, :ville, :tel, :acces, :vendeur, :cree_le)');
          end;
        end
       Else
        With UDonnees.QryInsert do
          begin
           close;
           sql.clear;
           sql.add('UPDATE CLIENT set CODE_CLI = :code,');
           sql.add('NOM_CLI                    = :nom, ');
           sql.add('TYPE_CLIENT                = :type,');
           sql.add('PROPRIETAIRE               = :proprio,');
           sql.add('DATE_VALIDITE              = :validite,');
           sql.add('NOM_ADRESSE                = :nom_adr,');
           sql.add('ATTENTION_DE               = :attention,');
           sql.add('POINT_FIDELITE             = :point,');
           sql.add('SOLDE_ACOMPTE              = :solde,');
           sql.add('TYPE_FINITION              = :finition,');
           sql.add('ORDINATEUR                 = :ordi,');
           sql.add('EMAIL_CLI                  = :email,');
           sql.add('TYPE_PRESENTATION          = :presentation,');
           sql.add('TYPE_PAPIER                = :papier,');
           sql.add('NB_BL_EN_COURS             = :bl,');
           sql.add('NUM_TVA                    = :tva,');
           sql.add('NB_FACTURES                = :factures,');
           sql.add('NOM_HABILITE1              = :hab1,');
           sql.add('NOM_HABILITE2              = :hab2,');
           sql.add('NOM_HABILITE3              = :hab3,');
           sql.add('NOM_HABILITE4              = :hab4,');
           sql.add('NOM_HABILITE5              = :hab5,');
           sql.add('NOM_HABILITE6              = :hab6,');
           sql.add('TEL_HABILITE1              = :tel1,');
           sql.add('TEL_HABILITE2              = :tel2,');
           sql.add('TEL_HABILITE3              = :tel3,');
           sql.add('TEL_HABILITE4              = :tel4,');
           sql.add('TEL_HABILITE5              = :tel5,');
           sql.add('TEL_HABILITE6              = :tel6,');
           sql.add('ADR_CLI                    = :adr, ');
           sql.add('ADR1_CLI                   = :adr1,');
           sql.add('CP_CLI                     = :cp,  ');
           sql.add('VILLE_CLI                  = :ville,');
           sql.add('TEL_CLI                    = :tel,');
           sql.add('ACCES_CLI                  = :acces,');
           sql.add('INTRA                      = :intra,');
           sql.add('NUM_INTRA                  = :numintra');
           sql.add('where code_cli             = :ancien');
           ParamByName('ancien').asstring := ancien_client;
          end;
         With UDonnees.QryInsert do
          begin
           parambyname('code').asstring :=  EdtCode_Client.text;
           parambyname('nom').asstring := EdtNom_Client.text ;
           IF EdtTypeClient.text = 'O' then
            parambyname('type').asstring    := 'P'
           else
            parambyname('type').asstring    := 'A';
           parambyname('proprio').asstring  := EdtProprietaire.text;
           parambyname('validite').asstring := EdtDateValidite.text;
           parambyname('nom_adr').asstring  := EdtNomclientAdr.text;
           parambyname('attention').asstring := EdtattentionDe.text;
           IF Trim(EdtNbPoints.text) <> '' then
            parambyname('point').AsInteger := StrToInt(EdtNbPoints.text)
           else
            ParamByName('point').AsInteger := 0;
           IF Trim(EdtSoldeACompte.text) <> '' then
            parambyname('SOLDE').asfloat  := StrToFLoat(EdtSoldeACompte.text)
           else
            parambyname('solde').asfloat :=  0;
           IF EdtFinition.text = '' then
            EdtFinition.text := 'M';
           parambyname('finition').asstring :=  EdtFinition.text;
           IF EdtOrdinateur.text = '' then
            EdtOrdinateur.text := 'N';
           parambyname('ordi').asstring := EdtOrdinateur.text;
           parambyname('email').asstring := EdtEmail.text;
           IF EdtTypepresentation.text = '' then
            EdtTypepresentation.text := 'A';
           parambyname('presentation').asstring :=EdtTypepresentation.text;
           parambyname('intra').asstring        :=EdtIntracommunautaire.text;
           parambyname('numintra').asstring     :=EdtnumIntra.text;
           if EdtTypePapier.text = '' then
            EdtTypePapier.text := 'B';
           parambyname('papier').asstring := EdtTypePapier.text;
           parambyname('bl').asstring     := EdtNumBl.text;
           parambyname('tva').asstring    := EdtNumeroTVA.text;
           IF FrmMenuPrincipal.ajout_client = true then
            begin
             parambyname('annuel').asfloat           := 0 ;
             parambyname('cumule').asfloat           := 0 ;
            end;
           IF TRIM(EdtNbfactures.text) <> '' then
            parambyname('factures').AsInteger := StrToInt(EdtNbfactures.text)
           Else
            if EdtTypeClient.text = 'O' then
             parambyname('FACTURES').asinteger       := 2
            else
             parambyname('FACTURES').asinteger       := 1;
           parambyname('hab1').asstring := EdtHabilite1.text;
           parambyname('hab2').asstring := EdtHabilite2.text;
           parambyname('hab3').asstring := EdtHabilite3.text;
           parambyname('hab4').asstring := EdtHabilite4.text;
           parambyname('hab5').asstring := EdtHabilite5.text;
           parambyname('hab6').asstring := EdtHabilite6.text;
           parambyname('tel1').asstring := EdtTelHabilite1.text;
           parambyname('tel2').asstring := EdtTelHabilite2.text;
           parambyname('tel3').asstring := EdtTelHabilite3.text;
           parambyname('tel4').asstring := EdtTelHabilite4.text;
           parambyname('tel5').asstring := EdtTelHabilite5.text;
           parambyname('tel6').asstring := EdtTelHabilite6.text;
           IF FrmMenuPrincipal.ajout_client = true then
            IF TRIM(LblDateEntree.caption) <> '' then
             parambyname('CREE_LE').asdate           := StrToDate(LblDateEntree.caption)
            else
             parambyname('CREE_LE').asdate           := Date;
           parambyname('adr').asstring               := EdtAdr_Client.text;
           parambyname('adr1').asstring              := EdtAdr1_Client.text;
           parambyname('cp').asstring                := EdtCode_Postal.text;
           parambyname('ville').asstring             := EdtVille_Client.text;
           parambyname('tel').asstring               := EdtTelephone.text;
           parambyname('acces').asstring             := 'F';
           IF FrmMenuPrincipal.ajout_client = True then
            parambyname('VENDEUR').asstring        := EdtCodeVendeur.text;
           ExecSQL;
           close;
          end;