Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

creer une table attachée avec VB

3 réponses
Avatar
th
Bonjour à tous, si je sais créer une table avec différents champs sous VB5,
je ne sais pas comment faire pour attacher un table issue d'un autre
fichier access.
Le but du jeu est :
je fournis une base nouvelles aux utilisateurs, et cette nouvelle base doit
avoir un table attachée d'une autre base placée dans un répertoire
different suivant les poste utilisateurs.

J'ai essayé avec
base1.CreateTableDef("table1", , chemin & "base2.mdb", "table1")
mais sans succés. Il n'y a pas de message d'erreur et lorsque j'ouvre la
base1 sous acces il n'y a toujours pas la table1 attachée.

Cette manipe ne sera à faire qu'une fois par poste de travail.

merci pour votre aide

3 réponses

Avatar
Gloops
Bonjour,

As-tu essayé par l'instruction SQL "CREATE TABLE" ?


th a écrit, le 11/05/2005 15:44 :

Bonjour à tous, si je sais créer une table avec différents champs sous VB5,
je ne sais pas comment faire pour attacher un table issue d'un autre
fichier access.
Le but du jeu est :
je fournis une base nouvelles aux utilisateurs, et cette nouvelle base doit
avoir un table attachée d'une autre base placée dans un répertoire
different suivant les poste utilisateurs.

J'ai essayé avec
base1.CreateTableDef("table1", , chemin & "base2.mdb", "table1")
mais sans succés. Il n'y a pas de message d'erreur et lorsque j'ouvre la
base1 sous acces il n'y a toujours pas la table1 attachée.

Cette manipe ne sera à faire qu'une fois par poste de travail.

merci pour votre aide


Avatar
ANDBRETON
Voici une sub que j'utilise pour attacher toutes les tables d'une base
a une autre.
La fonction non decrite ListeNomTable3 remplit le tableau tabTable avec
le nom des tables a attacher.

la partie qui t'interresse est :
Set TbDAOt = DbDAOt.CreateTableDef(tabTable(I))
TbDAOt.Connect = ";DATABASE=" & pBaseEloignee & ";"
TbDAOt.SourceTableName = tabTable(I)
DbDAOt.TableDefs.Append TbDAOt

---------------------------------------------------
Sub AttachTableDAO(pBaseDeTravail As String, pBaseEloignee As String,
Noer As Integer, FlgRet As Boolean)
'pBaseDeTravail : chemin de la base de travail (c:base.mdb)
'pBaseEloignee : chemin de la base eloignee
Dim Fso As New FileSystemObject
Dim DbDAOt As Database
Dim TbDAOt As TableDef

Dim Etape As Integer
Dim FonctionEnCours As String
Dim I As Integer
Dim tabTable
Dim NbTableAttachee As Integer

'--
On Error GoTo fin
FlgRet = True
Noer = 0

Etape = 1
FonctionEnCours = "RechercheTablesEloignee"
If Not Fso.FileExists(pBaseEloignee) Then
FlgRet = False
Noer = 1 'La base eloignee n'existe pas
Else
Etape = 2
tabTable = ListeNomTable3(pBaseEloignee, False)
Etape = 3
NbTableAttachee = tabTable(0)
If NbTableAttachee = 0 Then
FlgRet = False
Noer = 2 'Pas de table dans la base eloignee
Else
Etape = 4
FonctionEnCours = "AttacheTableEloignee"
Set DbDAOt = DBEngine.OpenDatabase(pBaseDeTravail)
Etape = 5
For I = 1 To NbTableAttachee
Set TbDAOt = DbDAOt.CreateTableDef(tabTable(I))
TbDAOt.Connect = ";DATABASE=" & pBaseEloignee & ";"
TbDAOt.SourceTableName = tabTable(I)
DbDAOt.TableDefs.Append TbDAOt
Next
Set TbDAOt = Nothing
DbDAOt.Close
Set DbDAOt = Nothing
End If
End If
GoTo FinFin
fin:
'MsgBox FonctionEnCours & "/" & Etape & " : " & err.Number & "/" &
err.Description
Call MessErr(FonctionEnCours, EtapeEnCours, FRMMAIN, 0, err.Number
& UnSlash & err.Description, False)
Select Case err.Number
Case 3012
FlgRet = False
Noer = 3 'Une table locale porte le meme nom qu'une table à
attacher
Resume Next
Case Else
FlgRet = False
Noer = 9
End Select
FinFin:
'--
Set Fso = Nothing
Erase tabTable
End Sub
-------------------------------------------------------------
j'espere que c'est ce que tu cherchais.



Gloops a écrit :
Bonjour,

As-tu essayé par l'instruction SQL "CREATE TABLE" ?


th a écrit, le 11/05/2005 15:44 :

> Bonjour à tous, si je sais créer une table avec différents


champs sous VB5,
> je ne sais pas comment faire pour attacher un table issue d'un


