OVH Cloud OVH Cloud

creation d'1 table

25 réponses
Avatar
yann
Bonjour,
voila jais un code qui me cree une table avec X colonne l'or de la creation
de cette mem table je voudrais ne pas voir son execution.


Private Sub miseen()
On Error Resume Next

Dim intX As Integer, intZ As Integer
Dim VAL As String

VAL = DCount("nomimage1", "||||||||||||||||||||")
For intX = 1 To VAL
For intZ = 1 To VAL
DoEvents
DoCmd.Hourglass True
Next intZ

DoCmd.OpenTable "||||||||||||||||||||"
DoCmd.RunCommand acCmdCopy
DoCmd.FindNext
DoCmd.OpenTable "Table1"
DoCmd.RunCommand acCmdInsertTableColumn
DoCmd.RunCommand acCmdPaste
Next intX

Debug.Print VAL
DoCmd.Close acTable, "Table1"
DoCmd.Close acTable, "||||||||||||||||||||"
DoCmd.OpenForm "Formulaire1"
DoCmd.Hourglass False
End Sub

10 réponses

1 2 3
Avatar
Raymond [mvp]
tu me dis que tu n'utilsies qu'une seule photo,
et ça correspond à quoi ?
Me!Image1.Picture = strChemin1
Me!Image2.Picture = strChemin2
Me!Image3.Picture = strChemin3


--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"yann" a écrit dans le message de
news:40b59bb8$0$7699$
oui oui ces presque ca


pour la plaquette photo j'utilise qu'une seul photo ces sur la form
secondaire ou il y a plus d'images mais sur celci pas de broblem ces sur
la

construction de la plaquette que ceu pose le problem.
voila jais fais une Form avec pour l'instant avec 100 control image et 250
control de champ pour le chemin de la miniature.
d'aillieur cettais fastidieu pour faire le code exemple

Dim strChemin1 As String
Dim strQuoi As String
Dim REPBASE As Variant
strQuoi = DLookup("repertoire", "[Informations sur ma société]")
REPBASE = strQuoi '"d:applysphoto"
strChemin1 = REPBASE & "" & Me!Champ2
strChemin2 = REPBASE & "" & Me!Champ3

Me!Image1.Picture = strChemin1
Me!Image2.Picture = strChemin2
Me!Image3.Picture = strChemin3

autant de fois qu'il y a de photo ces pas super clean mais ca marche

"Raymond [mvp]" a écrit dans le message de
news:
si j'ai bien compris tu as 7 images possibles par enregistrement de
produit

? Si tu passes par une table tu auras maximum 250 photos . il faudrait
passer par le formulaire directement pour approcher les 700 photos maxi.
que

voudrais-tu ?
si on passe par la table 250 photos, il est préférable que les contrôles
soient présents en permanence dans le formulaire pour éviter la création
de

250 contrôles photos.
Lire ta requête par VBA (voir problème si plusieurs photos par
enregistrement) et placer les photos dans les contrôles (images ou cadre
indépendant). Avec un clic sur la photo, le numéro de la photo permettra
d'aller chercher le même enregistrement dans la requête et de récupérer
tous

les champs pour la suite du programme.
ai-je bien compris
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"yann" a écrit dans le message de
news:40b58d08$0$7705$
Non non je ne cache rein jais du mal a me faire comprendre
regarde je te donne tous on commence par droper la TABLE1 puis la
recree



je fais mon select (composer de chapitre et famille et soufamille)
j'ecrie 2 requettes la 1 "prodselect.sql" qui contient tous les
enregistrements de la composition du formulaire secondaire (form qui
doi



apparaitre apres la plaquette photo).
la 2 "ProdSelect Requête" qui est une requette de creation de table
(SELECT

ProdSelect.NomImage1 INTO [||||||||||||||||||||]
FROM ProdSelect)
puis je fais 1 Call sur la SUB "miseen" qui ajoute les donnees à la
table


"[||||||||||||||||||||]" en TABLE1 (mon copier coller)










