Comment Editer et Modifier la clause WHERE d'une requête en ADO ?

Le
alex
Bonjour,
Comment faire la même chose en ADO ?
Merci

Dim Qry As DAO.QueryDef
Dim StrSQL As String
Dim IntPosition As Integer

Set Db = CurrentDb

'Lecture code SQL
Set Qry = CurrentDb.QueryDefs(Requete)
StrSQL = Qry.SQL
'Position WHERE et la supprime
IntPosition = InStr(1, StrSQL, "WHERE", vbTextCompare)
If IntPosition > 0 Then
StrSQL = Left(StrSQL, IntPosition - 1)
'Ajoute une condition
StrSQL = StrSQL & " WHERE [TSTAGE].[TSTAGEnum]=" & StrFunction &
";"
Qry.SQL = StrSQL
End If
Qry.Close
Set Qry = Nothing
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Patrice
Le #11720801
Sur le plan du principe, je ferais plutôt une vue ou une fonction à laquelle
j'ajoute le critère WHERE voulu ce qui permet d'avoir clairement la requête
de base plus les critères personnalisés éventuels...

Précise éventuellement, le rapport avec SQL Server reste flou pour moi (tu
voulais au départ modifier une vue SQL Server ?)

Patrice

"alex" news:
Bonjour,
Comment faire la même chose en ADO ?
Merci

Dim Qry As DAO.QueryDef
Dim StrSQL As String
Dim IntPosition As Integer

Set Db = CurrentDb

'Lecture code SQL
Set Qry = CurrentDb.QueryDefs(Requete)
StrSQL = Qry.SQL
'Position WHERE et la supprime
IntPosition = InStr(1, StrSQL, "WHERE", vbTextCompare)
If IntPosition > 0 Then
StrSQL = Left(StrSQL, IntPosition - 1)
'Ajoute une condition
StrSQL = StrSQL & " WHERE [TSTAGE].[TSTAGEnum]=" & StrFunction &
";"
Qry.SQL = StrSQL
End If
Qry.Close
Set Qry = Nothing





Firebird
Le #11720791
Bonjour,

Je suggère plutôt d'utiliser une procédure stocké sur SQL avec un paramètre
qui la condition de la requête. Au sein même de la procédure stocké, il
suffit de tester si la variable est pleine ou vide à l'aide d'une
instruction IF et exécuter la requête en incluant ou pas le filtre.

Petit exemple d'appel de procédure stocké en ADO :

Dim provstr As String
Dim cn2 As ADODB.Connection
Dim rs As ADODB.Recordset
Dim cmd As ADODB.Command
Dim param1 As String

Set cn2 = New ADODB.Connection
provstr = "File Name=" + App.Path + "fichieraccesbasesql.udl;"
cn2.Open provstr

Set cmd = New ADODB.Command
Set cmd.ActiveConnection = cn2
cmd.CommandText = "nomprocedurestockee"
cmd.CommandType = adCmdStoredProc
cmd.CommandTimeout = 60

Set param1 = cmd.CreateParameter("Inparm1", adVarChar, adParamInput, 50,
"valeurdufiltre")
cmd.Parameters.Append param1


Set rs = cmd.Execute

While Not rs.EOF
'
' Lecture des enregistrements
rs.movenext
Wend

rs.close
set rs=nothing
cn2.close
set cn2=nothing

@ bientôt

Firebird



"alex" news:
Bonjour,
Comment faire la même chose en ADO ?
Merci

Dim Qry As DAO.QueryDef
Dim StrSQL As String
Dim IntPosition As Integer

Set Db = CurrentDb

'Lecture code SQL
Set Qry = CurrentDb.QueryDefs(Requete)
StrSQL = Qry.SQL
'Position WHERE et la supprime
IntPosition = InStr(1, StrSQL, "WHERE", vbTextCompare)
If IntPosition > 0 Then
StrSQL = Left(StrSQL, IntPosition - 1)
'Ajoute une condition
StrSQL = StrSQL & " WHERE [TSTAGE].[TSTAGEnum]=" & StrFunction &
";"
Qry.SQL = StrSQL
End If
Qry.Close
Set Qry = Nothing





alex
Le #11720661
Merci, ok pour lire le contenu du Recordset,

Mais je souhaite à partir d'un control (ex : liste déroulante, zone de
texte,...) modifer une requête, et j'ai un formulaire basé sur cette même
requête, et donc que le formulaire se met à jour.

"Firebird" news:
Bonjour,

Je suggère plutôt d'utiliser une procédure stocké sur SQL avec un


paramètre
qui la condition de la requête. Au sein même de la procédure stocké, il
suffit de tester si la variable est pleine ou vide à l'aide d'une
instruction IF et exécuter la requête en incluant ou pas le filtre.

Petit exemple d'appel de procédure stocké en ADO :

Dim provstr As String
Dim cn2 As ADODB.Connection
Dim rs As ADODB.Recordset
Dim cmd As ADODB.Command
Dim param1 As String

Set cn2 = New ADODB.Connection
provstr = "File Name=" + App.Path + "fichieraccesbasesql.udl;"
cn2.Open provstr

Set cmd = New ADODB.Command
Set cmd.ActiveConnection = cn2
cmd.CommandText = "nomprocedurestockee"
cmd.CommandType = adCmdStoredProc
cmd.CommandTimeout = 60

Set param1 = cmd.CreateParameter("Inparm1", adVarChar, adParamInput, 50,
"valeurdufiltre")
cmd.Parameters.Append param1


Set rs = cmd.Execute

While Not rs.EOF
'
' Lecture des enregistrements
rs.movenext
Wend

rs.close
set rs=nothing
cn2.close
set cn2=nothing

@ bientôt

Firebird



"alex" news:
> Bonjour,
> Comment faire la même chose en ADO ?
> Merci
>
> Dim Qry As DAO.QueryDef
> Dim StrSQL As String
> Dim IntPosition As Integer
>
> Set Db = CurrentDb
>
> 'Lecture code SQL
> Set Qry = CurrentDb.QueryDefs(Requete)
> StrSQL = Qry.SQL
> 'Position WHERE et la supprime
> IntPosition = InStr(1, StrSQL, "WHERE", vbTextCompare)
> If IntPosition > 0 Then
> StrSQL = Left(StrSQL, IntPosition - 1)
> 'Ajoute une condition
> StrSQL = StrSQL & " WHERE [TSTAGE].[TSTAGEnum]=" & StrFunction


&
> ";"
> Qry.SQL = StrSQL
> End If
> Qry.Close
> Set Qry = Nothing
>
>
>




Publicité
Poster une réponse
Anonyme