UPDATE TABLE ACCESS - PB DE FORMAT ?

Vinzfloz1 Messages postés 21 Date d'inscription mercredi 3 janvier 2007 Statut Membre Dernière intervention 3 avril 2007 - 28 mars 2007 à 15:06
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 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..)

Merci

Vinzfloz

7 réponses

cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
28 mars 2007 à 16:04
Bonjour, je n'ai pas tout saisi :

1 - Que veux tu dire "il ne reconnait pas les produits....." ?

2 - Les connections sont - elles les memes ?

3 - Montre un peu le code.
0
Vinzfloz1 Messages postés 21 Date d'inscription mercredi 3 janvier 2007 Statut Membre Derniè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é".

Code 1er Export Excel==> Access :
Range("B5:D5").Select
    Range(Selection, Selection.End(xlDown)).Select
    ActiveWorkbook.Names.Add Name:="XX", RefersToR1C1:= _
        "=ExportToAccess!R5C2:R380C4"
       
 Range("A5:I5").Select
    Range(Selection, Selection.End(xlDown)).Select
    ActiveWorkbook.Names.Add Name:="Code", RefersToR1C1:= _
        "=ExportToAccess!R5C1:R380C9"


 


Dim bds As DAO.Database
  ChDir ActiveWorkbook.Path
  Set bds = OpenDatabase(ActiveWorkbook.FullName, False, False, "excel 8.0")
  Sql = "INSERT INTO productsinformation IN '" & ActiveWorkbook.Path & "\LicenseData2007.mdb' SELECT * FROM [XX]"
  bds.Execute Sql
  bds.Close
  Set bds = Nothing


'Add new "products" into the table "Productsinformation"




Dim bdss As DAO.Database
  ChDir ActiveWorkbook.Path
  Set bdss = OpenDatabase(ActiveWorkbook.FullName, False, False, "excel 8.0")
  Sql = "INSERT INTO MonthData IN '" & ActiveWorkbook.Path & "\LicenseData2007.mdb' SELECT * FROM [XX]"
  bdss.Execute Sql
  bdss.Close
  Set bdss = Nothing


'Add new "products" into the table "MonthData"


 Dim bdd As DAO.Database
  ChDir ActiveWorkbook.Path
  Set bdd = OpenDatabase(ActiveWorkbook.FullName, False, False, "excel 8.0")
  Sql = "INSERT INTO licenses IN '" & ActiveWorkbook.Path & "\LicenseData2007.mdb' SELECT * FROM [Code]"
  bdd.Execute Sql
  bdd.Close
  Set bdd = Nothing
 
 'Add new "BoL" into the table "Licenses"

A partir de la j'ai met 3 tables qui sont complètes
    
Code 2 :
' Export des qttés dans la table "Qttés"

'get connection
strPath = ActiveWorkbook.Path & "" & DatabaseName
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & strPath & ";"
conn.CursorLocation = adUseClient




'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.

Vinzfloz
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
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.
0
Vinzfloz1 Messages postés 21 Date d'inscription mercredi 3 janvier 2007 Statut Membre Derniè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 ?

 
0

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

Posez votre question
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
3 avril 2007 à 19:09
Bonsoir,
autre feuille Excel n' est pas mise à jour suite aux changements
dans la  première ...
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
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.
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
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
0
Rejoignez-nous