Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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.
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…