Imporatation données (ligne par ligne colonne par colonne access) vers SQL

adnil543210 Messages postés 16 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 20 décembre 2004 - 15 déc. 2004 à 16:09
adnil543210 Messages postés 16 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 20 décembre 2004 - 20 déc. 2004 à 12:19
Bonjour a tous et a toutes,
je suis débutante en programmation, je ne sais pas par ou commencer, je dois programmer un module ( une moulinnette) en VB sous access de préference ( meme si je ne sais pas comment m'y prendre) car je n'ai pas VB6.
cette moulinette (ou module) devra faire l'importation de toute les données de la base access c'est a dire tous les enregistrement, et les insérer dans la base SQL Serveur (existante). si quelqu'un piourrait m'aider ....
merci mon adresse e-mail;xxxxxxxxxxadnil543210@hotmail.comxxxxxx
merci pour votre aide!

20 réponses

cs_labout Messages postés 1356 Date d'inscription samedi 8 décembre 2001 Statut Membre Dernière intervention 23 octobre 2006 8
15 déc. 2004 à 16:43
labout

Pas la peine d'écrire quoique ce soit

SLQ Server le fait tout seul avec le DTS

Dans Entreprise Manager
Se connecter au serveur puis à la base

Sur la base de données
Clic Droit
Toutes les tâches
Importer les données
Sélectionner la base Access
Suivant
Sélectionner la base SQL si elle existe sinon Nouveau
Donner un nom
Suivant puis terminer

@+
0
adnil543210 Messages postés 16 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 20 décembre 2004
15 déc. 2004 à 16:58
je ne parle pas de la migration je parle de Bonjour
j'ai un grand probleme et je ne sais a qui demander de l'aide j'ai trouvé quelques source à vous sur le site et je me suis dit que vuos pourreiez m'aider.

Importation données (ligne par ligne colonne par colonne access) vers SQL

Je suis débutante en programmation, je ne sais pas par ou commencer, je dois programmer un module (une moulinette) en VB sous access de préference (meme si je ne sais pas comment m'y prendre) car je n'ai pas VB6.
Cette moulinette (ou module) devra faire l'importation de toute les données qui se trouvent sur la base access: ligne par ligne, colonne par colonne et faire le transfert sur la base de données SQL( donc se connecter a la base acces), c'est a dire transferer tous les enregistrements, et les insérer 1 par un en effectuant ( des incrémentations, de la suppression etc sur la base access,et effectuer la suppression des doublons ...etc...)
Si vous pouvez m'aider a m'y retrouver car je n'ai pas la moindre idée pour commencer...
( je suis debutante en programmation : je ne sais meme pas où il faut mettre le code dans l'editeur de texte de VS, d'access 2000 et j'ai SQL Serveur 2000 version entreprise)

ps: si vous avez des sourcesen Visual Basic ( celui d'access 2000; Sites, ou autre tout m'interresse)

Merci pour votre aide!
0
cs_labout Messages postés 1356 Date d'inscription samedi 8 décembre 2001 Statut Membre Dernière intervention 23 octobre 2006 8
15 déc. 2004 à 17:18
labout

jE NE COMPRENDS PAS et je sens un certain énervement.
Il s'agit bien d'importer les données dnc DTS quand à élimner les doublons c'est aussi possible avec l'analyseur de requêtes.

Maintenant si ma solution est trop simple il faut développer une moulinette sous VB avec une connection ADO sur la base access
et une connection ADO sur la base SQL
Un recordset sur la première table avec elimination des doublons.
Parcours du recordset avec insertion dans la table correspondante SQL Server et ainsi de suite pour chaque table.

@+
0
adnil543210 Messages postés 16 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 20 décembre 2004
15 déc. 2004 à 17:47
voila c''est a peu pres cela mais je ne comprend pas tres bien est ce possible de me donner plus de précisions??? svp merci et dsl pour l'enervement......je suis vraiment enervée... aussi excusez moi si je formule mal mes questions....en tout cas je n'arrive meme pas a commencer cette moulinette je ne sais meme pas comment commencer sous access ( editeur VB) c'est que le temps presse et j'avance pas du tout
encore merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
adnil543210 Messages postés 16 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 20 décembre 2004
15 déc. 2004 à 17:52
en fait le but c'est d'importer les données ( ligne par ligne colonee par colonne ) cad si dans la colonne 1 ligne 1 on a une donnée la transferer vers la base SQL a l'endroit approprié) ( qui se trouvent sur access) vers la base SQL on me parles de ficheirs CSV ( cad a dire de faire le transfert depuis un fichier CSV ( programmé en VB sous l'editeur intégré d'access 2000) est ceque c'est plus clair.
0
cs_labout Messages postés 1356 Date d'inscription samedi 8 décembre 2001 Statut Membre Dernière intervention 23 octobre 2006 8
15 déc. 2004 à 18:26
labout

Voici un exemple mais il suppose que les champs aient le même nom dans les 2 bases SQL et ACESS

Inclure la référence MicroSoft ActiveX Data Objects 2.?? dans le projet c'est 2.6 ou 2.8

Private Sub Form_Load()
Dim GocnxAccess As New ADODB.Connection
Dim GocnxSql As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim i As Integer
Dim req As String
Dim champ As String

GocnxAccess.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\vb.net\Immo\Immo\Database\Immo.mdb;Persist Security Info=False"
GocnxSql.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=IMMO;Data Source=JMB76"
GocnxAccess.Open
GocnxSql.Open

Set rs = GocnxAccess.Execute("select * from immo ")
Do While Not rs.EOF
For i = 0 To rs.Fields.Count - 1
champ = champ & rs.Fields(i).Name & ","
Select Case rs.Fields(i).Type
Case adDate
req = req & rs.Fields(i).Value & ","
Case adVarWChar
req = req & "'" & Replace(rs.Fields(i).Value, "'", "''") & "',"
Case adDouble
req = req & Replace(rs.Fields(i).Value, ",", ".") & ","
Case adLongVarWChar
req = req & "'" & Trim(Replace(rs.Fields(i).Value, "'", "''")) & "',"
Case adCurrency
req = req & Replace(rs.Fields(i).Value, ",", ".") & ","
Case adInteger
req = req & rs.Fields(i).Value & ","
Case Else
req = req & "'" & Replace(rs.Fields(i).Value, "'", "''") & "',"

End Select

Next
req = Left(req, Len(req) - 1)
champ = Left(champ, Len(champ) - 1)
GocnxSql.Execute "Insert into immo (" & champ & ") values(" & req & ")"
rs.MoveNext
Loop

End Sub
0
cs_labout Messages postés 1356 Date d'inscription samedi 8 décembre 2001 Statut Membre Dernière intervention 23 octobre 2006 8
15 déc. 2004 à 18:27
labout

pour supprimer les doublons prévoir
Set rs = GocnxAccess.Execute("select distinct * from immo ")
ou immo est le nom de la table

@+
0
cs_labout Messages postés 1356 Date d'inscription samedi 8 décembre 2001 Statut Membre Dernière intervention 23 octobre 2006 8
15 déc. 2004 à 18:31
labout

Mais non les fichiers CSV ne sont pas nécessaire avec l'exemple fourni.

Je maintiens que c'est le DTS de SQL Server qu'il faut utiliser et je peux dire que j'en ai fait un bon nombre des transfert d'Access vers SQL Server au cours de mes différentes missions.

Le DTS cité dans ma première réponse est la soultion sinon l'exemple fourni s'il faut du code pour faire compliqué.

Je développe depuis 20 ans et 10 ans de VB et SQL Server je connais donc toutes les ficelles.

@+
0
adnil543210 Messages postés 16 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 20 décembre 2004
16 déc. 2004 à 09:51
rebonjour, votre compétence est évidente... merci bcp pour votre aide, au moins je vais pouvoir commencer...
Enfin c'est exactement ce que je voudrais faire l'imporation des données de access ver SQL , dans mon cas g plusieurs champs (ou colonnes) sous access, exemple (Francais, Anglais, Définition,Acronyme...etc), mais sous SQL le noms des tables sont differentes et les champs aussi (donc il va falloir que je transfert a partir de chaque champs d'access que je lise la donnée que je compte les données et qu'en meme temps que je la transfert (que quand je la transfert vers SQL j'insert une clé pour chaque donnée de chaque champ) mé aussi qu'un fur et a mesure que je transfert toutes les données d'un enregistrement c'est a dire une ligne entierement lue d'access, je la supprime de la table )
0
adnil543210 Messages postés 16 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 20 décembre 2004
16 déc. 2004 à 09:55
aussi est qu'il me faut imprétivement VB6 ( que je n'ai pas) ou est cque je eux me débrouiller avec l'éditeur integré d'access, sinon comment procéder dans l'editeur VB d'access est ce que je procède de la meme maniere qu'avec les macros??? où dois je insérer les ligne de codes???? sincerement je n'ai aucune idée... merci lbout pour votre aide...merci beaucoup beaucoup
0
cs_labout Messages postés 1356 Date d'inscription samedi 8 décembre 2001 Statut Membre Dernière intervention 23 octobre 2006 8
16 déc. 2004 à 19:11
labout

C'eest possible avec access, le code doit peu changer.
Il faut mettre le code dans un module et l'exécuter mais je ne suis pas un pro de ACCESS je l'ai fait mais il y a un certain temps.
Le problème réside dans le nom des champs différents donc mon code sera à modifier, champ devra contenir les champs dans l'ordre ou ils sont dans access
champ est égal à "champ1,Champ2,champ3 etc)

Donc créer un module maj mettre le code qui devrait marcher
puis lancer la sub

sub maj au lieu de sub form_load

@+
0
adnil543210 Messages postés 16 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 20 décembre 2004
17 déc. 2004 à 10:05
Bonjour,

Mon probleme s'est résolu partiellement déja je sais ou il faut procédér, et comment surtout aussi comment me connecter a la base SQL et la base access maintenat me reste quelque petits détails...
Est ce que je pourrai avoir droit a quelques commentaires du code que vous m'avez envoyé précédement?

Par exemple ici je comprend qu'ici on remplace un champ si je ne me trompes pas? Mais je ne comprends pas c'est quoi les "'", "''")quillemets les virgules? bref je crois que je n'ai rien compri tout court...

req = req & "'" & Replace(rs.Fields(i).Value, "'", "''") & "',"

encore mille merci Labout
Merci pour Votre Aide.

Adnil
0
cs_labout Messages postés 1356 Date d'inscription samedi 8 décembre 2001 Statut Membre Dernière intervention 23 octobre 2006 8
17 déc. 2004 à 10:58
labout

Tout simple SQL n'aime pas les chaines de caractère avce un ' ils doivent être remplacés par 2 '.
Les , séparent les les valeurs.

exemple

Insert into matable (champ1,champ2, champ3) values (
"12345,23 rue de l''hopital,34.34)
@+
0
adnil543210 Messages postés 16 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 20 décembre 2004
17 déc. 2004 à 11:23
j'ai compris mais en executant le programme bloque tjrs sur cet ligne de code, et pour le sub maj au lieu de sub form_load, ca ne passe pas pourquoi sub maj?
au lieu de l'autre ?
Merci pour Votre Aide.

Adnil
0
adnil543210 Messages postés 16 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 20 décembre 2004
17 déc. 2004 à 11:23
j'ai compris mais en executant le programme bloque tjrs sur cet ligne de code, et pour le sub maj au lieu de sub form_load, ca ne passe pas pourquoi sub maj?
au lieu de l'autre ?
Merci pour Votre Aide.

Adnil
0
cs_labout Messages postés 1356 Date d'inscription samedi 8 décembre 2001 Statut Membre Dernière intervention 23 octobre 2006 8
17 déc. 2004 à 11:43
labout

le code peut être mis sur n'importe quel évènement par exemple l'évènement clic d'un bouton.

Maintenant si la ligne bloque et sur quelle ligne
c'est qu'il y a un bug.
Regarder le contenu de req à l'aide du debugger, je ne serai pas étonné que nous ayons une valeur du type 123,45
et dans ce cas il faut remplacer la virgule par un point
Replace(rs.Fields(i).Value, ",", ".")

Et quel est le message d'erreur.

@+
0
adnil543210 Messages postés 16 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 20 décembre 2004
20 déc. 2004 à 11:37
Merci pour Votre Aide.

Je crois qu'il y a peut etre moyen avec les DTS comme vous me l'avez dit dès le départ, mais je ne sais pas comment procéder.. il y plusieurs choix et on peut ajouter des requetes SQL lors du transfert des données ...
Est ce que ce serait possible de ce contacter par e mail pour que je puisse vous envoyer deux fichiers pour que j'arrive a vous expliquer. ce que je veux faire c'est une sorte de nettoyage, la base access est totalement differente de celle de SQL, a vrai dire , les champs qui se trouvent sous access deviendros des tables dans la base access...
si ilm y a moyen de prendre contact par email se serait plus simple, juste pour vous envoyer le modele conceptuel et les champs access. merci de me répondre Labout ( j'ai une pression enorme, grace à vous j'ai commencé et je voudrais bien terminer...).
Adnil
0
adnil543210 Messages postés 16 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 20 décembre 2004
20 déc. 2004 à 11:39
Merci pour Votre Aide.

Je crois qu'il y a peut etre moyen avec les DTS comme vous me l'avez dit dès le départ, mais je ne sais pas comment procéder.. il y plusieurs choix et on peut ajouter des requetes SQL lors du transfert des données ...
Est ce que ce serait possible de se contacter par e mail pour que je puisse vous envoyer deux fichiers pour que j'arrive a vous expliquer. ce que je veux faire c'est une sorte de nettoyage, la base access est totalement differente de celle de SQL, a vrai dire , les champs qui se trouvent sous access deviendrons des tables dans la base SQL...
si ilm y a moyen de prendre contact par email se serait plus simple, juste pour vous envoyer le modele conceptuel et les champs access. merci de me répondre Labout ( j'ai une pression enorme, grace à vous j'ai commencé et je voudrais bien terminer...).
Adnil
Merci pour Votre Aide.

Adnil
0
cs_labout Messages postés 1356 Date d'inscription samedi 8 décembre 2001 Statut Membre Dernière intervention 23 octobre 2006 8
20 déc. 2004 à 11:50
labout

Ok mon email est indiqué dans mon profil.
@+
0
adnil543210 Messages postés 16 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 20 décembre 2004
20 déc. 2004 à 12:19
je vous ai envoyé un mail avec les explications et les deux fichiers.
Merci pour Votre Aide.

Adnil
0
Rejoignez-nous