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

Passer une variable dans une requete sql pour un tableau croisé dynamique

azmth

XLDnaute Nouveau
Bonjour,
Je cherche à récupérer une variable dans excel et de la passer dans une requete sql dans VBA. Voici un exemple dans lequel les variables récupérées dans excel sont StockCode et EntryDate:

ActiveSheet.PivotTableWizard SourceType:=xlExternal, SourceData:=Array("SELECT INVMOVEMENTS.StockCode, INVMOVEMENTS.EntryDate, INVMOVEMENTS.MovementType, INVMOVEMENTS.TrnType, INVMOVEMENTS.TrnQty" & Chr(13) & "" & Chr(10) & "FROM dbo.INVMOVEMENTS INVMOVEMENTS" & Chr(13) & "" & Chr(10) & "WHERE (INVMOVEMENTS.StockCode= 1000) AND (INVMOVEMENTS.EntryDate>={d '2007-01-04'}))

Le pb est une incompatibilité de données dès que je passe ces variables dans ce code.

Merci bcp de votre aide.

Azmth
 

michel_m

XLDnaute Accro
Re : Passer une variable dans une requete sql pour un tableau croisé dynamique

Bonjour,

pour passer une variable dans SQL:

tavar=100

(INVMOVEMENTS.StockCode= 1000) devient
(INVMOVEMENTS.StockCode= " & tavar & ")


(INVMOVEMENTS.EntryDate>={d '2007-01-04'})) devient
(INVMOVEMENTS.EntryDate>={d '" & tadate &"'}))

essaies aussi (les dates en SQL, c'est prise de t^te)
{d '[tadate]'}

regarde si tu dois mettre le type de tadate en date ou string ( je pencherais pour string mais...)
 

azmth

XLDnaute Nouveau
Re : Passer une variable dans une requete sql pour un tableau croisé dynamique

Merci Michel, tu m'as vraiment mis sur la bonne voie!

La solution est:

Dim madate As String

mavar = Range("B3").Value
madate = Format((Range("B1").Value), "yyyy-mm-dd")

ActiveSheet.PivotTableWizard SourceType:=xlExternal, SourceData:=Array( _
"SELECT INVMOVEMENTS.StockCode, INVMOVEMENTS.EntryDate, INVMOVEMENTS.MovementType, INVMOVEMENTS.TrnType, INVMOVEMENTS.TrnQty" & Chr(13) & "" & Chr(10) & "FROM dbo.INVMOVEMENTS INVMOVEMENTS" & Chr(13) & "" & Chr(10) & "WHERE (INVMOVEMENTS.StockCode= " & var_code & ") A" _
, _
"ND (INVMOVEMENTS.EntryDate>={d '" & var_date_debut & "'},

MErci bcp de ton aide!

azmth
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…