Voilà, j'ai le code suivant qui me permet de lancer une requête
paramétrée création de table.
Cependant, je souhaiterai faire un tout petit peu plus compliqué et
sans succès depuis plusieurs jours.
Voilà, je souhaiterai conserver dans ma BDD "Requête1" comme une
requête dite "de sélection" et par code VB créer cette même "Requête1"
mais en requête dite "Création de table" pour pouvoir effectuer ma Sub
test(). En effet, le "qdf.Execute" ne s'applique qu'à une requête
action et non sélection.
Merci infiniement de votre aide car là, je ne sais plus quoi tenter!
Sub test()
Dim qdf As QueryDef
Dim DATE_T As Date
Dim cnn As New ADODB.Connection
DATE_T = InputBox("Date")
Set qdf = CurrentDb.QueryDefs("Requête1")
qdf.Parameters("Date ?") = DATE_T
qdf.Execute
Set qdf = Nothing
End Sub
Voici ma requête en SQL :
SELECT [Table1].[Prénom], [Table1].[Nom], [Table2].[Adresse],
[Table2].[Ville], [Table2].[Date] INTO vide
FROM Table1 INNER JOIN Table2 ON [Table1].[Nom]=[Table2].[Nom]
WHERE ((([Table2].[Date])=[Date ?]));
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
Raymond [mvp]
Tu peux faire comme ceci:
On Error Resume Next Dim Matable As String Dim qdf As DAO.QueryDef Dim strSql As String Dim DATE_T As Date Matable = "Table4" 'pour l'exemple DoCmd.DeleteObject acQuery, "Requête_Tmp" DoCmd.DeleteObject acTable, Matable DATE_T = InputBox("Date") Set qdf = CurrentDb.QueryDefs("Requête1") strSql = qdf.SQL Set qdf = Nothing Set qdf = CurrentDb.CreateQueryDef("Requête_Tmp") qdf.SQL = Replace(strSql, "FROM ", " INTO " & Matable & " FROM ") qdf.Parameters("Date ?") = DATE_T qdf.Execute Set qdf = Nothing
cette fonction prend le sql de la requête requête1 et le transforme en sql création de table dont le nom est donné par la variable matable. la requête1 n'est pas modifiée.
-- @+ Raymond Access MVP http://access.seneque.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/ pour débuter sur le forum
"okto" a écrit dans le message de news:
Bonsoir,
Voilà, j'ai le code suivant qui me permet de lancer une requête paramétrée création de table. Cependant, je souhaiterai faire un tout petit peu plus compliqué et sans succès depuis plusieurs jours. Voilà, je souhaiterai conserver dans ma BDD "Requête1" comme une requête dite "de sélection" et par code VB créer cette même "Requête1" mais en requête dite "Création de table" pour pouvoir effectuer ma Sub test(). En effet, le "qdf.Execute" ne s'applique qu'à une requête action et non sélection.
Merci infiniement de votre aide car là, je ne sais plus quoi tenter!
Tu peux faire comme ceci:
On Error Resume Next
Dim Matable As String
Dim qdf As DAO.QueryDef
Dim strSql As String
Dim DATE_T As Date
Matable = "Table4" 'pour l'exemple
DoCmd.DeleteObject acQuery, "Requête_Tmp"
DoCmd.DeleteObject acTable, Matable
DATE_T = InputBox("Date")
Set qdf = CurrentDb.QueryDefs("Requête1")
strSql = qdf.SQL
Set qdf = Nothing
Set qdf = CurrentDb.CreateQueryDef("Requête_Tmp")
qdf.SQL = Replace(strSql, "FROM ", " INTO " & Matable & " FROM ")
qdf.Parameters("Date ?") = DATE_T
qdf.Execute
Set qdf = Nothing
cette fonction prend le sql de la requête requête1 et le transforme en sql
création de table dont le nom est donné par la variable matable. la requête1
n'est pas modifiée.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum
"okto" <jorie80@hotmail.com> a écrit dans le message de
news:ec6aacb8.0402121056.1ffb5582@posting.google.com...
Bonsoir,
Voilà, j'ai le code suivant qui me permet de lancer une requête
paramétrée création de table.
Cependant, je souhaiterai faire un tout petit peu plus compliqué et
sans succès depuis plusieurs jours.
Voilà, je souhaiterai conserver dans ma BDD "Requête1" comme une
requête dite "de sélection" et par code VB créer cette même "Requête1"
mais en requête dite "Création de table" pour pouvoir effectuer ma Sub
test(). En effet, le "qdf.Execute" ne s'applique qu'à une requête
action et non sélection.
Merci infiniement de votre aide car là, je ne sais plus quoi tenter!
On Error Resume Next Dim Matable As String Dim qdf As DAO.QueryDef Dim strSql As String Dim DATE_T As Date Matable = "Table4" 'pour l'exemple DoCmd.DeleteObject acQuery, "Requête_Tmp" DoCmd.DeleteObject acTable, Matable DATE_T = InputBox("Date") Set qdf = CurrentDb.QueryDefs("Requête1") strSql = qdf.SQL Set qdf = Nothing Set qdf = CurrentDb.CreateQueryDef("Requête_Tmp") qdf.SQL = Replace(strSql, "FROM ", " INTO " & Matable & " FROM ") qdf.Parameters("Date ?") = DATE_T qdf.Execute Set qdf = Nothing
cette fonction prend le sql de la requête requête1 et le transforme en sql création de table dont le nom est donné par la variable matable. la requête1 n'est pas modifiée.
-- @+ Raymond Access MVP http://access.seneque.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/ pour débuter sur le forum
"okto" a écrit dans le message de news:
Bonsoir,
Voilà, j'ai le code suivant qui me permet de lancer une requête paramétrée création de table. Cependant, je souhaiterai faire un tout petit peu plus compliqué et sans succès depuis plusieurs jours. Voilà, je souhaiterai conserver dans ma BDD "Requête1" comme une requête dite "de sélection" et par code VB créer cette même "Requête1" mais en requête dite "Création de table" pour pouvoir effectuer ma Sub test(). En effet, le "qdf.Execute" ne s'applique qu'à une requête action et non sélection.
Merci infiniement de votre aide car là, je ne sais plus quoi tenter!
jorie80
Okidoki et merci... Mais, il ne reconnaît pas le "Replace"... Je ne comprends pas exactement; pourriez-vous m'indiquer comment procéder...
Merci d'avance,
Okidoki et merci... Mais, il ne reconnaît pas le "Replace"...
Je ne comprends pas exactement; pourriez-vous m'indiquer comment procéder...
Okidoki et merci... Mais, il ne reconnaît pas le "Replace"... Je ne comprends pas exactement; pourriez-vous m'indiquer comment procéder...
Merci d'avance,
Raymond [mvp]
Ce qui veut dire que tu es en version 97 ? qui ne supporte pas cette fonction. si oui, tu inclus une fonction remplacer que tu trouveras sur la page http://access.seneque.free.fr/remplacer_texte.htm qdf.SQL = Remplacer(strSql, "FROM ", " INTO " & Matable & " FROM ") -- @+ Raymond Access MVP http://access.seneque.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/ pour débuter sur le forum
"okto" a écrit dans le message de news:
Okidoki et merci... Mais, il ne reconnaît pas le "Replace"... Je ne comprends pas exactement; pourriez-vous m'indiquer comment procéder...
Merci d'avance,
Ce qui veut dire que tu es en version 97 ? qui ne supporte pas cette
fonction.
si oui, tu inclus une fonction remplacer que tu trouveras sur la page
http://access.seneque.free.fr/remplacer_texte.htm
qdf.SQL = Remplacer(strSql, "FROM ", " INTO " & Matable & " FROM ")
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum
"okto" <jorie80@hotmail.com> a écrit dans le message de
news:ec6aacb8.0402130108.591a59fd@posting.google.com...
Okidoki et merci... Mais, il ne reconnaît pas le "Replace"...
Je ne comprends pas exactement; pourriez-vous m'indiquer comment
procéder...
Ce qui veut dire que tu es en version 97 ? qui ne supporte pas cette fonction. si oui, tu inclus une fonction remplacer que tu trouveras sur la page http://access.seneque.free.fr/remplacer_texte.htm qdf.SQL = Remplacer(strSql, "FROM ", " INTO " & Matable & " FROM ") -- @+ Raymond Access MVP http://access.seneque.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/ pour débuter sur le forum
"okto" a écrit dans le message de news:
Okidoki et merci... Mais, il ne reconnaît pas le "Replace"... Je ne comprends pas exactement; pourriez-vous m'indiquer comment procéder...
Merci d'avance,
jorie80
Merci à vous. En effet, je travaille sous Access 97. Voici donc comment se constitue mon prog ci-dessous. Une erreur persite sur la ligne ==> qdf.sql = Remplacer(strSql, "FROM ", " INTO " & TableVide & "FROM ")
Erreur d'exécution '3141' : Dans l'instruction SELECT, un mot réservé ou un argument est mal ortographié ou manquant, ou la ponctuation est incorrecte
Merci de votre aide pour résoudre ce souci.
Option Compare Database Option Explicit
Function Remplacer(Chaine, AncienTexte, NouveauTexte) As String Dim StringTmp As String, Pointer As Integer If IsNull(Chaine) Then Remplacer = False Else StringTmp = Chaine Pointer = InStr(1, StringTmp, AncienTexte) Do While Pointer > 0 StringTmp = Left(StringTmp, Pointer - 1) & NouveauTexte & _ Mid(StringTmp, Pointer + Len(AncienTexte)) Pointer = InStr(Pointer + Len(NouveauTexte), StringTmp, AncienTexte) Loop Remplacer = StringTmp End If End Function
Sub essai()
Dim strSql As String Dim DATE_T As Date Dim qdf As DAO.QueryDef Dim TableVide As String Dim chaîne1 As String Dim chaîne2 As String
Set qdf = CurrentDb.QueryDefs("Requête1") strSql = qdf.sql Set qdf = Nothing Set qdf = CurrentDb.CreateQueryDef("Requête_Tmp") qdf.sql = Remplacer(strSql, "FROM ", " INTO " & TableVide & "FROM ") qdf.Parameters("V_DATE_T") = DATE_T qdf.Execute Set qdf = Nothing
End Sub
Merci à vous. En effet, je travaille sous Access 97.
Voici donc comment se constitue mon prog ci-dessous. Une erreur
persite sur la ligne ==> qdf.sql = Remplacer(strSql, "FROM ", " INTO "
& TableVide & "FROM ")
Erreur d'exécution '3141' : Dans l'instruction SELECT, un mot réservé
ou un argument est mal ortographié ou manquant, ou la ponctuation est
incorrecte
Merci de votre aide pour résoudre ce souci.
Option Compare Database
Option Explicit
Function Remplacer(Chaine, AncienTexte, NouveauTexte) As String
Dim StringTmp As String, Pointer As Integer
If IsNull(Chaine) Then
Remplacer = False
Else
StringTmp = Chaine
Pointer = InStr(1, StringTmp, AncienTexte)
Do While Pointer > 0
StringTmp = Left(StringTmp, Pointer - 1) & NouveauTexte &
_
Mid(StringTmp, Pointer + Len(AncienTexte))
Pointer = InStr(Pointer + Len(NouveauTexte), StringTmp,
AncienTexte)
Loop
Remplacer = StringTmp
End If
End Function
Sub essai()
Dim strSql As String
Dim DATE_T As Date
Dim qdf As DAO.QueryDef
Dim TableVide As String
Dim chaîne1 As String
Dim chaîne2 As String
Merci à vous. En effet, je travaille sous Access 97. Voici donc comment se constitue mon prog ci-dessous. Une erreur persite sur la ligne ==> qdf.sql = Remplacer(strSql, "FROM ", " INTO " & TableVide & "FROM ")
Erreur d'exécution '3141' : Dans l'instruction SELECT, un mot réservé ou un argument est mal ortographié ou manquant, ou la ponctuation est incorrecte
Merci de votre aide pour résoudre ce souci.
Option Compare Database Option Explicit
Function Remplacer(Chaine, AncienTexte, NouveauTexte) As String Dim StringTmp As String, Pointer As Integer If IsNull(Chaine) Then Remplacer = False Else StringTmp = Chaine Pointer = InStr(1, StringTmp, AncienTexte) Do While Pointer > 0 StringTmp = Left(StringTmp, Pointer - 1) & NouveauTexte & _ Mid(StringTmp, Pointer + Len(AncienTexte)) Pointer = InStr(Pointer + Len(NouveauTexte), StringTmp, AncienTexte) Loop Remplacer = StringTmp End If End Function
Sub essai()
Dim strSql As String Dim DATE_T As Date Dim qdf As DAO.QueryDef Dim TableVide As String Dim chaîne1 As String Dim chaîne2 As String
Set qdf = CurrentDb.QueryDefs("Requête1") strSql = qdf.sql Set qdf = Nothing Set qdf = CurrentDb.CreateQueryDef("Requête_Tmp") qdf.sql = Remplacer(strSql, "FROM ", " INTO " & TableVide & "FROM ") qdf.Parameters("V_DATE_T") = DATE_T qdf.Execute Set qdf = Nothing
End Sub
Raymond [mvp]
tu n'as pas respecté les espaces avant le 2e from
qdf.sql = Remplacer(strSql, "FROM ", " INTO " & TableVide & " FROM ")
l'erreur ne devrait pas être sur cette ligne mais sur l'execute j'ai retesté la procédure avec mes champs, ça fonctionne. vérifies quand même tous les mots utilisés pour bien voir tu places un msgbox qdf.sql après la ligne ci-dessus.
-- @+ Raymond Access MVP http://access.seneque.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/ pour débuter sur le forum
"okto" a écrit dans le message de news:
Merci à vous. En effet, je travaille sous Access 97. Voici donc comment se constitue mon prog ci-dessous. Une erreur persite sur la ligne ==> qdf.sql = Remplacer(strSql, "FROM ", " INTO " & TableVide & "FROM ")
Erreur d'exécution '3141' : Dans l'instruction SELECT, un mot réservé ou un argument est mal ortographié ou manquant, ou la ponctuation est incorrecte
Merci de votre aide pour résoudre ce souci.
Option Compare Database Option Explicit
Function Remplacer(Chaine, AncienTexte, NouveauTexte) As String Dim StringTmp As String, Pointer As Integer If IsNull(Chaine) Then Remplacer = False Else StringTmp = Chaine Pointer = InStr(1, StringTmp, AncienTexte) Do While Pointer > 0 StringTmp = Left(StringTmp, Pointer - 1) & NouveauTexte & _ Mid(StringTmp, Pointer + Len(AncienTexte)) Pointer = InStr(Pointer + Len(NouveauTexte), StringTmp, AncienTexte) Loop Remplacer = StringTmp End If End Function
Sub essai()
Dim strSql As String Dim DATE_T As Date Dim qdf As DAO.QueryDef Dim TableVide As String Dim chaîne1 As String Dim chaîne2 As String
Set qdf = CurrentDb.QueryDefs("Requête1") strSql = qdf.sql Set qdf = Nothing Set qdf = CurrentDb.CreateQueryDef("Requête_Tmp") qdf.sql = Remplacer(strSql, "FROM ", " INTO " & TableVide & "FROM ") qdf.Parameters("V_DATE_T") = DATE_T qdf.Execute Set qdf = Nothing
End Sub
tu n'as pas respecté les espaces avant le 2e from
qdf.sql = Remplacer(strSql, "FROM ", " INTO " & TableVide & " FROM ")
l'erreur ne devrait pas être sur cette ligne mais sur l'execute
j'ai retesté la procédure avec mes champs, ça fonctionne. vérifies quand
même tous les mots utilisés
pour bien voir tu places un msgbox qdf.sql après la ligne ci-dessus.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum
"okto" <jorie80@hotmail.com> a écrit dans le message de
news:ec6aacb8.0402130704.5e43492a@posting.google.com...
Merci à vous. En effet, je travaille sous Access 97.
Voici donc comment se constitue mon prog ci-dessous. Une erreur
persite sur la ligne ==> qdf.sql = Remplacer(strSql, "FROM ", " INTO "
& TableVide & "FROM ")
Erreur d'exécution '3141' : Dans l'instruction SELECT, un mot réservé
ou un argument est mal ortographié ou manquant, ou la ponctuation est
incorrecte
Merci de votre aide pour résoudre ce souci.
Option Compare Database
Option Explicit
Function Remplacer(Chaine, AncienTexte, NouveauTexte) As String
Dim StringTmp As String, Pointer As Integer
If IsNull(Chaine) Then
Remplacer = False
Else
StringTmp = Chaine
Pointer = InStr(1, StringTmp, AncienTexte)
Do While Pointer > 0
StringTmp = Left(StringTmp, Pointer - 1) & NouveauTexte &
_
Mid(StringTmp, Pointer + Len(AncienTexte))
Pointer = InStr(Pointer + Len(NouveauTexte), StringTmp,
AncienTexte)
Loop
Remplacer = StringTmp
End If
End Function
Sub essai()
Dim strSql As String
Dim DATE_T As Date
Dim qdf As DAO.QueryDef
Dim TableVide As String
Dim chaîne1 As String
Dim chaîne2 As String
qdf.sql = Remplacer(strSql, "FROM ", " INTO " & TableVide & " FROM ")
l'erreur ne devrait pas être sur cette ligne mais sur l'execute j'ai retesté la procédure avec mes champs, ça fonctionne. vérifies quand même tous les mots utilisés pour bien voir tu places un msgbox qdf.sql après la ligne ci-dessus.
-- @+ Raymond Access MVP http://access.seneque.free.fr/ http://access2003.free.fr/ http://users.skynet.be/mpfa/ pour débuter sur le forum
"okto" a écrit dans le message de news:
Merci à vous. En effet, je travaille sous Access 97. Voici donc comment se constitue mon prog ci-dessous. Une erreur persite sur la ligne ==> qdf.sql = Remplacer(strSql, "FROM ", " INTO " & TableVide & "FROM ")
Erreur d'exécution '3141' : Dans l'instruction SELECT, un mot réservé ou un argument est mal ortographié ou manquant, ou la ponctuation est incorrecte
Merci de votre aide pour résoudre ce souci.
Option Compare Database Option Explicit
Function Remplacer(Chaine, AncienTexte, NouveauTexte) As String Dim StringTmp As String, Pointer As Integer If IsNull(Chaine) Then Remplacer = False Else StringTmp = Chaine Pointer = InStr(1, StringTmp, AncienTexte) Do While Pointer > 0 StringTmp = Left(StringTmp, Pointer - 1) & NouveauTexte & _ Mid(StringTmp, Pointer + Len(AncienTexte)) Pointer = InStr(Pointer + Len(NouveauTexte), StringTmp, AncienTexte) Loop Remplacer = StringTmp End If End Function
Sub essai()
Dim strSql As String Dim DATE_T As Date Dim qdf As DAO.QueryDef Dim TableVide As String Dim chaîne1 As String Dim chaîne2 As String