Access to / vers mysql et inversement

Soyez le premier à donner votre avis sur cette source.

Snippet vu 8 852 fois - Téléchargée 31 fois

Contenu du snippet

J'ai deja posté un code en C++ pour convertir une base access vers Mysql.
J'ai refait la meme chose en VB, directement sous access et en 10 fois moins de temps.
C'est en fait le code d'un bouton qu'il faut metrre dans un formulaire afin de sauvegarder tous les enregistrements d'une table.
La table s'appelle MyTable, et elle contien 4 champs noté field1 field2 field3 et field4

Le résultat est un fichier contenant le code d'ajout de toutes les lignes la table, du type:
INSERT INTO MyTable VALUES ('field1a','field2a','field3a','field4a');
INSERT INTO MyTable VALUES ('field1b','field2b','field3b','field4b');
etc...

Vous devez donc créer un formulaire sous access, y mettre un bouton(ne pas utiliser l'assistant)
Faire un clique droit sur le bouton et choisir "créer code évenement"
La, inserer le code ci joint, modifié selon vos propriétés...

Source / Exemple :


voici le code pour access to mysql

Private Sub NomDuBouton_Click()

Dim bd As Database
Dim strSQL As String
Dim rec As Recordset
Dim ligne As String
Dim FSys As Object
Dim MonFic As Object

Set bd = CurrentDb

strSQL = "SELECT * FROM MyTable"

'remplir le recordset
Set rec = bd.OpenRecordset(strSQL, dbOpenForwardOnly)

'Pour creer le fichier texte
Set FSys = CreateObject("Scripting.FileSystemObject")

'Choisir l'adresse du fichier de resultat
Set MonFic = FSys.CreateTextFile("adresse du fichier : C:\fichier.txt")

'Pour écrire dans le fichier texte
With MonFic

'Tant que le recordset contient des lignes d'enregistrement...
While Not (rec.EOF)

ligne = ""
ligne = "INSERT INTO AUXILIAIRES VALUES ('" & rec![field1] & "' , '" & rec![field2] & "' , '" & rec![field3] & "' , '" & rec![field4] & "' ) ;"

'On pour ecrit chaque ligne dans le fichier
.writeLine ligne

'on saute vers l'enregistrement suivant du recordset
rec.MoveNext

Wend

End With
    
End Sub

voici le code pour mysql to access

Private Sub Bouton_Click()

Dim bd As Database
Dim pointeur As String
Dim strSQL As String
Dim monfichier As String
Dim FSys As Object

Set bd = CurrentDb

pointeur = FreeFile
monfichier = "C:\Documents and Settings\Zoukozouko\Bureau\fichier.txt"
Open monfichier For Input As pointeur

Line Input #pointeur, strSQL

strSQL = FSys.readLine

Do While Not (EOF(pointeur))

bd.Execute (strSQL)
strSQL = FSys.readLine

Loop

Close pointeur
    
End Sub

Conclusion :


J'ai changé le niveau de la source (merci dragon).
Elle semblait etre trop simple pour les amateurs de sources "initiés"
Mes excuses d'avance au débutant qui ne comprendraient pas toutes les fonctions du script.

A voir également

Ajouter un commentaire

Commentaires

Messages postés
148
Date d'inscription
dimanche 25 janvier 2004
Statut
Membre
Dernière intervention
21 janvier 2009

Effectivement!
Merci beaucoup pour la correction.
Messages postés
1
Date d'inscription
vendredi 26 novembre 2004
Statut
Membre
Dernière intervention
2 août 2006

Il y a une erreur dans le code mysql vers access

Private Sub btnExportTXT_Click()
# 'Pour le transfert d'access vers mysql il faut gérer les valeurs nulles et les ' dans les textes
Dim bd As Database
Dim strSQL As String
Dim rec As Recordset
Dim ligne As String
Dim FSys As Object
Dim MonFic As Object
dim critere as string
dim fld as field
dim l%
Set bd = CurrentDb
strSQL = "SELECT * FROM maTable WHERE monChamp=" & critere
'remplir le recordset
Set rec = bd.OpenRecordset(strSQL, dbOpenForwardOnly)
'Pour creer le fichier texte
Set FSys = CreateObject("Scripting.FileSystemObject")
'Choisir l'adresse du fichier de resultat
Set MonFic = FSys.CreateTextFile("adresse du fichier : C:\fichier.txt")
'Pour écrire dans le fichier texte
With MonFic
'Tant que le recordset contient des lignes d'enregistrement...
While Not (rec.EOF)
ligne = ""
ligne = "INSERT INTO maTableSQL VALUES ("

for each fld in rec.fields
if not isnull(fld) then
'Il faut ici gérer la virgule pour les nombres, l'apostrophe pour les textes
'et les vrai/faux
ligne = ligne & "'" & fld.value & "', "
else
ligne = ligne & "NULL" & ", "
end if
next fld
ligne = trim(ligne)
'il faut supprimer la dernière virgule, fermer la parenthèse et placer un ;
l% = len(ligne)
ligne = left(ligne, l% - 1) & ");"
'On ecrit chaque ligne dans le fichier
.writeLine ligne
'on saute vers l'enregistrement suivant du recordset
rec.MoveNext
Wend
End With
End Sub
#
# voici le code pour: mysql vers access
#
Private Sub btnImportmySQLTxt_Click()
Dim bd As Database
Dim pointeur As String
Dim strSQL As String
Dim monfichier As String
Set bd = CurrentDb
pointeur = FreeFile
monfichier = "C:\Documents and Settings\Zoukozouko\Bureau\fichier.txt"
Open monfichier For Input As pointeur
Line Input #pointeur, strSQL 'Lit la 1ère ligne avec des virgules d'où le signe #
# 'Place la ligne dans la variable strSQL
Do While Not (EOF(pointeur))
bd.Execute (strSQL)
Line Input #pointeur, strSQL 'C'est ici que se situe l'erreur lecture de la ligne suivante
Loop

Close pointeur
End Sub
Messages postés
7
Date d'inscription
lundi 20 février 2006
Statut
Membre
Dernière intervention
5 mars 2008

Salut,
nous sommes deux etudiants de section informatique, nous somme en train de faire notre projet fin d'etude sur l'outil de migration de Access vers MySQL, nous rencontrons un problème sur quel outil qui va accéde au base de donnée Access.
SVP, si quelqu'un a une idée n'hésiter pas de nous aider.
Merci.
Messages postés
148
Date d'inscription
dimanche 25 janvier 2004
Statut
Membre
Dernière intervention
21 janvier 2009

tiens, en fait je me rends compte que j'avais deja fait un petit prog.
La démarche est pas idéale, mais ca marche. Donc si ca peut te dépanner le temps de trouver mieux....
a+
http://www.cppfrance.com/codes/TRANSPORTER-BASE-DONNEES-ACCESS-VERS-CODE-CREATION-SQL_28845.aspx
Messages postés
148
Date d'inscription
dimanche 25 janvier 2004
Statut
Membre
Dernière intervention
21 janvier 2009

je ne pourrai spas le faire dans les 15 jours, jai trop de boulot en ce moment, mais personneleemnt, je suis beaucoup plus calé en C++, et c'est à partir de l'algo que j'ai codé cette appli en VB.
Donc a mon avis, tu devrais pouvoir t'en sortir en traduisant ligne par ligne de VB en C.
désolé...
mais si t'es patient, ce sera peut etre fait dans 3 semaines
Afficher les 17 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.