Bonjour Christan
| Oui, ça marche et je suis heureux comme un prince.
Tant mieux car je viens de supprimer ces 2 routines de mon site
pour les y remettre en SQL tout nu qui devrait être plus compréhensible ;-)
http://perso.wanadoo.fr/anor.fr.st/queries.htm
Je t'ai rajouté 2 lignes pour modifier la valeur d'un champ.
Si tu veux conserver le principe de la chaine SQL exécutée depuis VBA
c'est un bon exercice ;-)
| Pourrais-tu me
| souffler le complément de code qui me permettrait d'ouvrir la Table
| après l'avoir renseignée et de comptempler l'oeuvre cré.
Par exemple
DoCmd.OpenTable "LaTable", acViewNormal, acReadOnly
(pour empêcher de modifier les données ...)
|
| Comment fais-tu pour retenir les ponctuations dans la ligne strSQL ?
En fait, c'est un peu pour ça que j'ai mis le code SQL nu plutôt que dans une chaine SQL
Il faut y aller à tâtons bien souvent :
1 - essayer de faire la requête avec le requêteur graphique
2 - passer en mode SQL
3 - épurer le code autogénéré des parenthèses et répétitions latable. en trop
4 - tester le code SQL épuré
5 - Coller ce code dans VBA entre 2 guillemets et après un strSQL > 6 - jusqu'à ce qu'il n'y ait plus de syntaxe
7 - faire de temps en temps un debug.print strSQL pour voir ce que donne la chapine SQL
Si tu utilises des variables pour stocker le nom d'un champ par exemple,
le debug.print doit ramener la valeur de la variable si on la met en dehors des
guillemets et précédée d'un &.
Voilà, au début c'était un casse tête, et un beau jour, sans s'en rendre compte,
on sort la syntaxe (presque) du premier coup ;-)
--
à+
Arnaud
Merci encore, en deux jours d'échanges, j'ai appris plein de choses et
----------------------------------------------
Conseils d'utilisation, sites recommandés :
http://users.skynet.be/mpfa/
Access Memorandum - Les tablettes d'Anor
www.anor.fr.st
----------------------------------------------
Bonjour Christan
| Oui, ça marche et je suis heureux comme un prince.
Tant mieux car je viens de supprimer ces 2 routines de mon site
pour les y remettre en SQL tout nu qui devrait être plus compréhensible ;-)
http://perso.wanadoo.fr/anor.fr.st/queries.htm
Je t'ai rajouté 2 lignes pour modifier la valeur d'un champ.
Si tu veux conserver le principe de la chaine SQL exécutée depuis VBA
c'est un bon exercice ;-)
| Pourrais-tu me
| souffler le complément de code qui me permettrait d'ouvrir la Table
| après l'avoir renseignée et de comptempler l'oeuvre cré.
Par exemple
DoCmd.OpenTable "LaTable", acViewNormal, acReadOnly
(pour empêcher de modifier les données ...)
|
| Comment fais-tu pour retenir les ponctuations dans la ligne strSQL ?
En fait, c'est un peu pour ça que j'ai mis le code SQL nu plutôt que dans une chaine SQL
Il faut y aller à tâtons bien souvent :
1 - essayer de faire la requête avec le requêteur graphique
2 - passer en mode SQL
3 - épurer le code autogénéré des parenthèses et répétitions latable. en trop
4 - tester le code SQL épuré
5 - Coller ce code dans VBA entre 2 guillemets et après un strSQL > 6 - jusqu'à ce qu'il n'y ait plus de syntaxe
7 - faire de temps en temps un debug.print strSQL pour voir ce que donne la chapine SQL
Si tu utilises des variables pour stocker le nom d'un champ par exemple,
le debug.print doit ramener la valeur de la variable si on la met en dehors des
guillemets et précédée d'un &.
Voilà, au début c'était un casse tête, et un beau jour, sans s'en rendre compte,
on sort la syntaxe (presque) du premier coup ;-)
--
à+
Arnaud
Merci encore, en deux jours d'échanges, j'ai appris plein de choses et
----------------------------------------------
Conseils d'utilisation, sites recommandés :
http://users.skynet.be/mpfa/
Access Memorandum - Les tablettes d'Anor
www.anor.fr.st
----------------------------------------------
Bonjour Christan
| Oui, ça marche et je suis heureux comme un prince.
Tant mieux car je viens de supprimer ces 2 routines de mon site
pour les y remettre en SQL tout nu qui devrait être plus compréhensible ;-)
http://perso.wanadoo.fr/anor.fr.st/queries.htm
Je t'ai rajouté 2 lignes pour modifier la valeur d'un champ.
Si tu veux conserver le principe de la chaine SQL exécutée depuis VBA
c'est un bon exercice ;-)
| Pourrais-tu me
| souffler le complément de code qui me permettrait d'ouvrir la Table
| après l'avoir renseignée et de comptempler l'oeuvre cré.
Par exemple
DoCmd.OpenTable "LaTable", acViewNormal, acReadOnly
(pour empêcher de modifier les données ...)
|
| Comment fais-tu pour retenir les ponctuations dans la ligne strSQL ?
En fait, c'est un peu pour ça que j'ai mis le code SQL nu plutôt que dans une chaine SQL
Il faut y aller à tâtons bien souvent :
1 - essayer de faire la requête avec le requêteur graphique
2 - passer en mode SQL
3 - épurer le code autogénéré des parenthèses et répétitions latable. en trop
4 - tester le code SQL épuré
5 - Coller ce code dans VBA entre 2 guillemets et après un strSQL > 6 - jusqu'à ce qu'il n'y ait plus de syntaxe
7 - faire de temps en temps un debug.print strSQL pour voir ce que donne la chapine SQL
Si tu utilises des variables pour stocker le nom d'un champ par exemple,
le debug.print doit ramener la valeur de la variable si on la met en dehors des
guillemets et précédée d'un &.
Voilà, au début c'était un casse tête, et un beau jour, sans s'en rendre compte,
on sort la syntaxe (presque) du premier coup ;-)
--
à+
Arnaud
Merci encore, en deux jours d'échanges, j'ai appris plein de choses et
----------------------------------------------
Conseils d'utilisation, sites recommandés :
http://users.skynet.be/mpfa/
Access Memorandum - Les tablettes d'Anor
www.anor.fr.st
----------------------------------------------
Bonjour Christan,
| Merci encore, en deux jours d'échanges, j'ai appris plein de choses et
| pas uniquement des formules. Les 7 points pour progresser en SQL sont
| à méditer. je suis en vacances et la pêche ne donne pas grand chose ;
| aurais-tu une saine lecture à me conseiller sur la programmation pour
| access. Je possède les 2 bouquins de H Inisan qui sont plutôt orientés
| vers des apllications.
| Christian ATZEL
à vrai dire, je n'ai *aucun* bouquin sur access, vba ou SQL dans ma biliothèque...
Pour moi, la seule et unique _saine lecture_, ce sont tous les posts du forum pendant 6 mois.
C'est comme ça que je me suis auto-formé ;-)
Au début, tu comprends environ 5% des questions et des réponses qui sont apportées,
Au bout de 6 mois, tu comprends 50% des questions, et au bout d'1 an,
tu dois connaître la réponse à 50% des questions posées (à la louche)
Mais il y aura toujours des questions et des réponses qu'on ne comprendra pas,
ni toi ni personne ;-))
Tiens pour le plaisir, voici un petit bout de code pour créer une table depuis VBA :
avec un petit échantillon de champs.
On peut ensuite rajouter quelques propriétés ....
J'en ai inhibé quelques uns (champs) car si je les met tous et notamment le dernier,
j'ai une erreur Run-time error 3047 "L'enregistrement est trop long",
alors que si on les met tous et qu'on fait un for i = 8 to 17, ça passe ....
Sub gf()
Dim dbs As DAO.Database
Dim tdf As DAO.TableDef
Dim fld As DAO.Field
Dim i As Integer
Dim a(1 To 17) As String
a(1) = "dbBoolean"
a(2) = "dbByte"
a(3) = "dbInteger"
a(4) = "dbLong"
a(5) = "dbCurrency"
a(6) = "dbSingle"
a(7) = "dbDouble"
a(8) = "dbDate"
a(9) = "dbBinary"
a(10) = "dbText"
'a(11) = "dbLongBinary" '(OLE Object)
a(12) = "dbMemo"
'a(15) = "dbGUID"
a(16) = "dbBigInt"
'a(17) = "dbVarBinary"
Set dbs = CurrentDb()
Set tdf = dbs.CreateTableDef("LaTable")
'On Error Resume Next
For i = 1 To 17
If a(i) <> "" Then
Set fld = tdf.CreateField("Chp_" & a(i), i)
fld.OrdinalPosition = i
tdf.Fields.Append fld
Set fld = Nothing
End If
Next i
dbs.TableDefs.Append tdf
RefreshDatabaseWindow
Set tdf = Nothing
Set dbs = Nothing
End Sub
--
à+
Arnaud
----------------------------------------------
Conseils d'utilisation, sites recommandés :
http://users.skynet.be/mpfa/
Access Memorandum - Les tablettes d'Anor
www.anor.fr.st
----------------------------------------------
Bonjour Christan,
| Merci encore, en deux jours d'échanges, j'ai appris plein de choses et
| pas uniquement des formules. Les 7 points pour progresser en SQL sont
| à méditer. je suis en vacances et la pêche ne donne pas grand chose ;
| aurais-tu une saine lecture à me conseiller sur la programmation pour
| access. Je possède les 2 bouquins de H Inisan qui sont plutôt orientés
| vers des apllications.
| Christian ATZEL
à vrai dire, je n'ai *aucun* bouquin sur access, vba ou SQL dans ma biliothèque...
Pour moi, la seule et unique _saine lecture_, ce sont tous les posts du forum pendant 6 mois.
C'est comme ça que je me suis auto-formé ;-)
Au début, tu comprends environ 5% des questions et des réponses qui sont apportées,
Au bout de 6 mois, tu comprends 50% des questions, et au bout d'1 an,
tu dois connaître la réponse à 50% des questions posées (à la louche)
Mais il y aura toujours des questions et des réponses qu'on ne comprendra pas,
ni toi ni personne ;-))
Tiens pour le plaisir, voici un petit bout de code pour créer une table depuis VBA :
avec un petit échantillon de champs.
On peut ensuite rajouter quelques propriétés ....
J'en ai inhibé quelques uns (champs) car si je les met tous et notamment le dernier,
j'ai une erreur Run-time error 3047 "L'enregistrement est trop long",
alors que si on les met tous et qu'on fait un for i = 8 to 17, ça passe ....
Sub gf()
Dim dbs As DAO.Database
Dim tdf As DAO.TableDef
Dim fld As DAO.Field
Dim i As Integer
Dim a(1 To 17) As String
a(1) = "dbBoolean"
a(2) = "dbByte"
a(3) = "dbInteger"
a(4) = "dbLong"
a(5) = "dbCurrency"
a(6) = "dbSingle"
a(7) = "dbDouble"
a(8) = "dbDate"
a(9) = "dbBinary"
a(10) = "dbText"
'a(11) = "dbLongBinary" '(OLE Object)
a(12) = "dbMemo"
'a(15) = "dbGUID"
a(16) = "dbBigInt"
'a(17) = "dbVarBinary"
Set dbs = CurrentDb()
Set tdf = dbs.CreateTableDef("LaTable")
'On Error Resume Next
For i = 1 To 17
If a(i) <> "" Then
Set fld = tdf.CreateField("Chp_" & a(i), i)
fld.OrdinalPosition = i
tdf.Fields.Append fld
Set fld = Nothing
End If
Next i
dbs.TableDefs.Append tdf
RefreshDatabaseWindow
Set tdf = Nothing
Set dbs = Nothing
End Sub
--
à+
Arnaud
----------------------------------------------
Conseils d'utilisation, sites recommandés :
http://users.skynet.be/mpfa/
Access Memorandum - Les tablettes d'Anor
www.anor.fr.st
----------------------------------------------
Bonjour Christan,
| Merci encore, en deux jours d'échanges, j'ai appris plein de choses et
| pas uniquement des formules. Les 7 points pour progresser en SQL sont
| à méditer. je suis en vacances et la pêche ne donne pas grand chose ;
| aurais-tu une saine lecture à me conseiller sur la programmation pour
| access. Je possède les 2 bouquins de H Inisan qui sont plutôt orientés
| vers des apllications.
| Christian ATZEL
à vrai dire, je n'ai *aucun* bouquin sur access, vba ou SQL dans ma biliothèque...
Pour moi, la seule et unique _saine lecture_, ce sont tous les posts du forum pendant 6 mois.
C'est comme ça que je me suis auto-formé ;-)
Au début, tu comprends environ 5% des questions et des réponses qui sont apportées,
Au bout de 6 mois, tu comprends 50% des questions, et au bout d'1 an,
tu dois connaître la réponse à 50% des questions posées (à la louche)
Mais il y aura toujours des questions et des réponses qu'on ne comprendra pas,
ni toi ni personne ;-))
Tiens pour le plaisir, voici un petit bout de code pour créer une table depuis VBA :
avec un petit échantillon de champs.
On peut ensuite rajouter quelques propriétés ....
J'en ai inhibé quelques uns (champs) car si je les met tous et notamment le dernier,
j'ai une erreur Run-time error 3047 "L'enregistrement est trop long",
alors que si on les met tous et qu'on fait un for i = 8 to 17, ça passe ....
Sub gf()
Dim dbs As DAO.Database
Dim tdf As DAO.TableDef
Dim fld As DAO.Field
Dim i As Integer
Dim a(1 To 17) As String
a(1) = "dbBoolean"
a(2) = "dbByte"
a(3) = "dbInteger"
a(4) = "dbLong"
a(5) = "dbCurrency"
a(6) = "dbSingle"
a(7) = "dbDouble"
a(8) = "dbDate"
a(9) = "dbBinary"
a(10) = "dbText"
'a(11) = "dbLongBinary" '(OLE Object)
a(12) = "dbMemo"
'a(15) = "dbGUID"
a(16) = "dbBigInt"
'a(17) = "dbVarBinary"
Set dbs = CurrentDb()
Set tdf = dbs.CreateTableDef("LaTable")
'On Error Resume Next
For i = 1 To 17
If a(i) <> "" Then
Set fld = tdf.CreateField("Chp_" & a(i), i)
fld.OrdinalPosition = i
tdf.Fields.Append fld
Set fld = Nothing
End If
Next i
dbs.TableDefs.Append tdf
RefreshDatabaseWindow
Set tdf = Nothing
Set dbs = Nothing
End Sub
--
à+
Arnaud
----------------------------------------------
Conseils d'utilisation, sites recommandés :
http://users.skynet.be/mpfa/
Access Memorandum - Les tablettes d'Anor
www.anor.fr.st
----------------------------------------------