Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Patrice
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" a écrit dans le message de 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
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" <alex.audiens63@free.fr> a écrit dans le message de
news:uN9D2h2JEHA.1040@TK2MSFTNGP10.phx.gbl...
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
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" a écrit dans le message de 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
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" a écrit dans le message de 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
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" <alex.audiens63@free.fr> a écrit dans le message de
news:uN9D2h2JEHA.1040@TK2MSFTNGP10.phx.gbl...
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
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" a écrit dans le message de 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
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" a écrit dans le message de 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" a écrit dans le message de 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 > > >
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" <d.masure@skynet.be> a écrit dans le message de
news:OtKtWy3JEHA.952@TK2MSFTNGP12.phx.gbl...
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" <alex.audiens63@free.fr> a écrit dans le message de
news:uN9D2h2JEHA.1040@TK2MSFTNGP10.phx.gbl...
> 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
>
>
>
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" a écrit dans le message de 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" a écrit dans le message de 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 > > >