Connexion ADO
Bonjour,
Afin de vérifier si le résultat de mon recordset contient quelque chose ou non j'utilise
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
'TestPrixImpose = "SELECT * FROM tbl_Projet INNER JOIN tbl_Projet ON PtrIdProjet = IdProjet WHERE tNomProjet = '" & DChacal & "' AND oEtatProjet = '0' AND tInitiales = " & Environ("USERNAME") & " AND CurPrixImposeMatiere = 0"
TestPrixImpose = "SELECT tNomProjet, PtrIdProjet, IdProjet, oEtatProjet, tInitiales, iPtrIdElevation, curPrixTarif, curPrixImposeMatiere FROM tbl_Elevation_Prix INNER JOIN tbl_Projet ON PtrIdProjet = IdProjet WHERE tNomProjet = '" & DChacal & "' AND oEtatProjet = '0' AND tInitiales = 'C4572433' AND CurPrixImposeMatiere = '0.00'"
Connect.Execute TestPrixImpose, lNB
MsgBox lNB
If lNB = -1 Then
Le code était tiré d'un post de je-ne-sais-plus-où, il fonctionnait pour des requetes simple mais avec les inner join cela ne marche plus car il me sort 0.
En me documentant un peu j'ai cru comprendre que de base ce code doit sortir 0 lorsqu'il y a des enregistrement et sinon -1 mais ici ce n'est pas le cas donc je ne comprend plus trop.
Si quelqu'un aurait la charité de m'expliquer comment marche la connexion ADO et de m'envoyer un exemple de connection "propre" à une base et récuperer un recordset je ne dirai pas non
Cordialement.
Arthur.
Bonjour,
Tu travailles avec Excel 2016.
Tu dois pouvoir travailler avec Récupérer et transformer (Power Query, natif sous cette version d'Excel).
Nul besoin à priori de VBA.
Maintenant, sans plus d'informations !...
Cdlt.
Maintenant, sans plus d'informations !...
Bonjour,
Tu as raison j'ai omis des choses. Je travail avec VBA car je fait un UserForm donc le code est là :
Private Sub CommandButton2_Click()
If MsgBox("Êtes vous sur de vouloir figer le prix de ce dossier ? Cette action sera définitive et non modifiable", vbYesNo) = vbYes Then
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
ConnectionString = "Driver={SQL Server}Server=NOMDUSERVEUR;Database=chbase;Uid=id1;Pwd=confi;"
TestDossier = "SELECT tNomProjet, IdProjet, oEtatProjet, tInitiales FROM tbl_Projet WHERE tNomProjet = '" & DChacal & "'"
Connect.Execute TestDossier, lNB
If lNB = -1 Then
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
TestEtat = "SELECT tNomProjet, IdProjet, oEtatProjet, tInitiales FROM tbl_Projet WHERE tNomProjet = '" & DChacal & "' AND oEtatProjet = '0'"
Connect.Execute TestEtat, lNB
If lNB = -1 Then
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
'TestInitiales = "SELECT * FROM tbl_Projet INNER JOIN tbl_Projet ON PtrIdProjet = IdProjet WHERE tNomProjet = '" & DChacal & "' AND oEtatProjet = '0' AND tInitiales = " & Environ("USERNAME")
TestInitiales = "SELECT tNomProjet, IdProjet, oEtatProjet, tInitiales FROM tbl_Projet WHERE tNomProjet = '" & DChacal & "' AND oEtatProjet = '0' AND tInitiales = 'C4572433'"
Connect.Execute TestInitiales, lNB
MsgBox lNB
If lNB = -1 Then
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
'TestPrixImpose = "SELECT * FROM tbl_Projet INNER JOIN tbl_Projet ON PtrIdProjet = IdProjet WHERE tNomProjet = '" & DChacal & "' AND oEtatProjet = '0' AND tInitiales = " & Environ("USERNAME") & " AND CurPrixImposeMatiere = 0"
TestPrixImpose = "SELECT tNomProjet, PtrIdProjet, IdProjet, oEtatProjet, tInitiales, iPtrIdElevation, curPrixTarif, curPrixImposeMatiere FROM tbl_Elevation_Prix INNER JOIN tbl_Projet ON PtrIdProjet = IdProjet WHERE tNomProjet = '" & DChacal & "' AND oEtatProjet = '0' AND tInitiales = 'C4572433' AND CurPrixImposeMatiere = '0.00'"
Connect.Execute TestPrixImpose, lNB
MsgBox lNB
If lNB = -1 Then
MsgBox "Les vérifs sont passées"
'REQUETE "FINALE"
End If
Else
MsgBox "Vous n'êtes pas le créateur de ce dossier, vous ne pouvez donc pas figer le prix de celui-ci." & Chr(13) & "Vérifier que le N-°CHACAL renseigné est le bon puis réessayer.", vbCritical
End If
Else
MsgBox "Ce dossier n'est plus en devis, vous ne pouvez donc pas figer le prix de celui-ci." & Chr(13) & "Vérifier que le N-°CHACAL renseigné est le bon puis réessayer.", vbCritical
End If
Else
MsgBox "Ce dossier n'existe pas" & Chr(13) & "Vérifier que le N-°CHACAL renseigné est le bon puis réessayer.", vbCritical
End If
End If
Unload Me
End Sub
Comme tu l'auras sans doute compris, je vérifie chaque critère séparément afin de voir si la requête peut être effectuer et si non pourquoi afin de prévenir l'utilisateur.
Ici le problème est que la dernière vérif ne fonctionne pas car elle me sort 0 tout le temps, puis j'ai fait des test à coter et maintenant ne me sort que -1 alors qu'il n'y a aucun enregistrement possible dans le recordset vu que la requête demande des critère impossible à remplir.
Je commence à me perdre petit à petit dans cette vérif....
Le code est-il au moins bon
Cordialement.
Arthur.
Re,
J'ai écrit :
Bonjour,
Tu travailles avec Excel 2016.
Tu dois pouvoir travailler avec Récupérer et transformer (Power Query, natif sous cette version d'Excel).
Nul besoin à priori de VBA.
Maintenant, sans plus d'informations !...
Cdlt.
Quel est le type de fichier à traiter ? Peux-tu le joindre (partiellement et anonymisé si nécessaire ?
Peux-tu envoyer aussi, une exemple de résultat souhaité ?
Quel est le type de fichier à traiter ? Peux-tu le joindre (partiellement et anonymisé si nécessaire ?
Peux-tu envoyer aussi, une exemple de résultat souhaité ?
Je n'ai pas vraiment de fichier à traiter, j'explique :
il n'y aura pas de feuille rempli dans le classeur juste un bouton pour ouvrir un userform
l'userform dois juste faire un update dans une base de donné mais avant cela il fait des select avec les critères qui se rajoute petit à petit afin de savoir, si il y a , ou se situer le problème afin de prévenir l'utilisateur
Re,
C'est un dialogue de sourds.
Consulte ce lien sur Power Query :
Je ne vois pas ce que tu veux que je t'envoie , le fichier excel ? pas de problème voila.
Soit juste un peu plus clair dans tes demandes car je ne comprend pas trop ce que tu dis la
Et désoler si c'est l'inverse
C'est bon ça fonctionne avec le code
'Connexion à la base de données
cnx.ConnectionString = "Provider=SQLOLEDB;Server=A42APTECP02;Database=BDDChacal_TEST;Persist Security Info=False;Integrated Security=SSPI;"
cnx.Open
'TestInitiales = "SELECT * FROM tbl_Projet INNER JOIN tbl_Projet ON PtrIdProjet = IdProjet WHERE tNomProjet = '" & DChacal & "' AND oEtatProjet = '0' AND tInitiales = '" & Environ("USERNAME") & "'"
TestInitiales = "SELECT tNomProjet, IdProjet, oEtatProjet, tInitiales FROM tbl_Projet WHERE tNomProjet = '" & DChacal & "' AND oEtatProjet = '0' AND tInitiales = 'C4572433'"
rs.Open TestInitiales, cnx, , , adCmdText
reccount = rs(0)
cnx.Close
If reccount > 0 Then
Voila pour ceux qui veulent et qui galèere aussi
reccount = le nombre de ligne dans le résultat