hyrockbass
Messages postés25Date d'inscriptionjeudi 30 juin 2005StatutMembreDernière intervention 6 janvier 2006
-
6 sept. 2005 à 10:21
hyrockbass
Messages postés25Date d'inscriptionjeudi 30 juin 2005StatutMembreDernière intervention 6 janvier 2006
-
6 sept. 2005 à 16:34
Bonjour,
j'aimerai savoir comment faire pour importer une table d'une base de données access vers une autre base de données access. Aussi, il faut savoir que la table que je veux importer existe déjà dans ma base de données je veux donc la supprimer avant de la réimporter. Il s'agit en fait de faire une sorte de mise à jour. Au début je voulais copier ligne par ligne mais le problème est que je ne connais pas le nombre de colonne de ma table (car je veux le faire pour plusieurs tables) je ne peux donc pas faire un truc du genre :
Tbl.fields(Nb) = qqch 'sachant que je ne connai pas le "Nb" maxi pour chacune des tables.
De plus ça serai vrament trop long.
Je veu donc simplement connaitre la syntaxe pour i:mporter une table d'une application à une autre et comment supprimer une table. Merci d'avance à ceux qui me répondrons.
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 6 sept. 2005 à 11:21
Le code que je t'ai donné
est un code générique, il faut l'utiliser avec les noms que tu utilise
dans ton projet, vu que chacun à sa propre nomenclature, on ne peux pas
faire du code qui réponde exactement au question !
Dans ton cas, voici ce que ca donne :
'connexion a la base
Dim MaDb as new ADODB.Connection
Set Madb = CurrentProject.Connection
'déclaration et initialisation de la table à importer
DimTblAImporter as new ADODB.recordset
TblAImporter.open "Select * from PIECE in <CheminBaseExterne>, madb, adopendynamic, adlockoptimistic
'declaration et initialisation de la table dans laquelle je veu inserer les données
Dim TblCourante as new ADODB.recordset
'effacement des données de la table courante
While not TblCourante.EOF
TblCourante.delete
TblCourante.update
WEnd
dim oField As ADODB.Field
'Insertion des données dans la table courante
While not TblAImporter.EOF
Call TblCourante .AddNew
For Each oField In TblAImporter.Fields
Let TblCourante.Fields(oField.Name).Value =
TblAImporter.Fields(oField.Name).Value
Next oField
Call TblCourante.Update
Call TblAImporter.MoveNext
WEnd
DarK Sidious
Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
hyrockbass
Messages postés25Date d'inscriptionjeudi 30 juin 2005StatutMembreDernière intervention 6 janvier 2006 6 sept. 2005 à 11:09
Merci, mais je ne comprend pas très bien le oRecordsetSource il correspond à quoi?
Idem pour le oFields. En fait, je ne sais pas comment m'en servir dans mon cas :
voici ce que je fais :
'connexion a la base
Dim MaDb as new ADODB.Connection
Set Madb = CurrentProject.Connection
'déclaration et initialisation de la table à importer
DimTblAImporter as new ADODB.recordset
TblAImporter.open "Select * from PIECE in <CheminBaseExterne>, madb, adopendynamic, adlockoptimistic
'declaration et initialisation de la table dans laquelle je veu inserer les données
Dim TblCourante as new ADODB.recordset
'effacement des données de la table courante
While not TblCourante.EOF
TblCourante.delete
TblCourante.update
WEnd
'Insertion des valeur
While Not TblAImporter.eof
TblCourante.fields(0) = TblAImporter.fields(0)
.........
'Le pb est ici je ne sais pas combien j'ai de colonne
WEnd