Passage de paramètre sur connexion SQL

PrinceCorwin

XLDnaute Occasionnel
Bonjour,

Je crée des Tableaux Croisés Dynamique qui sont alimentés directment par une connexion données externe.
Phase 1: Création de la connexion :
Code:
Provider=SQLOLEDB.1;
Password=***;
Persist Security Info=True;
User ID=SISPROD;
Initial Catalog=x3;
Data Source=srvx3\sagex3;
Use Procedure for Prepare=1;
Auto Translate=True;
Packet Size=4096;
Workstation ID=OP-ADM-INF-JCB;
Use Encryption for Data=False;
Tag with column collation when possible=False
Phase 2: Type de commande : SQL
Phase 3: Texte de commande
Commande non complète car longue...
Code:
SELECT
 MKO.IPTDAT_0 as 'Date Imputation',
 substring(convert(varchar(4),YEAR(MKO.IPTDAT_0)),3,2) + CASE
 WHEN DATEPART(WK,MKO.IPTDAT_0)<10 then '0'+CAST(DATEPART(WK,MKO.IPTDAT_0) AS VARCHAR(1))
 WHEN DATEPART(WK,MKO.IPTDAT_0)>=10 then CAST(DATEPART(WK,MKO.IPTDAT_0) AS VARCHAR(2))
 END as 'Semaine Saisie',
 ITM.TCLCOD_0 as 'Catégorie',
 ITM.TSICOD_0 as 'BU',
 COALESCE(AX1.TEXTE_0, 'Non Renseigné') as 'Famille Stat 2',
 COALESCE(AX2.TEXTE_0,'Non Renseigné') as 'Famille Stat 3',
 COALESCE(AX3.TEXTE_0, 'non Renseigné') as 'Famille Stat 4',
 COALESCE(AX4.TEXTE_0, 'Non Renseigné') as 'Famille Stat 5'
FROM   MFGOPETRK MKO 
 INNER JOIN MFGITM MFI ON MKO.MFGNUM_0 = MFI.MFGNUM_0 
 INNER JOIN MFGOPE MFO ON MKO.MFGNUM_0 = MFO.MFGNUM_0 AND MKO.OPENUM_0 = MFO.OPENUM_0 AND MKO.OPESPLNUM_0 = MFO.OPESPLNUM_0
 LEFT OUTER JOIN WORKSTATIO WRK ON MKO.CPLWST_0 = WRK.WST_0 AND MKO.MFGFCY_0 = WRK.WCRFCY_0 
WHERE
MKO.IPTDAT_0 >= {ts '2014-01-01 00:00:00'}
Cela fonctionne à merveille.
Je souhaite cependant faire que la date soit une variable récupérée d'une feuille excel...
Est-ce possible ?
Merci pour votre aide.
JCB
 

pyfux

XLDnaute Occasionnel
Re : Passage de paramètre sur connexion SQL

Bonjour PrinceCorwin, le forum,

Je n'ai pas la réponse à ta question (ça fera quand même un petit up :) )

Par contre pour ma part, je te conseillerais de procéder à une extraction par code VBA de type:
Code:
Private Function ExecuteSQL() As String

Dim loCnx As New ADODB.Connection
Dim loData As ADODB.Recordset
Dim liCount As Integer
Dim lsSQL As String

On Error GoTo ErrorHandler

loCnx.CursorLocation = adUseServer
Call loCnx.Open("DSN=X3_PYFEV", "X3", "tiger") ' :) à adapter!

 
    lsSQL = "SELECT ITMMASTER.ZVIGNETTE_0 "
    lsSQL = lsSQL & " FROM  GROUPEDMD.ITMMASTER ITMMASTER "
    lsSQL = lsSQL & " WHERE ITMMASTER.ITMREF_0='" & Trim(Me.Cells(liRow, 1).Value) & "'"
        
    Set loData = loCnx.Execute(lsSQL)
   
    Sheets("Result").Select
    Columns("B:E").ClearContents
   [A2].CopyFromRecordset loData

loData.Close
loCnx.Close
Set loCnx = Nothing

Exit Function

ErrorHandler:
Call MsgBox("Une erreur est survenue lors de l'extraction des données:" + vbCrLf + _
    CStr(Err.Number) + vbCrLf + Err.Description + vbCrLf, vbApplicationModal + vbCritical + vbOKOnly)
Err.Clear

End Function

Puis faire un TCD sur les données importées...

Sorry.
 

Statistiques des forums

Discussions
312 248
Messages
2 086 593
Membres
103 248
dernier inscrit
Happycat