Message différent en fontion de la réponse d'une requete
Bonjour,
J'ai créé une requete SQL afin de supprimer des lignes de différents tables en fonction de plusieurs critère et dépendant d'une condition SI, mon probleme est que j'aimerai pouvoir afficher via VBA une msgbox indiquand que la supppression a été effectuer si elle l'a vraiment été et un message d'information si cela n'a pas été fait (via un else dans la condition ) mais je ne sais pas comment différencier le fait que la requete ai executer le SI ou le ELSE et le différencier dans un programme VBA, si quelqu'un pouvait m'aider .
En esperant avoir été claire et en vous remerciant d'avance pour votre aide.
Arthur.
PS: la requete :
IF ( (SELECT count(*) FROM tbl_Projet WHERE PtrIdClient = 96) = (SELECT count(*) FROM tbl_Projet WHERE PtrIdClient = 96 AND oEtatProjet = 0))
BEGIN
SELECT * FROM tbl_Elevation WHERE PtrIdProjet IN (SELECT IdProjet FROM tbl_Projet WHERE PtrIdClient = 96)
SELECT * FROM tbl_Elevation_Annexes WHERE PtrIdProjet IN (SELECT IdProjet FROM tbl_Projet WHERE PtrIdClient = 96)
SELECT * FROM tbl_Elevation_Details WHERE PtrIdProjet IN (SELECT IdProjet FROM tbl_Projet WHERE PtrIdClient = 96)
SELECT * FROM tbl_Elevation_Element WHERE PtrIdProjet IN (SELECT IdProjet FROM tbl_Projet WHERE PtrIdClient = 96)
SELECT * FROM tbl_Elevation_Exemplaire WHERE PtrIdProjet IN (SELECT IdProjet FROM tbl_Projet WHERE PtrIdClient = 96)
SELECT * FROM tbl_Elevation_InfoSAI WHERE PtrIdProjet IN (SELECT IdProjet FROM tbl_Projet WHERE PtrIdClient = 96)
SELECT * FROM tbl_Elevation_Prix WHERE PtrIdProjet IN (SELECT IdProjet FROM tbl_Projet WHERE PtrIdClient = 96)
SELECT * FROM tbl_Elevation_PtBois WHERE PtrIdProjet IN (SELECT IdProjet FROM tbl_Projet WHERE PtrIdClient = 96)
SELECT * FROM tbl_Elevation_Traverse WHERE PtrIdProjet IN (SELECT IdProjet FROM tbl_Projet WHERE PtrIdClient = 96)
SELECT * FROM tbl_Clients WHERE IdClient = 96
END
Bonjour,
une variable boolean Test_Si as Boolean
première ligne de code en dessous du If :
Test_Si = True
première ligne de code en dessous du Else :
Test_Si
teste après le END du IF
If Test_Si then
ce qu'il faut faire si c'est ce morceau de code qui a tourné
Else
ce qu'il faut faire si c'est la partie du Else qui a tourné
End
@ bientôt
LouReeD
LouReeD a écrit :une variable boolean Test_Si as Boolean
première ligne de code en dessous du If :
Test_Si = True
première ligne de code en dessous du Else :
Test_Si
teste après le END du IF
If Test_Si then
ce qu'il faut faire si c'est ce morceau de code qui a tourné
Else
ce qu'il faut faire si c'est la partie du Else qui a tourné
End
je n'ai pas trop compris ce que tu m'a dit, je dois créé en VBA une variable Test_Si booléenne puis après ?
Le Test_Si = True je me met ou dans le code VBA ou SQL ?
Pareil pour le reste je ne comprend pas dans quel code je dois le rajouter SQL ou VBA ?
Merci pour ton aide
Arthur
Re,
pour une meilleur cmpréhension je l'ai rajouter dasn mon code VBA
Private Sub VALIDER_Click()
If no_client = confirmation_no_client Then
If MsgBox("Êtes vous sur de vouloir supprimer ce prospect et ses devis, repères associés ?", vbYesNo) = vbYes Then
Suppression = "IF ( (SELECT count(*) FROM tbl_Projet WHERE PtrIdClient = 96) = (SELECT count(*) FROM tbl_Projet WHERE PtrIdClient = 96 AND oEtatProjet = 0))" & _
"BEGIN" & _
" SELECT * FROM tbl_Elevation WHERE PtrIdProjet IN (SELECT IdProjet FROM tbl_Projet WHERE PtrIdClient = " & no_client & ")" & _
" SELECT * FROM tbl_Elevation_Annexes WHERE PtrIdProjet IN (SELECT IdProjet FROM tbl_Projet WHERE PtrIdClient = " & no_client & ")" & _
" SELECT * FROM tbl_Elevation_Details WHERE PtrIdProjet IN (SELECT IdProjet FROM tbl_Projet WHERE PtrIdClient = " & no_client & ")" & _
" SELECT * FROM tbl_Elevation_Element WHERE PtrIdProjet IN (SELECT IdProjet FROM tbl_Projet WHERE PtrIdClient = " & no_client & ")" & _
" SELECT * FROM tbl_Elevation_Exemplaire WHERE PtrIdProjet IN (SELECT IdProjet FROM tbl_Projet WHERE PtrIdClient = " & no_client & ")" & _
" SELECT * FROM tbl_Elevation_InfoSAI WHERE PtrIdProjet IN (SELECT IdProjet FROM tbl_Projet WHERE PtrIdClient = " & no_client & ")" & _
" SELECT * FROM tbl_Elevation_Prix WHERE PtrIdProjet IN (SELECT IdProjet FROM tbl_Projet WHERE PtrIdClient = " & no_client & ")" & _
" SELECT * FROM tbl_Elevation_PtBois WHERE PtrIdProjet IN (SELECT IdProjet FROM tbl_Projet WHERE PtrIdClient = " & no_client & ")" & _
" SELECT * FROM tbl_Elevation_Traverse WHERE PtrIdProjet IN (SELECT IdProjet FROM tbl_Projet WHERE PtrIdClient = " & no_client & ")" & _
" SELECT * FROM tbl_Clients WHERE IdClient = " & no_client & _
" End"
'connection au serveur
Set Connect = CreateObject("ADODB.Connection")
Set Recordset = CreateObject("ADODB.RecordSet")
Connect.Open "Provider=SQLOLEDB;Server=A42APTECP02;Database=BDDChacal_TEST;Persist Security Info=False;Integrated Security=SSPI;" 'chaine de connection ou le mdp et l'utilisateur sont les meme que l'identification windows et définie par Integrated Security=SSP
Recordset.Open Suppression, Connect 'Create the recordset
If Recordset.BOF Then
MsgBox "ERREUR", vbCritical
Exit Sub
Else
MsgBox "Les modifications ont bien été effectuées"
End If
ThisWorkbook.Worksheets("Feuil1").Activate
Range("A2").CopyFromRecordset Recordset
Recordset.Close
Set Recordset = Nothing
Connect.Close 'fermeture de la connection à distance
Set Connect = Nothing
Unload Me
End If
Else
MsgBox no_client
MsgBox confirmation_no_client
MsgBox "la confirmation du numéro de client ne correspond pas au numéro de client"
End If
End Sub
mais la ligne
If Recordset.BOF Then
est surligné en jaune et l'erreur" Cette opération n'est pas autorisée si l'objet est fermé " apparait , par déduction j'en déduit que le recordset ne marche pas avec le Transact-SQL , existe-t-il un moyen d'avoir un retour sur ce type de requete ?
Cordialement
Arthur