Bonjour,
J'ai un projet en C/S.
J'essaye d'établir une connection via SqlConnect, sans résultat
NumConnexion = SQLConnecte(<NomProjet.wdd>, "", "","HYPER FILE")
mais NumConnexion reste toujours 0
comment faire ?
Bonjour,
J'ai un projet en C/S.
J'essaye d'établir une connection via SqlConnect, sans résultat
NumConnexion = SQLConnecte(<NomProjet.wdd>, "", "","HYPER FILE")
mais NumConnexion reste toujours 0
comment faire ?
Bonjour
Commence par afficher le message d'erreur (SQL.MesErreur) en ayant fait SQLInfogene() avant, comme c'est expliqué sur la page d'aide de la fonction
Ensuite il faudrait peut être passer quelques infos supplémentaires: un utilisateur, un mot de passe et le nom de la base de données
Pascal H.
phapps.e-monsite.com
Bonjour,
Le code d'erreur est 0 sans message explicatif
Je souhaite utiliser SqlConnecte pour faire la même
chose avec le code suivant qui marche
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 HFCS is Connection // Description de la connexion HFCS..User = "admin" HFCS..Password = "" HFCS..Server = "WD17:4900" HFCS..Database = "hierarchy" HFCS..Provider = hAccessHFClientServer HFCS..Access = hOReadWrite HFCS..ExtendedInfo = "Infos étendues" HFCS..CursorOptions = hClientCursor // Ouverture de la connexion IF HOpenConnection(HFCS) = False THEN TestWriteResult(twrError , HErrorInfo(hErrFullDetails)) ELSE TestWriteResult(twrInfo,"ok") HCloseConnection(HFCS) END
Hello,
EN nous montrant ton code de connexion et de traitement, nous pourrions t'apporter des solutions, je pense.
le savoir est dans les livres, 'the magic touch F1'
Amicalement
Eric
Bonjour,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 liConNum is entier lsMyServer is chaine = "WD17:4900" lsMyDataBase is chaine = "MyDB" liConNum = SQLConnecte(lsMyserver, "admin", "", lsMyDatabase, "Hyper File") if liConNum = 0 then SQLInfoGene() error("Faute:"+sql.erreur+RC+sql.MesErreur) else info("Connected with "+lsMyDatabase) end
Bonjour
L'aide ne dit pas grand chose au sujet de SQLConnecte avec HFSQL C/S
Ce qui est sur c'est que la syntaxe que tu utilises ne fonctionne pas
J'ai essayé pas de mal de syntaxes différentes et rien ne semble fonctionner
Ceci dit j'arrive à utiliser les ordres SQL... en faisant comme ça :
Dans cet exemple l'analyse que j'utilise n'est pas celle du projet en cours, c'est surement plus simple si c'est le cas
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 cnxHF est une Connexion nNumCnx est un entier sAna est une chaîne = "C:\Temp\MonAnalyse.wdd" sPwdAnalyse est une chaîne = "admin" // Mot de passe analyse (si nécessaire) sPwdFic est une chaîne = "admin999" // Mot de passe des fichiers (si nécessaire) // Paramètres de connexion HFSQL C/S sDataBase est une chaîne = "MaBaseHFCS" sServerHFCS est une chaîne = "localhost:4900" sUserHFCS est une chaîne = "admin" sPwdHFCS est une chaîne = "mon_mot_de_passe_hfcs" nNumCnx = SQLConnecte(sAna, "", sPwdAnalyse) IF nNumCnx = 0 THEN SQLInfoGene() Erreur("Erreur SQLConnecte : " + SQL.MesErreur) ELSE SI HOuvreAnalyse(sAna, sPwdAnalyse) ALORS cnxHF..Provider = hAccèsHFClientServeur cnxHF..Serveur = sServerHFCS cnxHF..BaseDeDonnées = sDataBase // Base de données HFSQL C/S cnxHF..Utilisateur = sUserHFCS // utilisateur sur le serveur HFSQL C/S cnxHF..MotDePasse = sPwdHFCS // mot de passe de l'utilisateur sur le serveur HFSQL C/S SI PAS HOuvreConnexion(cnxHF) ALORS Erreur("Erreur HOuvreConnexion : " + HErreurInfo()) SINON HChangeConnexion("*", cnxHF) HPasse("*", sPwdFic) // dans cet exemple j'ai aussi un mot de passe au niveau des fichiers SI SQLExec("SELECT * FROM Article", "req1") ALORS SQLPremier("req1") SI PAS SQL.EnDehors ALORS Info(SQLCol("req1",1)) SINON SQLInfoGene("req1") Erreur("Erreur SQLExec : " + SQL.MesErreur) FIN FIN SINON Erreur("Erreur HOuvreAnalyse : " + HErreurInfo()) FIN END
Et pour pouvoir attaquer des fichiers HFSQL C/S sans passer par une analyse, il y a une astuce :
Utiliser une analyse vide et faire des HDeclareExterne sur les fichiers retournés par HListeFichier (la syntaxe qui spécifie une connexion)
C'est un peu lourd mais ça fonctionne dans tous les cas (voir Outils_SQL dans ma signature)
En espérant que ça puisse t'aider
Pascal H.
phapps.e-monsite.com
Hello,
Y'a un truc qui me chiffonne un tantinet.... Pourquoi vouloir passer par un SLQConnecte sur une base HFSQL (ou autre)??????
Pourquoi ne pas voir du côté d'une propriété 'connexion'?
Ou alors, j'ai loupé un truc dans la discussion.
le savoir est dans les livres, 'the magic touch F1'
Amicalement
Eric
Il y a un seul intérêt : si l'application doit se connecter à plusieurs types de bases avec des protocoles différents. Si l'application autorise ODBC par exemple, on n'a pas le choix
Dans les autres cas il n'y a strictement aucun, mais aucun intérêt : c'est s'imposer des limitations alors que tout est géré en natif
Pascal H.
phapps.e-monsite.com
Comme Pascal a dit !
Mon but est un composant qui se connecte à plusieurs BDD avec la même fonction WinDev qui est SqlConnecte,
je ne souhaite pas utiliser les ordres Hxxx c'est pour cela que je veux faire SqlExec et je ne souhaite pas utiliser le fichier
WDD
Je pense que Hyperfile n'est pas un serveur de BDD, vu qu'il est impossible de dialoguer avec lui en utilisant SqlConnecte
parceque dans ce cas il ne prend pas en considération le user & pass
Bonjour,
Oui effectivement ça m'aide boucoup et je t'en remercier, d'ailleur j'ai pensé avant à te contacter par rapport à ton Outils_SQL.
Ma conclusion est que SqlConnecte ne fonctionne pas avec un serveur HF C/S, si jamais quelqu'un dira le contraire ?.
Je compte surcharger le fonction SqlConnecte en mettant ta partie de code.
Encore merci
Le surcharge utilise le multisyntaxe
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 // Appel d'un serveur HF LOCAL sDataBase is string = "hierarchy" sServerHFCS is string = "WD17:4900" sUserHFCS is string = "admin" sPwdHFCS is string = "" nNumConnexion is int nNumConnexion = cUtil::SqlConnect(sServerHFCS,sDataBase,sUserHFCS,sPwdHFCS) IF SQLExec("SELECT * FROM Fonctions", "req1") THEN SQLFirst("req1") IF NOT SQL.Out THEN Trace(SQLCol("req1",1)) END ELSE SQLInfo("req1") TestWriteResult(twrError,"Erreur SQLExec : " + SQL.MesError) END
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 // Résumé : <SqlConnect pour serveur HF C/S> FUNCTION GLOBAL PUBLIC SqlConnect(pServerHFCS,pDataBase,pUserHFCS,pPwdHFCS) nNumConnexion is int sAna is string = fRepEnCours()+ "\TmpOrm.wdd" sPwdAnalyse is string = "" // Mot de passe analyse (si nécessaire) sPwdFic is string = "" // Mot de passe des fichiers (si nécessaire) cnxHF is Connection // Liste des fichiers sDBTableList is string sTable is string nNumConnexion = WL.SQLConnect(sAna, "", sPwdAnalyse) IF nNumConnexion = 0 THEN SQLInfo() ExceptionThrow(49,... "Erreur SQLConnecte sur DB HF C/S: " + ... "a échoué."+CR+... "Code erreur : " + SQL.Error +CR+... SQL.MesError... ) ELSE // Ouvre l'analyse IF HOpenAnalysis(sAna, sPwdAnalyse) = True THEN // Prépare la connection cnxHF..Provider = hAccessHFClientServer cnxHF..Server = pServerHFCS cnxHF..Database = pDataBase // Base de données HFSQL C/S cnxHF..User = pUserHFCS // utilisateur sur le serveur HFSQL C/S cnxHF..Password = pPwdHFCS // mot de passe de l'utilisateur sur le serveur HFSQL C/S // Ouvre la connection IF NOT HOpenConnection(cnxHF) THEN ExceptionThrow(50,"Impossible d'ouvrir le serveur HF C/S : " + pServerHFCS+CR+HErrorInfo(hErrFullDetails)) ELSE // Stocke la liste des table HF sDBTableList = HListFile(cnxHF) // Parcour la liste stockée FOR ALL STRING sTable OF sDBTableList SEPARATED BY CR // Importation logique dans l'analyse temporaire la description d'un fichier de données à partir d'un fichier de données HyperFileSQL existant <une à une> IF HDeclareExternal(sTable,ExtractString(sTable,1,"."),cnxHF) = False THEN ExceptionThrow(51,"Erreur HDéclareExterne : " + HErrorInfo(hErrFullDetails)) END END HChangeConnection("*", cnxHF) HPass("*", sPwdFic) // dans cet exemple j'ai aussi un mot de passe au niveau des fichiers END ELSE ExceptionThrow(52,"Erreur ouvreture d'analyse, vérifiez que le fichier : " +fRepEnCours()+ "\TmpOrm.wdd" +"existe et au bon format." +CR+ HErrorInfo(hErrFullDetails)) END END RESULT nNumConnexion
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 // Résumé : <SqlConnect pour autre serveur > FUNCTION GLOBAL PUBLIC SqlConnect(... pSource , ... pUser , ... pPass ,... pDataBaseName ,... pDataBaseType ,... pProviderOLEDB,... pOptionnelInformations... ) LOCAL nNumConnexion is int nNumConnexion = WL.SQLConnect(... pSource , ... pUser , ... pPass ,... pDataBaseName ,... pDataBaseType ,... pProviderOLEDB,... pOptionnelInformations... ) IF nNumConnexion = 0 THEN SQLInfo() ExceptionThrow(48,"La connexion à la source de données" + pSource + ... "a échoué."+CR+... "Code erreur : " + SQL.Error +CR+... SQL.MesError) END RESULT nNumConnexion
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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217 Code_sql est une Source de Données Pt_ht ,Tva , Pt_total sont des réels=0 Detail_sql est une Source de Données nom_sql est une chaîne="REQ_CHERCHE_RESID" NomDetail_sql est une chaîne ="REQ_CHERCH_DESGIN" SI NumConnexion <> 0 ALORS //------------------------------ requête pour remplir la table des designations Detail_sql= [ SELECT FACTURE_DETAIL.FACTURE_DETAIL_DESIGNATION, FACTURE_DETAIL.FACTURE_DETAIL_QTE, FACTURE_DETAIL.FACTURE_DETAIL_PU_TTC, FACTURE_DETAIL.FACTURE_DETAIL_PU_HT, FACTURE_DETAIL.FACTURE_DETAIL_TVA, FACTURE_DETAIL.FACTURE_DETAIL_CODE, FACTURE_DETAIL.FACTURE_DETAIL_ID_FACTURE, FACTURE_DETAIL.FACTURE_DETAIL_PT_TTC FROM FACTURE_DETAIL WHERE FACTURE_DETAIL.FACTURE_DETAIL_ID_FACTURE = '%1' ] SELON COMBO_cherche CAS 1 : // ----------------------- Résident Code_sql =[ SELECT CLIENT.CLIENT_NOM_PRENOM, FACTURE.FACTURE_REF AS FACTURE_REF, FACTURE.FACTURE_TOTAL_HT AS FACTURE_TOTAL_HT, FACTURE.FACTURE_TOTAL_TTC AS FACTURE_TOTAL_TTC, FACTURE.FACTURE_DATE AS FACTURE_DATE, FACTURE.FACTURE_ID FROM CLIENT, FACTURE WHERE FACTURE.FACTURE_ID_CLIENT = CLIENT.CLIENT_ID AND CLIENT.CLIENT_NOM_PRENOM = '%1' ] Code_sql=ChaîneConstruit(Code_sql , SAI_cherche) SI SQLExec(Code_sql,nom_sql)= Vrai ALORS // Traitement de la requête SQLPremier(nom_sql) SI SAI_cherche= SQLLitCol(nom_sql,1) ALORS GR_champ_nv..Visible=Vrai LIB_Réponse..Visible=Faux SAI_Résidant=SQLLitCol(nom_sql,1) SAI_NumFact=SQLLitCol(nom_sql,2) SAI_TotalHT=SQLLitCol(nom_sql,3) SAI_TotalTTC=SQLLitCol(nom_sql,4) SAI_Date=SQLLitCol(nom_sql,5) factureID est un entier =SQLLitCol(nom_sql,6) SQLFerme(nom_sql) Detail_sql=ChaîneConstruit(Detail_sql ,factureID) SI SQLExec(Detail_sql,NomDetail_sql)= Vrai ALORS TANTQUE SQLFetch(NomDetail_sql)=0 Pt_ht= SQLCol(NomDetail_sql,4) Tva = SQLCol(NomDetail_sql,5) SELON Tva CAS 1: Tva =0 CAS 2: Tva = 5.50 CAS 3: Tva = 19.60 AUTRE CAS FIN Pt_total=(Pt_ht*Tva )/100 +Pt_ht TableAjouteLigne(TABLE_detail,SQLCol(NomDetail_sql,6),SQLCol(NomDetail_sql,1),SQLCol(NomDetail_sql,2),SQLCol(NomDetail_sql,3),SQLCol(NomDetail_sql,4),Pt_total,SQLCol(NomDetail_sql,5)) FIN SINON // Échec de la requête : affichage d'un message explicatif SQLInfoGene(NomDetail_sql) Erreur("Erreur" + SQL.Erreur + "dans la requête : ", SQL.MesErreur) FIN SINON GR_champ_nv..Visible=Faux LIB_Réponse..Visible=Vrai FIN SINON // Échec de la requête : affichage d'un message explicatif SQLInfoGene(nom_sql) Erreur("Erreur" + SQL.Erreur + "dans la requête : ", SQL.MesErreur) FIN SQLFerme(nom_sql) CAS 2 : // -----------------------Numéro SS Code_sql =[ SELECT CLIENT.CLIENT_NOM_PRENOM, FACTURE.FACTURE_REF AS FACTURE_REF, FACTURE.FACTURE_TOTAL_HT AS FACTURE_TOTAL_HT, FACTURE.FACTURE_TOTAL_TTC AS FACTURE_TOTAL_TTC, FACTURE.FACTURE_DATE AS FACTURE_DATE, CLIENT.CLIENT_NumSec FROM CLIENT, FACTURE WHERE FACTURE.FACTURE_ID_CLIENT = CLIENT.CLIENT_ID AND CLIENT.CLIENT_NumSec = '%1' ] NumSec est un entier = Val(SAI_cherche) Code_sql=ChaîneConstruit(Code_sql,NumSec) SI SQLExec(Code_sql,nom_sql)= Vrai ALORS // Traitement de la requête SQLPremier(nom_sql) SI NumSec =SQLLitCol(nom_sql,6) ALORS GR_champ_nv..Visible=Vrai LIB_Réponse..Visible=Faux SAI_Résidant=SQLLitCol(nom_sql,1) SAI_NumFact=SQLLitCol(nom_sql,2) SAI_TotalHT=SQLLitCol(nom_sql,3) SAI_TotalTTC=SQLLitCol(nom_sql,4) SAI_Date=SQLLitCol(nom_sql,5) SINON GR_champ_nv..Visible=Faux LIB_Réponse..Visible=Vrai FIN SINON // Échec de la requête : affichage d'un message explicatif SQLInfoGene(nom_sql) Erreur("Erreur" + SQL.Erreur + "dans la requête : ", SQL.MesErreur) FIN SQLFerme(nom_sql) CAS 3 : // -----------------------Période Facture CAS 4 : // ----------------------- Date réaslisation de facture GR_champ_nv..Visible=Vrai Code_sql =[ SELECT CLIENT.CLIENT_NOM_PRENOM, FACTURE.FACTURE_REF AS FACTURE_REF, FACTURE.FACTURE_TOTAL_HT AS FACTURE_TOTAL_HT, FACTURE.FACTURE_TOTAL_TTC AS FACTURE_TOTAL_TTC, FACTURE.FACTURE_DATE AS FACTURE_DATE FROM CLIENT, FACTURE WHERE FACTURE.FACTURE_ID_CLIENT = CLIENT.CLIENT_ID AND FACTURE.FACTURE_DATE = '%1' ] Code_sql=ChaîneConstruit(Code_sql,SAI_cherche) SI SQLExec(Code_sql,nom_sql)= Vrai ALORS // Traitement de la requête SQLPremier(nom_sql) SI SAI_cherche =SQLLitCol(nom_sql,5) ALORS GR_champ_nv..Visible=Vrai LIB_Réponse..Visible=Faux SAI_Résidant=SQLLitCol(nom_sql,1) SAI_NumFact=SQLLitCol(nom_sql,2) SAI_TotalHT=SQLLitCol(nom_sql,3) SAI_TotalTTC=SQLLitCol(nom_sql,4) SAI_Date=SQLLitCol(nom_sql,5) SINON GR_champ_nv..Visible=Faux LIB_Réponse..Visible=Vrai FIN SINON // Échec de la requête : affichage d'un message explicatif SQLInfoGene(nom_sql) Erreur("Erreur" + SQL.Erreur + "dans la requête : ", SQL.MesErreur) FIN SQLFerme(nom_sql) CAS 5 : //-----------------Numéro Facture GR_champ_nv..Visible=Vrai Code_sql =[ SELECT CLIENT.CLIENT_NOM_PRENOM, FACTURE.FACTURE_REF AS FACTURE_REF, FACTURE.FACTURE_TOTAL_HT AS FACTURE_TOTAL_HT, FACTURE.FACTURE_TOTAL_TTC AS FACTURE_TOTAL_TTC, FACTURE.FACTURE_DATE AS FACTURE_DATE FROM CLIENT, FACTURE WHERE FACTURE.FACTURE_ID_CLIENT = CLIENT.CLIENT_ID AND FACTURE.FACTURE_REF = '%1' ] Code_sql=ChaîneConstruit(Code_sql,SAI_cherche) SI SQLExec(Code_sql,nom_sql)= Vrai ALORS // Traitement de la requête SQLPremier(nom_sql) SI SAI_cherche =SQLLitCol(nom_sql,2) ALORS GR_champ_nv..Visible=Vrai LIB_Réponse..Visible=Faux SAI_Résidant=SQLLitCol(nom_sql,1) SAI_NumFact=SQLLitCol(nom_sql,2) SAI_TotalHT=SQLLitCol(nom_sql,3) SAI_TotalTTC=SQLLitCol(nom_sql,4) SAI_Date=SQLLitCol(nom_sql,5) SINON GR_champ_nv..Visible=Faux LIB_Réponse..Visible=Vrai FIN SINON // Échec de la requête : affichage d'un message explicatif SQLInfoGene(nom_sql) Erreur("Erreur" + SQL.Erreur + "dans la requête : ", SQL.MesErreur) FIN SQLFerme(nom_sql) AUTRE CAS FIN FIN
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 //1 : Annuler la Facture //2 : Abondonner SELON Dialogue("Voullez vous vraiment annuler cette Facture ?") // Annuler la Facture CAS 1 Code_sql ,Code_sql2,Code_sql3,Code_sql4 sont des chaînes indice_fac est un entier sur 8 =TABLE_Facture[TABLE_Facture].COL_facture_ID Nom_sql est une chaîne="REQ_ANNULE" sNom_sql2 est une chaîne ="REQ_GENERATION_AVOIR" sNom_sql3 est une chaîne ="REQ_GENERATION_AVOIR2" sNom_sql4 est une chaîne ="REQ_GENERATION_AVOIR3" SI NumConnexion <> 0 ALORS Code_sql = [ UPDATE FACTURE SET FACTURE.FACTURE_ANNULEE = '%1' WHERE FACTURE.FACTURE_ID = '%2' ] Code_sql=ChaîneConstruit(Code_sql,1,indice_fac) SI SQLExec(Code_sql,Nom_sql)= Vrai ALORS // Traitement de la requête Code_sql2=[ INSERT INTO FACTURE ( FACTURE_REF,FACTURE_TOTAL_HT, FACTURE_TOTAL_TTC,FACTURE_ID_CLIENT,FACTURE_DATE,FACTURE_ANNULEE) VALUES ('%1','%2','%3','%4','%5','%6') ] Code_sql2=ChaîneConstruit(Code_sql2,TABLE_Facture[TABLE_Facture].COL_NumFacture+"-A",TABLE_Facture[TABLE_Facture].COL_montantHT,TABLE_Facture[TABLE_Facture].COL_montantttc,TABLE_Facture[TABLE_Facture].COL_Client_ID,TABLE_Facture[TABLE_Facture].COL_Date,0) SI SQLExec(Code_sql2,sNom_sql2)= Vrai ALORS Code_sql3= [ SELECT FACTURE_DETAIL.FACTURE_DETAIL_DESIGNATION, FACTURE_DETAIL.FACTURE_DETAIL_CODE, FACTURE_DETAIL.FACTURE_DETAIL_QTE, FACTURE_DETAIL.FACTURE_DETAIL_PU_HT, FACTURE_DETAIL.FACTURE_DETAIL_PT_TTC, FACTURE_DETAIL.FACTURE_DETAIL_TVA, FACTURE_DETAIL.FACTURE_DETAIL_ID_FACTURE, FACTURE_DETAIL.FACTURE_DETAIL_PU_TTC FROM FACTURE_DETAIL WHERE FACTURE_DETAIL.FACTURE_DETAIL_ID_FACTURE= '%1' ] SQLFerme(sNom_sql2) Code_sql3=ChaîneConstruit(Code_sql3,indice_fac) SI SQLExec(Code_sql3,sNom_sql3)= Vrai ALORS sVer est une chaîne =SQLCol(sNom_sql3,1) Code_sql4=[ INSERT INTO FACTURE_DETAIL ( FACTURE_DETAIL.FACTURE_DETAIL_DESIGNATION, FACTURE_DETAIL.FACTURE_DETAIL_CODE, FACTURE_DETAIL.FACTURE_DETAIL_QTE, FACTURE_DETAIL.FACTURE_DETAIL_PU_HT, FACTURE_DETAIL.FACTURE_DETAIL_PT_TTC, FACTURE_DETAIL.FACTURE_DETAIL_TVA, FACTURE_DETAIL.FACTURE_DETAIL_ID_FACTURE, FACTURE_DETAIL.FACTURE_DETAIL_PU_TTC ) VALUES('%1','%2','%3','%4','%5','%6','%7','%8') ] Code_sql4=ChaîneConstruit(Code_sql4,SQLCol(sNom_sql3,1),SQLCol(sNom_sql3,2),SQLCol(sNom_sql3,3),SQLCol(sNom_sql3,4),SQLCol(sNom_sql3,5),SQLCol(sNom_sql3,6),SQLCol(sNom_sql3,7)+1,SQLCol(sNom_sql3,8)) SI SQLExec(Code_sql4,sNom_sql4)= Vrai ALORS // Traitement de la requête ToastAffiche("La Facture a été annulée !"+RC+"Un Avoir a été généré ",toastCourt,cvMilieu,chCentre,BleuFoncé) ExécuteTraitement(FEN_Facture,trtInit) SINON // Échec de la requête : affichage d'un message explicatif SQLInfoGene(sNom_sql4) Erreur("Erreur" + SQL.Erreur + "dans la requête : ", SQL.MesErreur) FIN SINON // Échec de la requête : affichage d'un message explicatif SQLInfoGene(sNom_sql3) Erreur("Erreur" + SQL.Erreur + "dans la requête : ", SQL.MesErreur) FIN SINON // Échec de la requête : affichage d'un message explicatif SQLInfoGene(sNom_sql2) Erreur("Erreur" + SQL.Erreur + "dans la requête : ", SQL.MesErreur) FIN SINON // Échec de la requête : affichage d'un message explicatif SQLInfoGene(Nom_sql) Erreur("Erreur" + SQL.Erreur + "dans la requête : ", SQL.MesErreur) FIN SINON // La connexion a échoué : affichage d'un message explicatif Erreur(HErreurInfo()) FIN SQLFerme(Nom_sql) SQLFerme(sNom_sql2) SQLFerme(sNom_sql3) SQLFerme(sNom_sql4) // Abondonner CAS 2 FIN
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 TableSupprimeTout(TABLE_detail_etat) Detail_sql est une Source de Données NomDetail_sql est une chaîne ="REQ_DESGIN" Pt_ht ,Tva , Pt_total sont des réels=0 indice_fac est un entier sur 8 =TABLE_Facture[TABLE_Facture].COL_facture_ID SI NumConnexion <> 0 ALORS Detail_sql= [ SELECT FACTURE_DETAIL.FACTURE_DETAIL_DESIGNATION, FACTURE_DETAIL.FACTURE_DETAIL_QTE, FACTURE_DETAIL.FACTURE_DETAIL_PU_TTC, FACTURE_DETAIL.FACTURE_DETAIL_PU_HT, FACTURE_DETAIL.FACTURE_DETAIL_TVA, FACTURE_DETAIL.FACTURE_DETAIL_CODE, FACTURE_DETAIL.FACTURE_DETAIL_ID_FACTURE, FACTURE_DETAIL.FACTURE_DETAIL_PT_TTC FROM FACTURE_DETAIL WHERE FACTURE_DETAIL.FACTURE_DETAIL_ID_FACTURE = '%1' ] Detail_sql=ChaîneConstruit(Detail_sql,TABLE_Facture[TABLE_Facture].COL_facture_ID) SI SQLExec(Detail_sql,NomDetail_sql)= Vrai ALORS // Traitement de la requête TANTQUE SQLFetch(NomDetail_sql)=0 Pt_ht= SQLCol(NomDetail_sql,4) Tva = SQLCol(NomDetail_sql,5) SELON Tva CAS 1: Tva =0 CAS 2: Tva = 5.50 CAS 3: Tva = 19.60 AUTRE CAS FIN Pt_total=(Pt_ht*Tva )/100 +Pt_ht TableAjouteLigne(TABLE_detail_etat,SQLCol(NomDetail_sql,6),SQLCol(NomDetail_sql,1),SQLCol(NomDetail_sql,2),SQLCol(NomDetail_sql,3),SQLCol(NomDetail_sql,4),Pt_total,SQLCol(NomDetail_sql,5)) FIN SINON // Échec de la requête : affichage d'un message explicatif SQLInfoGene(NomDetail_sql) Erreur("Erreur" + SQL.Erreur + "dans la requête : ", SQL.MesErreur) FIN SINON // La connexion a échoué : affichage d'un message explicatif Erreur(HErreurInfo()) FIN indice est un entier =0 Indice_montant est un entier =0 rMontant_ht est un réel=0 nCode est un entier =0 rTauxTVA est un réel=0 montantTVA est un réel=0 POUR TOUTE LIGNE i DE TABLE_detail_etat nCode=TABLE_detail_etat[i].COL_tva rMontant_ht=TABLE_detail_etat[i].COL_Pu_HT*TABLE_detail_etat[i].COL_QTE SELON nCode CAS 1: rTauxTVA=0 montantTVA=(rMontant_ht*rTauxTVA )/100 SI TableOccurrence(TABLE_montant_etat)=0 ALORS TableAjouteLigne(TABLE_montant_etat,rMontant_ht,rTauxTVA,montantTVA) SINON indice= TableCherche(TABLE_montant_etat.COL_tauxTVA,0,Vrai) SI indice<> -1 ALORS TABLE_montant_etat[indice].COL_Mnt_HT+=rMontant_ht TABLE_montant_etat[indice].COL_MontantTVA+=montantTVA SINON TableAjouteLigne(TABLE_montant_etat,rMontant_ht,rTauxTVA,montantTVA) FIN FIN CAS 2: rTauxTVA =5.50 montantTVA=(rMontant_ht*rTauxTVA )/100 SI TableOccurrence(TABLE_montant_etat)=0 ALORS TableAjouteLigne(TABLE_montant_etat,rMontant_ht,rTauxTVA,montantTVA) SINON indice= TableCherche(TABLE_montant_etat.COL_tauxTVA,5.50,Vrai) SI indice<> -1 ALORS TABLE_montant_etat[indice].COL_Mnt_HT+=rMontant_ht TABLE_montant_etat[indice].COL_MontantTVA+=montantTVA SINON TableAjouteLigne(TABLE_montant_etat,rMontant_ht,rTauxTVA,montantTVA) FIN FIN CAS 3: rTauxTVA= 19.60 montantTVA=(rMontant_ht*rTauxTVA )/100 SI TableOccurrence(TABLE_montant_etat)=0 ALORS TableAjouteLigne(TABLE_montant_etat,rMontant_ht,rTauxTVA,montantTVA) SINON indice= TableCherche(TABLE_montant_etat.COL_tauxTVA,19.60,Vrai) SI indice<> -1 ALORS TABLE_montant_etat[indice].COL_Mnt_HT+=rMontant_ht TABLE_montant_etat[indice].COL_MontantTVA+=montantTVA SINON TableAjouteLigne(TABLE_montant_etat,rMontant_ht,rTauxTVA,montantTVA) FIN FIN AUTRE CAS FIN FIN SQLFerme(NomDetail_sql) // Ouvrir la fenêtre d'aperçu iAperçu() // Imprimer l'état basé sur la table "TableClient" iImprimeEtat(ETAT_facturee,indice_fac)
Encore un peu ?! Y'en manque pas j'espère...
Bonjour
C'est quoi cet étalage de code sans la moindre explication ?
Ce forum est devenu un GDS ?
Pascal H.
phapps.e-monsite.com
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager