Vinzfloz1
Messages postés21Date d'inscriptionmercredi 3 janvier 2007StatutMembreDernière intervention 3 avril 2007
-
28 mars 2007 à 15:06
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 2007
-
4 avril 2007 à 13:25
Bonjour à tous,
Je fais appel à l'aide de chacun sur le problème suivant qui me prend la tête depuis quelques jours.
Structure des fichiers :
- une base Access
- un fichier Excel
Des utilisateurs incoporent des données dans Excel les exportent vers Access un bouton VB.
Le problème est le suivant.
Un utilisateur X tape un nouveau nom de produit avec ses carachtéristiques ou/et modifie les données des autres produist sur Excel. Puis il clique ok, ce qui lance l'INSERT et l'UPDATE.
Les données sont bien mis à jour ou ajoutées dans la base access.
Le problème arrive lorsqu' à partir d'une autre feuille Excel qui reprend exactement les mêmes données en ajoutant des quantités pour chaque produit, en voulant faire l'export des qttés, il ne reconnait pas les produits dans la base access et donc l'export des qttés est impossible
C'est comme ci il y avait un problème de format des données entre les deux exports.
Mais je ne vois pas de différence. le format est le format TEXTE dans Access.
Par contre lorque j'ajoute manuellement dans la table Access un produit, il n'y a pas de problème lors de l'export des qqtés.
J'ai vraiment besoin de votre aide, ca me prend la tête.
Il vous manque, je pense des éléments pour pouvoir répondre. Donc n'hésitez pas à me demander ce dont vous besoin de savoir (code, format, autre..)
Vinzfloz1
Messages postés21Date d'inscriptionmercredi 3 janvier 2007StatutMembreDernière intervention 3 avril 2007 28 mars 2007 à 17:13
Salut Nicko,
Il y a 2 exports d'Excel vers ACCESS.
Lors du 1er, je met à jour une Table "produit" et une table "qtté" en renseignant les colonnes Nom et Client
Lors du 2ème: dans une feuille excel, il y a une liste de produits avec des qttés. Ce sont les mêmes produits que ceux de la table Access.
Normalement, l'application doit insérer les quantités dans Access dans une autre Table "quantités".
Dans cette table, on retoruve les colonnes Nom et Client ainsi qu'une autre appellée "Qtté".
'get records for licensor list
rst.Open "Select * from monthdata", conn, adOpenKeyset, adLockOptimistic
rst.MoveLast
rdCount = rst.RecordCount
'licensorCount = rdCount
rst.MoveFirst
''loop the productlist in excel one by one and input data into access
For i = 0 To numberofProduct - 1
matched = False
''find record in access
For j = 1 To rdCount
'Debug.Print ProductRcd(i).ProductName, rst.Fields("productname").Value
'Debug.Print rst.Fields("customer").Value, ProductRcd(i).Customer
'Debug.Print rst.Fields("act").Value, ProductRcd(i).AcT
If rst.Fields("productname").Value ProductRcd(i).ProductName And rst.Fields("customer").Value ProductRcd(i).Customer And rst.Fields("act").Value = ProductRcd(i).AcT Then
matched = True
''check forcedownload
''force update database
If ProductRcd(i).Jan(0, 1) = 1 Then
If currentMonth > 1 And forceDownload <> True Then
If rst.Fields("jan").Value <> ProductRcd(i).Jan(0, 2) Then
MsgBox "History data changed for product " & ProductRcd(i).ProductName & " " & ProductRcd(i).Customer & " " & ProductRcd(i).AcT & " The update is not proformed!!!"
Else
rst.Fields("jan").Value = ProductRcd(i).Jan(0, 2)
End If
Else
rst.Fields("jan").Value = ProductRcd(i).Jan(0, 2)
End If
Else
rst.Fields("janplan").Value = ProductRcd(i).Jan(0, 2)
End If
If ProductRcd(i).Feb(0, 1) = 1 Then
If currentMonth > 2 And forceDownload <> True Then
If rst.Fields("feb").Value <> ProductRcd(i).Feb(0, 2) Then
MsgBox "History data changed for product " & ProductRcd(i).ProductName & " " & ProductRcd(i).Customer & " " & ProductRcd(i).AcT & " The update is not proformed!!!"
Else
rst.Fields("feb").Value = ProductRcd(i).Feb(0, 2)
End If
Else
rst.Fields("feb").Value = ProductRcd(i).Feb(0, 2)
End If
Else
rst.Fields("febplan").Value = ProductRcd(i).Feb(0, 2)
End If
If ProductRcd(i).Mar(0, 1) = 1 Then
If currentMonth > 3 And forceDownload <> True Then
If rst.Fields("mar").Value <> ProductRcd(i).Mar(0, 2) Then
MsgBox "History data changed for product " & ProductRcd(i).ProductName & " " & ProductRcd(i).Customer & " " & ProductRcd(i).AcT & " The update is not proformed!!!"
Else
rst.Fields("mar").Value = ProductRcd(i).Mar(0, 2)
End If
Else
rst.Fields("mar").Value = ProductRcd(i).Mar(0, 2)
End If
Else
rst.Fields("marplan").Value = ProductRcd(i).Mar(0, 2)
End If
End If
rst.MoveNext
Next ''j
rst.MoveFirst
Next ''i
Le pb est que le Msg me disant qu ele pduit n'existe pas apparait pour chaque produit ils ont bien été inséré dans la Table "Qté" appelé "MonthData" dans le code.
J'espere que ca peut aider comprendre un peu mieux le pb.
cs_Nicko11
Messages postés1141Date d'inscriptionmercredi 7 mars 2007StatutMembreDernière intervention19 septembre 20073 30 mars 2007 à 07:56
Je ne vois pas de "rst.update", donc comment cette table pourrait etre a jour. Je sais pas si c'est ca mais tant que cette instruction n'est pas executée, les nouvelles données ne seront pas dans ta table.
Vinzfloz1
Messages postés21Date d'inscriptionmercredi 3 janvier 2007StatutMembreDernière intervention 3 avril 2007 3 avril 2007 à 18:51
Nicko, merci pour ta réponse.
En effet, il n'y avait pas de Rs.Update, je l'ai ajouté, ce qui permet de supprimer le DAO Insert bdss.
Mais ca ne résoud pas le problème de base.
Mon export d'excel vers Access est nickel, et grâce à la rs.Update, les dépendances entre les tables sont ok.
Cependant lorsque je souhaite à partir d'excel ajouter au sein d'une de ces tables des qttités. Lors de l'export des qttés, l'application me dit que l'enregistrment n'existe pas, alors qu'il y est.
Lorsque je le supprime puis le rajoutte à la main, il n'y a pas de pb.
Que faire ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Nicko11
Messages postés1141Date d'inscriptionmercredi 7 mars 2007StatutMembreDernière intervention19 septembre 20073 4 avril 2007 à 08:43
Il faut trouver un moyen de raffraichir les données alors, essaie dans le code de mettre un "rs.Update" avant de faire le nouveau traitement pour voir.
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 20072 4 avril 2007 à 13:25
Bonjour,
Si lors des modifications dans la table "Produits",
la feuille 2 est déjà e cours ?
Si c' est vrai, rs.Update ne résoud pas le problème:
Dans ce cas il faut réfléchir à ça :
Les données sont bien mis à jour ou ajoutées dans la base access. =>d' accord
Le problème arrive lorsqu' à partir d'une autre feuille Excel qui reprend
exactement les mêmes données ...Faux si les produits ont été saisis avant les
modifications. (on parle de modifications et pas d' ajout.Car si des produits ont été
ajoutés après c' est qu' il n' existaient pas auparavent et donc n' ont pu être saisis.
Par contre lorque j'ajoute manuellement dans la table Access un produit,
il n'y a pas de problème lors de l'export des qqtés...d' accord, mais essaies de
modifier manuellement et revient à ta feuille 2...c' est sûr que la modification
n' affectera pas les données déjà saisies.
Lorsque je le supprime puis le rajoutte à la main, il n'y a pas de pb.
Exact , tu supprimes ce qui n' st plus et tu ajoutes ce qui éxiste au moment même