njour je suis actuellement entrain d'essayer de transférer les données de excel dans ma base de données mysql cependant j'ai une erreur de type qui m'empêche de mettre mes date dans ma base
Suite à plusieurs tests j'ai constater que cela fonctionner quand je m'était mon champs Date en type varchar cependant je voudrait absolument l'avoir en type date
voici mon code
End Sub
Sub Enregistrement_des_données()
''Initialisation des variable de connection a la base de données
Dim MaConnexion As ADODB.Connection
Dim MonRecord As ADODB.Recordset
Dim NbLignes As Integer
Dim rowtable As Integer
Dim strSQL As String
Dim Types As Integer
'Creation des objets ADODB chaine et enregistrement
Set MaConnexion = New ADODB.Connection
Set MonRecord = New ADODB.Recordset
'Ouverture de la chaîne de connexion
MaConnexion.Open "DRIVER={MySQL ODBC 8.0 Unicode Driver};" & _
"SERVER=127.0.0.1;" & _
"DATABASE=ecran_dynamique;" & _
"USER=root;" & _
"PASSWORD=motdepasse;"
NbLignes = Worksheets("BDD2").UsedRange.Rows.Count
'Variable jour férier
Dim annee As Integer 'Variable Annee
Dim mois As Integer 'Variable Mois
Dim ChangementColonne As Integer 'Variable de changement de cellule horizontal
Dim ChangementLigne As Integer 'Variable de changement de cellule vertical
Dim PremierJourMois As Date '
Dim DernierJourMois As Date
Dim DecalageJour As Byte
Dim PremierLundi As Date
Dim Jourdelan As Date
Dim Fetedutravail As Date
Dim Armistice3945 As Date
Dim FeteNationale As Date
Dim Assomption As Date
Dim Toussaint As Date
Dim Armistice1418 As Date
Dim Noel As Date
Dim Nb As Long
Dim Epacte As Long
Dim PLune As Date
Dim LundiPaques As Date
Dim Ascension As Date
Dim Pentecote As Date
annee = SpinButton_annee.Value 'Variable Automatique
' Calcul du Lundi de Pâques
Nb = (annee Mod 19) + 1
' Différence entre calendrier solaire et lunaire
Epacte = (11 * Nb - (3 + Int(2 + Int(annee / 100)) * 3 / 7)) Mod 30
PLune = DateSerial(annee, 4, 19) - ((Epacte + 6) Mod 30)
If Epacte = 24 Then PLune = PLune - 1
' Valable entre 1900 et 2199 : on verra bien ?
If Epacte = 25 And (annee >= 1900 And annee < 2200) Then PLune = PLune - 1
' Lundi de Pâques
LundiPaques = PLune - Weekday(PLune) + vbMonday + 7
'Variable changement ligne & colonne
ChangementColonne = 0
ChangementLigne = 0
'generation des jour férié de l'année
Jourdelan = DateSerial(annee, 1, 1)
Fetedutravail = DateSerial(annee, 5, 1)
Armistice3945 = DateSerial(annee, 5, 8)
FeteNationale = DateSerial(annee, 7, 14)
Assomption = DateSerial(annee, 8, 15)
Toussaint = DateSerial(annee, 11, 1)
Armistice1418 = DateSerial(annee, 11, 11)
Noel = DateSerial(annee, 12, 25)
Ascension = LundiPaques + 38
Pentecote = LundiPaques + 49
i = 0
For mois2 = 1 To 12
For jour2 = 1 To 31
i = i + 1
ligneinsertion = Sheets("BDD2").Range("A65000").End(xlUp).Row + 1
Datedujour = DateSerial(SpinButton_annee.Value, mois2, jour2)
Sheets("BDD2").Cells(ligneinsertion, 1) = DateSerial(SpinButton_annee.Value, mois2, jour2)
If Datedujour = Jourdelan Or Datedujour = Fetedutravail Or Datedujour = Armistice3945 Or Datedujour = FeteNationale Or Datedujour = Assomption Or Datedujour = Toussaint Or Datedujour = Armistice1418 Or Datedujour = Noel Or Datedujour = LundiPaques Or Datedujour = Ascension Or Datedujour = Pentecote Or Weekday(Datedujour, 2) = 6 Or Weekday(Datedujour, 2) = 7 Then
Sheets("BDD2").Cells(ligneinsertion, 2) = Int(0)
Else
Sheets("BDD2").Cells(ligneinsertion, 2) = Int(1)
End If
Next
Next
With Worksheets("BDD2")
For rowtable = 2 To NbLignes
'on fait une boucle pour chaque ligne
strSQL = "INSERT INTO `ecran_dynamique`.`calendrier` (`Date`,`Type`)" & _
"VALUES('" & .Cells(rowtable, 1).Value & "', '" & _
.Cells(rowtable, 2).Value & "')"
MonRecord.Open strSQL, MaConnexion
Next rowtable
End With
End Sub
Pour MySQL, le format d'un champ de type date c'est YYYY-MM-DD (Année-Mois-Jour), il faut donc lui passer dans ce format là, sinon MySQL n'apprécie pas.
J'ai eu la meme erreur mais je n'arrive pas à résoudre.
Voici le code
Sub ExportMysql1()
Dim Maconnexion As ADODB.Connection
Dim monrecord As ADODB.Recordset
Dim NbLignes As Integer
Dim rowtable As Integer
Dim strSQL As String
Set Maconnexion = New ADODB.Connection
Set monrecord = New ADODB.Recordset
Maconnexion.Open "DRIVER={MySQL ODBC 8.0 Unicode Driver};" & "SERVER=localhost;" & "DATABASE=bd-gmao;" & "USER=root;" & "PASSWORD =;"
NbLignes = Worksheets("personnel").UsedRange.Rows.Count
With Worksheets("personnel")
For rowtable = 2 To NbLignes
strSQL = "insert into bd-gmao.essai(`id`,`nom`,`sexe`,`age`)" & "Values(" & .Cells(rowtable, 1).Value & ", " & .Cells(rowtabl, 2).Value & "," & .Cells(rowtable, 3).Value & ", " & .Cells(rowtable, 4).Value & ")"
monrecord.Open strSQL, Maconnexion
Next rowtable
End With
MsgBox "enregistrement réussi" & Chr(10) & (rowtable - 2) & "OK", vbInformation, "vérification de l'entrée des données"
End Sub
je ne vois pas pourquoi tu aurais un problème de date, a priori tu n'as ce type de données. mets ton message d'erreur. Le problème vient peut-être du fait que tu essais d'insérer des données qui existe déjà (si id est la clé primaire, il va te refuser de remettre le même id quand tu va relancer la requête d'insertion)
Transfere de donnée excel dans une base de donées
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
par