Je dispose d'une table "Coordonnées" contenant une ligne et trois champs:
Nom: champ texte
Date début: champ date format abrégé xx/xx/xxxxx
Date fin: champ date format abrégé
Je dispose d'une table "Table" et d'une requête création "Requête" (sur la
table "Table") comportant plusieurs champs dont un champ "Nom" et un champ
"Date"
Mon objectif est de créer une requête "Requête 2" dans laquelle le champ
Table.Nom prendra la valeur Coordonnées.Nom et Table.Date sera comprise entre
Coordonnées.Date début et Coordonnées.date fin.
j'ai rpéparé la procédure suivante
Public Sub CréanceIrrecouvrable()
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("Coordonnées", dbOpenDynaset)
Dim db As DAO.Database
Dim SQL As String
Dim rq As DAO.QueryDef
Set db = CurrentDb()
rs.MoveLast
rs.MoveFirst
While Not rs.EOF
'Pour enlever le ; à la fin de l'instruction SQL
SQL = Left(db.QueryDefs("Table requête").SQL,
InStrRev(db.QueryDefs("Table requête").SQL, ";") - 1)
SQL = SQL & "WHERE [Table].[Nom] Like " & Replace(rs![Nom], ",", ".")
Set rq = db.CreateQueryDef("Table requête 2", SQL)
rs.MoveNext
Wend
Set rq = Nothing
Set db = Nothing
rs.Close
Set rs = Nothing
'Rafraichissement de la fenêtre de la base de données
RefreshDatabaseWindow
End Sub
La requête Table requête 2 est effectivement créée, mais le champ nom dans
la Table.requête 2 est encadré de [ et ] au lieu de " et ".
Par ailleurs ,comment introduire la date dans la ligne?
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
3stone
Salut,
"Chevrot" | Je dispose d'une table "Coordonnées" contenant une ligne et trois champs: | Nom: champ texte | Date début: champ date format abrégé xx/xx/xxxxx | Date fin: champ date format abrégé | | Je dispose d'une table "Table" et d'une requête création "Requête" (sur la | table "Table") comportant plusieurs champs dont un champ "Nom" et un champ | "Date" | | Mon objectif est de créer une requête "Requête 2" dans laquelle le champ | Table.Nom prendra la valeur Coordonnées.Nom et Table.Date sera comprise entre | Coordonnées.Date début et Coordonnées.date fin. | | j'ai rpéparé la procédure suivante | | Public Sub CréanceIrrecouvrable() | Dim rs As DAO.Recordset | Set rs = CurrentDb.OpenRecordset("Coordonnées", dbOpenDynaset) | Dim db As DAO.Database | Dim SQL As String | Dim rq As DAO.QueryDef | Set db = CurrentDb()
| rs.MoveLast | rs.MoveFirst
Pourquoi traverser tout le recordset ? Les deux sont superflu ici !! De plus, faire un MoveLast sans test EOF donnerait une erreur en cas ou le recordset serait vide !
| | While Not rs.EOF <== ??? | | 'Pour enlever le ; à la fin de l'instruction SQL | SQL = Left(db.QueryDefs("Table requête").SQL, | InStrRev(db.QueryDefs("Table requête").SQL, ";") - 1) | SQL = SQL & "WHERE [Table].[Nom] Like " & Replace(rs![Nom], ",", ".") | Set rq = db.CreateQueryDef("Table requête 2", SQL)
| rs.MoveNext <== ??? | Wend
Explique pourquoi, tu boucles sur ton recordset, alors que tu ne fait que créer une requête ?
Ton
Replace(rs![Nom],",",".")
étant de type texte doit être entouré de guillemets simples. Ce qui donne :
SQL = SQL & " WHERE [Table].[Nom] Like '" & Replace(rs![Nom], ",", ".") & "'"
avec un espace devant le 'Where' pour le problème de concaténation.
De plus, ce qui est totalement à proscrire de ton code, ce sont les noms utilisés!!!
SQL As string --- à remplacer par sSQL ou strSQL Nom --- à remplacer par NomVille ou NomClient et appeler une table "Table" ou une requête "Requête" c'est vraiment chercher à se tirer un balle dans le pied ;-(
Un peu de lecture semble opportune: http://support.microsoft.com/kb/286335/fr?spid%09&sida8 http://support.microsoft.com/?scid=kb%3Ben-us%3B826763&x&y=9
"Chevrot"
| Je dispose d'une table "Coordonnées" contenant une ligne et trois champs:
| Nom: champ texte
| Date début: champ date format abrégé xx/xx/xxxxx
| Date fin: champ date format abrégé
|
| Je dispose d'une table "Table" et d'une requête création "Requête" (sur la
| table "Table") comportant plusieurs champs dont un champ "Nom" et un champ
| "Date"
|
| Mon objectif est de créer une requête "Requête 2" dans laquelle le champ
| Table.Nom prendra la valeur Coordonnées.Nom et Table.Date sera comprise entre
| Coordonnées.Date début et Coordonnées.date fin.
|
| j'ai rpéparé la procédure suivante
|
| Public Sub CréanceIrrecouvrable()
| Dim rs As DAO.Recordset
| Set rs = CurrentDb.OpenRecordset("Coordonnées", dbOpenDynaset)
| Dim db As DAO.Database
| Dim SQL As String
| Dim rq As DAO.QueryDef
| Set db = CurrentDb()
| rs.MoveLast
| rs.MoveFirst
Pourquoi traverser tout le recordset ?
Les deux sont superflu ici !!
De plus, faire un MoveLast sans test EOF donnerait une
erreur en cas ou le recordset serait vide !
|
| While Not rs.EOF <== ???
|
| 'Pour enlever le ; à la fin de l'instruction SQL
| SQL = Left(db.QueryDefs("Table requête").SQL,
| InStrRev(db.QueryDefs("Table requête").SQL, ";") - 1)
| SQL = SQL & "WHERE [Table].[Nom] Like " & Replace(rs![Nom], ",", ".")
| Set rq = db.CreateQueryDef("Table requête 2", SQL)
| rs.MoveNext <== ???
| Wend
Explique pourquoi, tu boucles sur ton recordset, alors que tu ne fait
que créer une requête ?
Ton
Replace(rs![Nom],",",".")
étant de type texte doit être entouré de guillemets simples.
Ce qui donne :
SQL = SQL & " WHERE [Table].[Nom] Like '" & Replace(rs![Nom], ",", ".") & "'"
avec un espace devant le 'Where' pour le problème de concaténation.
De plus, ce qui est totalement à proscrire de ton code, ce sont les noms utilisés!!!
SQL As string --- à remplacer par sSQL ou strSQL
Nom --- à remplacer par NomVille ou NomClient
et appeler une table "Table" ou une requête "Requête" c'est vraiment chercher
à se tirer un balle dans le pied ;-(
Un peu de lecture semble opportune:
http://support.microsoft.com/kb/286335/fr?spid%09&sida8
http://support.microsoft.com/?scid=kb%3Ben-us%3B826763&x&y=9
"Chevrot" | Je dispose d'une table "Coordonnées" contenant une ligne et trois champs: | Nom: champ texte | Date début: champ date format abrégé xx/xx/xxxxx | Date fin: champ date format abrégé | | Je dispose d'une table "Table" et d'une requête création "Requête" (sur la | table "Table") comportant plusieurs champs dont un champ "Nom" et un champ | "Date" | | Mon objectif est de créer une requête "Requête 2" dans laquelle le champ | Table.Nom prendra la valeur Coordonnées.Nom et Table.Date sera comprise entre | Coordonnées.Date début et Coordonnées.date fin. | | j'ai rpéparé la procédure suivante | | Public Sub CréanceIrrecouvrable() | Dim rs As DAO.Recordset | Set rs = CurrentDb.OpenRecordset("Coordonnées", dbOpenDynaset) | Dim db As DAO.Database | Dim SQL As String | Dim rq As DAO.QueryDef | Set db = CurrentDb()
| rs.MoveLast | rs.MoveFirst
Pourquoi traverser tout le recordset ? Les deux sont superflu ici !! De plus, faire un MoveLast sans test EOF donnerait une erreur en cas ou le recordset serait vide !
| | While Not rs.EOF <== ??? | | 'Pour enlever le ; à la fin de l'instruction SQL | SQL = Left(db.QueryDefs("Table requête").SQL, | InStrRev(db.QueryDefs("Table requête").SQL, ";") - 1) | SQL = SQL & "WHERE [Table].[Nom] Like " & Replace(rs![Nom], ",", ".") | Set rq = db.CreateQueryDef("Table requête 2", SQL)
| rs.MoveNext <== ??? | Wend
Explique pourquoi, tu boucles sur ton recordset, alors que tu ne fait que créer une requête ?
Ton
Replace(rs![Nom],",",".")
étant de type texte doit être entouré de guillemets simples. Ce qui donne :
SQL = SQL & " WHERE [Table].[Nom] Like '" & Replace(rs![Nom], ",", ".") & "'"
avec un espace devant le 'Where' pour le problème de concaténation.
De plus, ce qui est totalement à proscrire de ton code, ce sont les noms utilisés!!!
SQL As string --- à remplacer par sSQL ou strSQL Nom --- à remplacer par NomVille ou NomClient et appeler une table "Table" ou une requête "Requête" c'est vraiment chercher à se tirer un balle dans le pied ;-(
Un peu de lecture semble opportune: http://support.microsoft.com/kb/286335/fr?spid%09&sida8 http://support.microsoft.com/?scid=kb%3Ben-us%3B826763&x&y=9
Merci de tes conseils; j'ai introduit les guillements et cela marche bien; reste néanmoins le problème de la syntaxe pour Replace avec les dates:
Merci par avance de ton conseil.
Alain
Salut,
"Chevrot" | Je dispose d'une table "Coordonnées" contenant une ligne et trois champs: | Nom: champ texte | Date début: champ date format abrégé xx/xx/xxxxx | Date fin: champ date format abrégé | | Je dispose d'une table "Table" et d'une requête création "Requête" (sur la | table "Table") comportant plusieurs champs dont un champ "Nom" et un champ | "Date" | | Mon objectif est de créer une requête "Requête 2" dans laquelle le champ | Table.Nom prendra la valeur Coordonnées.Nom et Table.Date sera comprise entre | Coordonnées.Date début et Coordonnées.date fin. | | j'ai rpéparé la procédure suivante | | Public Sub CréanceIrrecouvrable() | Dim rs As DAO.Recordset | Set rs = CurrentDb.OpenRecordset("Coordonnées", dbOpenDynaset) | Dim db As DAO.Database | Dim SQL As String | Dim rq As DAO.QueryDef | Set db = CurrentDb()
| rs.MoveLast | rs.MoveFirst
Pourquoi traverser tout le recordset ? Les deux sont superflu ici !! De plus, faire un MoveLast sans test EOF donnerait une erreur en cas ou le recordset serait vide !
| | While Not rs.EOF <== ??? | | 'Pour enlever le ; à la fin de l'instruction SQL | SQL = Left(db.QueryDefs("Table requête").SQL, | InStrRev(db.QueryDefs("Table requête").SQL, ";") - 1) | SQL = SQL & "WHERE [Table].[Nom] Like " & Replace(rs![Nom], ",", ".") | Set rq = db.CreateQueryDef("Table requête 2", SQL)
| rs.MoveNext <== ??? | Wend
Explique pourquoi, tu boucles sur ton recordset, alors que tu ne fait que créer une requête ?
Ton
Replace(rs![Nom],",",".")
étant de type texte doit être entouré de guillemets simples. Ce qui donne :
SQL = SQL & " WHERE [Table].[Nom] Like '" & Replace(rs![Nom], ",", ".") & "'"
avec un espace devant le 'Where' pour le problème de concaténation.
De plus, ce qui est totalement à proscrire de ton code, ce sont les noms utilisés!!!
SQL As string --- à remplacer par sSQL ou strSQL Nom --- à remplacer par NomVille ou NomClient et appeler une table "Table" ou une requête "Requête" c'est vraiment chercher à se tirer un balle dans le pied ;-(
Un peu de lecture semble opportune: http://support.microsoft.com/kb/286335/fr?spid%09&sida8 http://support.microsoft.com/?scid=kb%3Ben-us%3B826763&x&y=9
Merci de tes conseils; j'ai introduit les guillements et cela marche bien;
reste néanmoins le problème de la syntaxe pour Replace avec les dates:
Merci par avance de ton conseil.
Alain
Salut,
"Chevrot"
| Je dispose d'une table "Coordonnées" contenant une ligne et trois champs:
| Nom: champ texte
| Date début: champ date format abrégé xx/xx/xxxxx
| Date fin: champ date format abrégé
|
| Je dispose d'une table "Table" et d'une requête création "Requête" (sur la
| table "Table") comportant plusieurs champs dont un champ "Nom" et un champ
| "Date"
|
| Mon objectif est de créer une requête "Requête 2" dans laquelle le champ
| Table.Nom prendra la valeur Coordonnées.Nom et Table.Date sera comprise entre
| Coordonnées.Date début et Coordonnées.date fin.
|
| j'ai rpéparé la procédure suivante
|
| Public Sub CréanceIrrecouvrable()
| Dim rs As DAO.Recordset
| Set rs = CurrentDb.OpenRecordset("Coordonnées", dbOpenDynaset)
| Dim db As DAO.Database
| Dim SQL As String
| Dim rq As DAO.QueryDef
| Set db = CurrentDb()
| rs.MoveLast
| rs.MoveFirst
Pourquoi traverser tout le recordset ?
Les deux sont superflu ici !!
De plus, faire un MoveLast sans test EOF donnerait une
erreur en cas ou le recordset serait vide !
|
| While Not rs.EOF <== ???
|
| 'Pour enlever le ; à la fin de l'instruction SQL
| SQL = Left(db.QueryDefs("Table requête").SQL,
| InStrRev(db.QueryDefs("Table requête").SQL, ";") - 1)
| SQL = SQL & "WHERE [Table].[Nom] Like " & Replace(rs![Nom], ",", ".")
| Set rq = db.CreateQueryDef("Table requête 2", SQL)
| rs.MoveNext <== ???
| Wend
Explique pourquoi, tu boucles sur ton recordset, alors que tu ne fait
que créer une requête ?
Ton
Replace(rs![Nom],",",".")
étant de type texte doit être entouré de guillemets simples.
Ce qui donne :
SQL = SQL & " WHERE [Table].[Nom] Like '" & Replace(rs![Nom], ",", ".") & "'"
avec un espace devant le 'Where' pour le problème de concaténation.
De plus, ce qui est totalement à proscrire de ton code, ce sont les noms utilisés!!!
SQL As string --- à remplacer par sSQL ou strSQL
Nom --- à remplacer par NomVille ou NomClient
et appeler une table "Table" ou une requête "Requête" c'est vraiment chercher
à se tirer un balle dans le pied ;-(
Un peu de lecture semble opportune:
http://support.microsoft.com/kb/286335/fr?spid%09&sida8
http://support.microsoft.com/?scid=kb%3Ben-us%3B826763&x&y=9
Merci de tes conseils; j'ai introduit les guillements et cela marche bien; reste néanmoins le problème de la syntaxe pour Replace avec les dates:
Merci par avance de ton conseil.
Alain
Salut,
"Chevrot" | Je dispose d'une table "Coordonnées" contenant une ligne et trois champs: | Nom: champ texte | Date début: champ date format abrégé xx/xx/xxxxx | Date fin: champ date format abrégé | | Je dispose d'une table "Table" et d'une requête création "Requête" (sur la | table "Table") comportant plusieurs champs dont un champ "Nom" et un champ | "Date" | | Mon objectif est de créer une requête "Requête 2" dans laquelle le champ | Table.Nom prendra la valeur Coordonnées.Nom et Table.Date sera comprise entre | Coordonnées.Date début et Coordonnées.date fin. | | j'ai rpéparé la procédure suivante | | Public Sub CréanceIrrecouvrable() | Dim rs As DAO.Recordset | Set rs = CurrentDb.OpenRecordset("Coordonnées", dbOpenDynaset) | Dim db As DAO.Database | Dim SQL As String | Dim rq As DAO.QueryDef | Set db = CurrentDb()
| rs.MoveLast | rs.MoveFirst
Pourquoi traverser tout le recordset ? Les deux sont superflu ici !! De plus, faire un MoveLast sans test EOF donnerait une erreur en cas ou le recordset serait vide !
| | While Not rs.EOF <== ??? | | 'Pour enlever le ; à la fin de l'instruction SQL | SQL = Left(db.QueryDefs("Table requête").SQL, | InStrRev(db.QueryDefs("Table requête").SQL, ";") - 1) | SQL = SQL & "WHERE [Table].[Nom] Like " & Replace(rs![Nom], ",", ".") | Set rq = db.CreateQueryDef("Table requête 2", SQL)
| rs.MoveNext <== ??? | Wend
Explique pourquoi, tu boucles sur ton recordset, alors que tu ne fait que créer une requête ?
Ton
Replace(rs![Nom],",",".")
étant de type texte doit être entouré de guillemets simples. Ce qui donne :
SQL = SQL & " WHERE [Table].[Nom] Like '" & Replace(rs![Nom], ",", ".") & "'"
avec un espace devant le 'Where' pour le problème de concaténation.
De plus, ce qui est totalement à proscrire de ton code, ce sont les noms utilisés!!!
SQL As string --- à remplacer par sSQL ou strSQL Nom --- à remplacer par NomVille ou NomClient et appeler une table "Table" ou une requête "Requête" c'est vraiment chercher à se tirer un balle dans le pied ;-(
Un peu de lecture semble opportune: http://support.microsoft.com/kb/286335/fr?spid%09&sida8 http://support.microsoft.com/?scid=kb%3Ben-us%3B826763&x&y=9