autre
> fichier access.
> Le but du jeu est :
> je fournis une base nouvelles aux utilisateurs, et cette nouvelle


base doit
> avoir un table attachée d'une autre base placée dans un


répertoire
> different suivant les poste utilisateurs.
>
> J'ai essayé avec
> base1.CreateTableDef("table1", , chemin & "base2.mdb", "table1")
> mais sans succés. Il n'y a pas de message d'erreur et lorsque


j'ouvre la
> base1 sous acces il n'y a toujours pas la table1 attachée.
>
> Cette manipe ne sera à faire qu'une fois par poste de travail.
>
> merci pour votre aide


Avatar
th
"ANDBRETON" écrivait
news::

Voici une sub que j'utilise pour attacher toutes les tables d'une base
a une autre.
La fonction non decrite ListeNomTable3 remplit le tableau tabTable avec
le nom des tables a attacher.

la partie qui t'interresse est :
Set TbDAOt = DbDAOt.CreateTableDef(tabTable(I))
TbDAOt.Connect = ";DATABASE=" & pBaseEloignee & ";"
TbDAOt.SourceTableName = tabTable(I)
DbDAOt.TableDefs.Append TbDAOt

---------------------------------------------------
Sub AttachTableDAO(pBaseDeTravail As String, pBaseEloignee As String,
Noer As Integer, FlgRet As Boolean)
'pBaseDeTravail : chemin de la base de travail (c:base.mdb)
'pBaseEloignee : chemin de la base eloignee
Dim Fso As New FileSystemObject
Dim DbDAOt As Database
Dim TbDAOt As TableDef

Dim Etape As Integer
Dim FonctionEnCours As String
Dim I As Integer
Dim tabTable
Dim NbTableAttachee As Integer

'--
On Error GoTo fin
FlgRet = True
Noer = 0

Etape = 1
FonctionEnCours = "RechercheTablesEloignee"
If Not Fso.FileExists(pBaseEloignee) Then
FlgRet = False
Noer = 1 'La base eloignee n'existe pas
Else
Etape = 2
tabTable = ListeNomTable3(pBaseEloignee, False)
Etape = 3
NbTableAttachee = tabTable(0)
If NbTableAttachee = 0 Then
FlgRet = False
Noer = 2 'Pas de table dans la base eloignee
Else
Etape = 4
FonctionEnCours = "AttacheTableEloignee"
Set DbDAOt = DBEngine.OpenDatabase(pBaseDeTravail)
Etape = 5
For I = 1 To NbTableAttachee
Set TbDAOt = DbDAOt.CreateTableDef(tabTable(I))
TbDAOt.Connect = ";DATABASE=" & pBaseEloignee & ";"
TbDAOt.SourceTableName = tabTable(I)
DbDAOt.TableDefs.Append TbDAOt
Next
Set TbDAOt = Nothing
DbDAOt.Close
Set DbDAOt = Nothing
End If
End If
GoTo FinFin
fin:
'MsgBox FonctionEnCours & "/" & Etape & " : " & err.Number & "/" &
err.Description
Call MessErr(FonctionEnCours, EtapeEnCours, FRMMAIN, 0, err.Number
& UnSlash & err.Description, False)
Select Case err.Number
Case 3012
FlgRet = False
Noer = 3 'Une table locale porte le meme nom qu'une table à
attacher
Resume Next
Case Else
FlgRet = False
Noer = 9
End Select
FinFin:
'--
Set Fso = Nothing
Erase tabTable
End Sub
-------------------------------------------------------------
j'espere que c'est ce que tu cherchais.



Gloops a écrit :
Bonjour,

As-tu essayé par l'instruction SQL "CREATE TABLE" ?


th a écrit, le 11/05/2005 15:44 :

> Bonjour à tous, si je sais créer une table avec différents


champs sous VB5,
> je ne sais pas comment faire pour attacher un table issue d'un


autre
> fichier access.
> Le but du jeu est :
> je fournis une base nouvelles aux utilisateurs, et cette nouvelle


base doit
> avoir un table attachée d'une autre base placée dans un


répertoire
> different suivant les poste utilisateurs.
>
> J'ai essayé avec
> base1.CreateTableDef("table1", , chemin & "base2.mdb", "table1")
> mais sans succés. Il n'y a pas de message d'erreur et lorsque


j'ouvre la
> base1 sous acces il n'y a toujours pas la table1 attachée.
>
> Cette manipe ne sera à faire qu'une fois par poste de travail.
>
> merci pour votre aide







Merci, c'est exactement ce que je cherchais, j'avais quelque chose
d'approchant mais une syntaxe différente (TbDAOt.Connect = "TEXT;DATABASE="
& pBaseEloignee .
Cette fois-ci ma table est correctement attachée lors de la premiere
utilisation de mon logiciel.

Thierry