OVH Cloud OVH Cloud

Problème de tronquage d'une variable

1 réponse
Avatar
Seb B
Le probleme est le suivant j'ai écrit une requete SQL qui fonctionne. Elle
fait plus de 300 caracteères.

Lorsque j'utilise cette requete dans VBA en utilisant une variable de type
String, celle-ci se retrouve tronquée car elle dépasse 255 caractères

Auriez vous une solution pour me permettre de lancer la requete ou d'eviter
que ma requete soit tronquée.

Pour utiliser SQL dans Excel, j'utilise la macro complémentaire XLODBC et
pour envoyer la requete a SQL je passe par la fonction SQLExecQuery

voici mon code dans VBA :



----------------------------------------------------------------------------
----------------------------------------------------------------------------
------------------------------------------------------------------------

' Fonction qui va afficher l'historique de la consommation en fuel des

' equipement durant une période définie dans la boite de dialogue

' on va récupérer les équipements dont on a fait l'approvisionnement durant
la

' période demandée

' requete, sortie sont des variables public

Sheets("Fuel").Activate

Range("B3").Formula = " DU " & date_conso_debut & " AU " & date_conso_fin

'A partir du numéro équipement, on va récperer les infos sur l'equipement
ainsi que

' sur son approvisionnement durant la période

' on va faire renter tout ca en une requete globale

requete = "select
e.num_equipement,e.nom_equipement,s.code_local,p.valeur,p.date_mesure from
equipement e,prendre p,stationner s where p.valeur>2 and
p.code_mesure='m1'and p.date_mesure between'" & d_deb & "'and'" & d_fin &
"'and e.num_equipement=p.num_equipement and
e.num_equipement=s.num_equipement and s.date_local=p.date_mesure"

' on lance la requete

SQLExecQuery num_connect, requete

Set sortie = Range("B10")

SQLRetrieve num_connect, sortie, , , False

----------------------------------------------------------------------------
----------------------------------------------------------------------------
----------------------------------------------------------------------------

1 réponse

Avatar
Hervé
Salut,
Et avec l'emploi de 2 variables String que tu concatène par la suite ?
Adapte :
Sub Doubler()
Dim Var1 As String
Dim Var2 As String
Dim SQL As String
SQL = "abcdefghijklmnopqrstuvwxyz_abc"
If Len(SQL) Mod 2 = 0 Then
Var1 = Left(SQL, Len(SQL) / 2)
Var2 = Right(SQL, Len(SQL) / 2)
Else
Var1 = Left(SQL, CInt(Len(SQL) / 2))
Var2 = Right(SQL, Len(SQL) - Len(Var1))
End If
Debug.Print Var1
Debug.Print Var2
End Sub

Hervé.

"Seb B" a écrit dans le message de news:

Le probleme est le suivant j'ai écrit une requete SQL qui fonctionne. Elle
fait plus de 300 caracteères.

Lorsque j'utilise cette requete dans VBA en utilisant une variable de type
String, celle-ci se retrouve tronquée car elle dépasse 255 caractères

Auriez vous une solution pour me permettre de lancer la requete ou
d'eviter

que ma requete soit tronquée.

Pour utiliser SQL dans Excel, j'utilise la macro complémentaire XLODBC et
pour envoyer la requete a SQL je passe par la fonction SQLExecQuery

voici mon code dans VBA :



--------------------------------------------------------------------------
--

--------------------------------------------------------------------------
--

------------------------------------------------------------------------

' Fonction qui va afficher l'historique de la consommation en fuel des

' equipement durant une période définie dans la boite de dialogue

' on va récupérer les équipements dont on a fait l'approvisionnement
durant

la

' période demandée

' requete, sortie sont des variables public

Sheets("Fuel").Activate

Range("B3").Formula = " DU " & date_conso_debut & " AU " & date_conso_fin

'A partir du numéro équipement, on va récperer les infos sur l'equipement
ainsi que

' sur son approvisionnement durant la période

' on va faire renter tout ca en une requete globale

requete = "select
e.num_equipement,e.nom_equipement,s.code_local,p.valeur,p.date_mesure from
equipement e,prendre p,stationner s where p.valeur>2 and
p.code_mesure='m1'and p.date_mesure between'" & d_deb & "'and'" & d_fin &
"'and e.num_equipement=p.num_equipement and
e.num_equipement=s.num_equipement and s.date_local=p.date_mesure"

' on lance la requete

SQLExecQuery num_connect, requete

Set sortie = Range("B10")

SQLRetrieve num_connect, sortie, , , False

--------------------------------------------------------------------------
--

--------------------------------------------------------------------------
--

--------------------------------------------------------------------------
--