Avatar
yann
ceu son les photo pour la plaquette (elle sont recuperer de la table
[||||||||||||||||] pour les inserer dans la TABLE1
(toujour mon probleme de transformer la table [|||||||||||||||||] ver la
table1).
la table [|||||||||||||||||||||] a des enregistrement comme ceuci

col1
ligne1 image1
ligne2 imgae2
etc.
etc.

et la TABLE1 resulta du code VBA (le copier coller de la table
[|||||||||||||] ver la TABLE1

qui doit resemble à
col1 col2 col3 col4 etc.....
ligne1 image1 image2 image3 image4 etc.............

"Raymond [mvp]" a écrit dans le message de
news:
tu me dis que tu n'utilsies qu'une seule photo,
et ça correspond à quoi ?
Me!Image1.Picture = strChemin1
Me!Image2.Picture = strChemin2
Me!Image3.Picture = strChemin3


--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"yann" a écrit dans le message de
news:40b59bb8$0$7699$
oui oui ces presque ca


pour la plaquette photo j'utilise qu'une seul photo ces sur la form
secondaire ou il y a plus d'images mais sur celci pas de broblem ces sur
la

construction de la plaquette que ceu pose le problem.
voila jais fais une Form avec pour l'instant avec 100 control image et
250


control de champ pour le chemin de la miniature.
d'aillieur cettais fastidieu pour faire le code exemple

Dim strChemin1 As String
Dim strQuoi As String
Dim REPBASE As Variant
strQuoi = DLookup("repertoire", "[Informations sur ma société]")
REPBASE = strQuoi '"d:applysphoto"
strChemin1 = REPBASE & "" & Me!Champ2
strChemin2 = REPBASE & "" & Me!Champ3

Me!Image1.Picture = strChemin1
Me!Image2.Picture = strChemin2
Me!Image3.Picture = strChemin3

autant de fois qu'il y a de photo ces pas super clean mais ca marche

"Raymond [mvp]" a écrit dans le message de
news:
si j'ai bien compris tu as 7 images possibles par enregistrement de
produit

? Si tu passes par une table tu auras maximum 250 photos . il faudrait
passer par le formulaire directement pour approcher les 700 photos
maxi.



que
voudrais-tu ?
si on passe par la table 250 photos, il est préférable que les
contrôles



soient présents en permanence dans le formulaire pour éviter la
création



de
250 contrôles photos.
Lire ta requête par VBA (voir problème si plusieurs photos par
enregistrement) et placer les photos dans les contrôles (images ou
cadre



indépendant). Avec un clic sur la photo, le numéro de la photo
permettra



d'aller chercher le même enregistrement dans la requête et de
récupérer



tous
les champs pour la suite du programme.
ai-je bien compris
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"yann" a écrit dans le message de
news:40b58d08$0$7705$
Non non je ne cache rein jais du mal a me faire comprendre
regarde je te donne tous on commence par droper la TABLE1 puis la
recree



je fais mon select (composer de chapitre et famille et soufamille)
j'ecrie 2 requettes la 1 "prodselect.sql" qui contient tous les
enregistrements de la composition du formulaire secondaire (form qui
doi



apparaitre apres la plaquette photo).
la 2 "ProdSelect Requête" qui est une requette de creation de table
(SELECT

ProdSelect.NomImage1 INTO [||||||||||||||||||||]
FROM ProdSelect)
puis je fais 1 Call sur la SUB "miseen" qui ajoute les donnees à la
table


"[||||||||||||||||||||]" en TABLE1 (mon copier coller)














Avatar
Raymond [mvp]
je mélange tout dans mon esprit .
ne parlons que du problème particulier.
1- transformer la table n lignes et 1 seul champ en une table 1 ligne n
champs
est-ce bon ou non ? le reste viendra plus tard.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"yann" a écrit dans le message de
news:40b5a18d$0$7699$
ceu son les photo pour la plaquette (elle sont recuperer de la table
[||||||||||||||||] pour les inserer dans la TABLE1
(toujour mon probleme de transformer la table [|||||||||||||||||] ver la
table1).
la table [|||||||||||||||||||||] a des enregistrement comme ceuci

col1
ligne1 image1
ligne2 imgae2
etc.
etc.

et la TABLE1 resulta du code VBA (le copier coller de la table
[|||||||||||||] ver la TABLE1

qui doit resemble à
col1 col2 col3 col4 etc.....
ligne1 image1 image2 image3 image4 etc.............



Avatar
yann
oui ces ca mon souci principale
a l'aide

"Raymond [mvp]" a écrit dans le message de
news:
je mélange tout dans mon esprit .
ne parlons que du problème particulier.
1- transformer la table n lignes et 1 seul champ en une table 1 ligne n
champs
est-ce bon ou non ? le reste viendra plus tard.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"yann" a écrit dans le message de
news:40b5a18d$0$7699$
ceu son les photo pour la plaquette (elle sont recuperer de la table
[||||||||||||||||] pour les inserer dans la TABLE1
(toujour mon probleme de transformer la table [|||||||||||||||||] ver la
table1).
la table [|||||||||||||||||||||] a des enregistrement comme ceuci

col1
ligne1 image1
ligne2 imgae2
etc.
etc.

et la TABLE1 resulta du code VBA (le copier coller de la table
[|||||||||||||] ver la TABLE1

qui doit resemble à
col1 col2 col3 col4
etc.....


ligne1 image1 image2 image3 image4 etc.............







Avatar
Raymond [mvp]
voici une procédure pour créer ta table:
la table à créer s'appelle Table_Tmp.
la table à lire table1.
ajuste les noms de champs à tes noms réels.
est-ce que ça te va ?

On Error Resume Next
DoCmd.DeleteObject acTable, "Table_Tmp"
Dim Db As DAO.Database
Dim Tbl As DAO.TableDef
Dim fld As DAO.Field
Dim idx As DAO.Index
Dim I As Integer

Set Db = CurrentDb()
Set Tbl = Db.CreateTableDef("Table_Tmp")
Set fld = Tbl.CreateField("Numéro", dbLong)
fld.OrdinalPosition = 1
fld.Attributes = dbAutoIncrField
Tbl.Fields.Append fld
For I = 1 To 250
Set fld = Tbl.CreateField("Image" & I, dbText, 50)
Tbl.Fields.Append fld
Next I
Set idx = Tbl.CreateIndex("PrimaryKey")
idx.Primary = True
idx.Required = True
idx.Unique = True
Set fld = idx.CreateField("Numéro")
idx.Fields.Append fld
Tbl.Indexes.Append idx
Db.TableDefs.Append Tbl
RefreshDatabaseWindow
Set Tbl = Nothing
Set fld = Nothing
Set idx = Nothing

Dim Rs As DAO.Recordset
Dim Rs1 As DAO.Recordset
Set Rs = Db.OpenRecordset("table1")
Set Rs1 = Db.OpenRecordset("table_tmp")
Rs1.AddNew
I = 0
Do Until Rs.EOF
I = I + 1
If I > 250 Then Exit Do
Rs1("image" & I) = Rs("champimage")
Rs.MoveNext
Loop
Rs1.Update
Set Rs = Nothing
Set Rs1 = Nothing
Set Db = Nothing


--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"yann" a écrit dans le message de
news:40b5a59e$0$7700$
oui ces ca mon souci principale
a l'aide


Avatar
yann
sa drop bien la Table_Tmp , ca la la recree avec les 250 champs images mais
les donnee de la TABLE1 (celle a lire) ne son pas integrer. booo :-(

"Raymond [mvp]" a écrit dans le message de
news:
voici une procédure pour créer ta table:
la table à créer s'appelle Table_Tmp.
la table à lire table1.
ajuste les noms de champs à tes noms réels.
est-ce que ça te va ?

On Error Resume Next
DoCmd.DeleteObject acTable, "Table_Tmp"
Dim Db As DAO.Database
Dim Tbl As DAO.TableDef
Dim fld As DAO.Field
Dim idx As DAO.Index
Dim I As Integer

Set Db = CurrentDb()
Set Tbl = Db.CreateTableDef("Table_Tmp")
Set fld = Tbl.CreateField("Numéro", dbLong)
fld.OrdinalPosition = 1
fld.Attributes = dbAutoIncrField
Tbl.Fields.Append fld
For I = 1 To 250
Set fld = Tbl.CreateField("Image" & I, dbText, 50)
Tbl.Fields.Append fld
Next I
Set idx = Tbl.CreateIndex("PrimaryKey")
idx.Primary = True
idx.Required = True
idx.Unique = True
Set fld = idx.CreateField("Numéro")
idx.Fields.Append fld
Tbl.Indexes.Append idx
Db.TableDefs.Append Tbl
RefreshDatabaseWindow
Set Tbl = Nothing
Set fld = Nothing
Set idx = Nothing

Dim Rs As DAO.Recordset
Dim Rs1 As DAO.Recordset
Set Rs = Db.OpenRecordset("table1")
Set Rs1 = Db.OpenRecordset("table_tmp")
Rs1.AddNew
I = 0
Do Until Rs.EOF
I = I + 1
If I > 250 Then Exit Do
Rs1("image" & I) = Rs("champimage")
Rs.MoveNext
Loop
Rs1.Update
Set Rs = Nothing
Set Rs1 = Nothing
Set Db = Nothing


--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"yann" a écrit dans le message de
news:40b5a59e$0$7700$
oui ces ca mon souci principale
a l'aide






Avatar
yann
Pardon ces super ca marche j'avais fais une erreure

"yann" a écrit dans le message de
news:40b4576c$0$27916$
Bonjour,
voila jais un code qui me cree une table avec X colonne l'or de la
creation

de cette mem table je voudrais ne pas voir son execution.


Private Sub miseen()
On Error Resume Next

Dim intX As Integer, intZ As Integer
Dim VAL As String

VAL = DCount("nomimage1", "||||||||||||||||||||")
For intX = 1 To VAL
For intZ = 1 To VAL
DoEvents
DoCmd.Hourglass True
Next intZ

DoCmd.OpenTable "||||||||||||||||||||"
DoCmd.RunCommand acCmdCopy
DoCmd.FindNext
DoCmd.OpenTable "Table1"
DoCmd.RunCommand acCmdInsertTableColumn
DoCmd.RunCommand acCmdPaste
Next intX

Debug.Print VAL
DoCmd.Close acTable, "Table1"
DoCmd.Close acTable, "||||||||||||||||||||"
DoCmd.OpenForm "Formulaire1"
DoCmd.Hourglass False
End Sub




Avatar
Raymond [mvp]
je l'ai testé , ça marchait.
est-ce que les champs correspondent avec les tiens ? mets des points d'arret
dans le code et vérifies la valeur des champs.
Rs1.AddNew
I = 0
Do Until Rs.EOF
I = I + 1
If I > 250 Then Exit Do
Rs1("image" & I) = Rs("champimage")
Rs.MoveNext
Loop
Rs1.Update



--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"yann" a écrit dans le message de
news:40b5b21f$0$7698$
sa drop bien la Table_Tmp , ca la la recree avec les 250 champs images
mais

les donnee de la TABLE1 (celle a lire) ne son pas integrer. booo :-(

"Raymond [mvp]" a écrit dans le message de
news:
voici une procédure pour créer ta table:
la table à créer s'appelle Table_Tmp.
la table à lire table1.
ajuste les noms de champs à tes noms réels.
est-ce que ça te va ?

On Error Resume Next
DoCmd.DeleteObject acTable, "Table_Tmp"
Dim Db As DAO.Database
Dim Tbl As DAO.TableDef
Dim fld As DAO.Field
Dim idx As DAO.Index
Dim I As Integer

Set Db = CurrentDb()
Set Tbl = Db.CreateTableDef("Table_Tmp")
Set fld = Tbl.CreateField("Numéro", dbLong)
fld.OrdinalPosition = 1
fld.Attributes = dbAutoIncrField
Tbl.Fields.Append fld
For I = 1 To 250
Set fld = Tbl.CreateField("Image" & I, dbText, 50)
Tbl.Fields.Append fld
Next I
Set idx = Tbl.CreateIndex("PrimaryKey")
idx.Primary = True
idx.Required = True
idx.Unique = True
Set fld = idx.CreateField("Numéro")
idx.Fields.Append fld
Tbl.Indexes.Append idx
Db.TableDefs.Append Tbl
RefreshDatabaseWindow
Set Tbl = Nothing
Set fld = Nothing
Set idx = Nothing

Dim Rs As DAO.Recordset
Dim Rs1 As DAO.Recordset
Set Rs = Db.OpenRecordset("table1")
Set Rs1 = Db.OpenRecordset("table_tmp")
Rs1.AddNew
I = 0
Do Until Rs.EOF
I = I + 1
If I > 250 Then Exit Do
Rs1("image" & I) = Rs("champimage")
Rs.MoveNext
Loop
Rs1.Update
Set Rs = Nothing
Set Rs1 = Nothing
Set Db = Nothing


--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"yann" a écrit dans le message de
news:40b5a59e$0$7700$
oui ces ca mon souci principale
a l'aide










Avatar
Raymond [mvp]
bon, maintenant prochaine étape ?

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"yann" a écrit dans le message de
news:40b5b296$0$7702$
Pardon ces super ca marche j'avais fais une erreure


Avatar
yann
Alors, ces sur le formulaire1 (la plaquette photo)
pour le chargement des images j'ais le code suivant

Dim strChemin1 As String
Dim strChemin2 As String
Dim strChemin3 As String
autant de fois que de control pareille pour
strChemin1 = REPBASE & "" & Me!Champ2
strChemin2 = REPBASE & "" & Me!Champ3
strChemin3 = REPBASE & "" & Me!Champ4
et pareille encore pour
Me!Image1.Picture = strChemin1
Me!Image2.Picture = strChemin2
Me!Image3.Picture = strChemin3

pourrait aller ce code

merci Raymond tes un Dieux pour tes conseil et ton aide pressieuce



"Raymond [mvp]" a écrit dans le message de
news:
bon, maintenant prochaine étape ?

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"yann" a écrit dans le message de
news:40b5b296$0$7702$
Pardon ces super ca marche j'avais fais une erreure






1 2 3