Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1044 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Mettre jour des champs de table via un recordset!possible?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Mettre jour des champs de table via un recordset!possible?

n°1611010
guiguisb
Enlèves tes doigts de ton nez!
Posté le 12-09-2007 à 14:26:06  profilanswer
 

Bonjour,
 
J'intègre des données sous format texte via une macro sous Access dont des dates.
 
J'ai fait un code pour me ballader dans toute la table et chercher les données ressemblant à une date comme ca jj.MM.AAAA pour les modifier en JJ/MM/AAAA.  
J'arrive à les choper et à les transformer mais pas à mettre à jour la valeur dans la table. Je ne souhaite pas utiliser le format date au moment de l'import donc ce n'est pas une soluce pour moi.
mon code est le suivant:
Dim h As TableDef
        Dim TABLEDATE As DAO.Recordset
        Dim Db3 As DAO.Database
        Set Db3 = CurrentDb()
        Set TABLEDATE = Db3.OpenRecordset(Tablecible)
        Set h = Db3.TableDefs(Tablecible)
        n = h.Fields.Count
         
        TABLEDATE.MoveFirst
        While Not TABLEDATE.EOF
            For i = 0 To n - 1
            dat = TABLEDATE.Fields(i)
            Debug.Print dat
            TEST1 = IsNumeric(Left(dat, 2))
            TEST2 = (Right((Left((dat), 3)), 1) = "." )
            TEST3 = IsNumeric(Right((Left((dat), 5)), 2))
            TEST4 = (Right((Left((dat), 6)), 1) = "." )
            TEST5 = IsNumeric(Right(dat, 4))
            If TEST1 = True And TEST2 = True And TEST3 = True And TEST4 = True And TEST5 = True Then
                dat = Replace((dat), ".", "/" )
                TABLEDATE.Edit
                TABLEDATE(Fields(i)) = dat
                TABLEDATE.Update
             End If
 
            Next i
        Wend
         
Ca foire vers le update mais a mon avis je gere ca tres mal!
 
Merci du coup de main!
 
 
 
 
 
 

mood
Publicité
Posté le 12-09-2007 à 14:26:06  profilanswer
 

n°1611013
jpcheck
Pioupiou
Posté le 12-09-2007 à 14:32:14  profilanswer
 

bjr,
une requête du style

Code :
  1. UPDATE tableCible SET DATE=replace(DATE,".","/" )


ne suffit-elle pas ?

n°1611017
guiguisb
Enlèves tes doigts de ton nez!
Posté le 12-09-2007 à 14:37:57  profilanswer
 

Ca m'interesse bien ca.
quand tu mets DATE c'est une variable?
Dans mon code ca correspondrait à  
Update Tablecible Set dat=replace(dat,".","/" )
Sachant que Tablecible est une variable et que dat aussi.
 
Je me sens un peu à cote de la plaque là! Fichtre!

n°1611018
jpcheck
Pioupiou
Posté le 12-09-2007 à 14:38:40  profilanswer
 

oui oui pardon, date est un champs de ta table

n°1611024
guiguisb
Enlèves tes doigts de ton nez!
Posté le 12-09-2007 à 14:49:24  profilanswer
 

Et là tu me proposes de mettre à jour tous le champs d'un coup?
L'idée c'est que chaque table est différente donc je ne sais jamais quel est le nom du champ et que contient il.
La dans l'idée je teste chaque valeur de la valeur dans chaque champs et si il a un format qui est jj.mm.AAAA alors je fais une modif!
L'idée pourrait etre de se ballader dans la première ligne et si une valeur correspond à ce que je cherche alors je mémorise le champs et je mets toute la colonne à jour.
 
Qu'en penses tu?

n°1611025
jpcheck
Pioupiou
Posté le 12-09-2007 à 14:51:51  profilanswer
 

ben d'un auter coté, je pense qu'a part le champs du type jj.mm.AAAA il n'y a pas de champs avec un . donc tu peux mettre une clause where date like "*.*" ou une manip comme ca, si ca te gene de mettre a jour tous les champs... ;)

n°1611027
guiguisb
Enlèves tes doigts de ton nez!
Posté le 12-09-2007 à 14:58:07  profilanswer
 

Ben si j'ai des champs ou ceux sont des chiffres à décimal donc avec un point dans les valeurs du style 153535.76.
La j'arrvie bien à trouver les valeurs et dans le code et dat = Replace((dat), ".", "/" ) me donne bien la date modufier il faut que je dise  
TABLEDATE(Fields(i)) = dat  
 
J'ai du faire trop de code et là je vois pas plus loin que le bout de mon neez!
Si j'arrive ca c'est fini j'ai reussi!
fichtre!

n°1611036
guiguisb
Enlèves tes doigts de ton nez!
Posté le 12-09-2007 à 15:05:02  profilanswer
 

jpcheck: finalement j'ai ecrit cela:
SQL1 = "UPDATE Tablecible SET TABLEDATE.Fields(i) = dat"
DoCmd.RunSQL SQL1
 
CA foire. Je pense que je foire au niveau de la déclaration de la table!
le nom de la table est une variable contenur dans Tablecible. dat est la variable qui contient la nouvelle vleur à mettre dans la table et TABLEDATE est le recorset qui ouvre la table Tablecible!
 
Je n'ai rien en dur! ca doit etre la c.......dans le pate! NON

n°1611042
jpcheck
Pioupiou
Posté le 12-09-2007 à 15:08:49  profilanswer
 

le recordset je suis pas sur qu'il le comprennent comme ca, il faut tout réécrire pour qu'il prenne bien en compte, surtout si tu n'as rien en dur...

n°1611046
guiguisb
Enlèves tes doigts de ton nez!
Posté le 12-09-2007 à 15:14:56  profilanswer
 

Quand tu dis tout reecrire tu veux que je reecrive toute la partie de recherhce des informations qui correpondent à des dates?

mood
Publicité
Posté le 12-09-2007 à 15:14:56  profilanswer
 

n°1611047
jpcheck
Pioupiou
Posté le 12-09-2007 à 15:15:55  profilanswer
 

non mais au lieu d'écrire ton tabledate tu mets where date in (select blablabla from etc.)

n°1611056
guiguisb
Enlèves tes doigts de ton nez!
Posté le 12-09-2007 à 15:25:30  profilanswer
 

là je suis paumé mais paumé
SQL1= select update tablecible.Fields(i) where  Fields(i) = dat  
 
Non là je vois plus trop en fait!

n°1611061
jpcheck
Pioupiou
Posté le 12-09-2007 à 15:33:13  profilanswer
 

c koi ton tablecible.fields(i), quand tu update c'est set champs = nelle valeur...

n°1611065
guiguisb
Enlèves tes doigts de ton nez!
Posté le 12-09-2007 à 15:40:17  profilanswer
 

je seche à mort là:
 
dat = Replace((dat), ".", "/" )
                SQL1 = "Update Tablecible set Fields(i)= [dat]"
                DoCmd.RunSQL SQL1

n°1611066
guiguisb
Enlèves tes doigts de ton nez!
Posté le 12-09-2007 à 15:41:00  profilanswer
 

le nom de mon champs je le connais pas .
Et d'ailleurs je vois meme plus comment le recuperer!

n°1611078
guiguisb
Enlèves tes doigts de ton nez!
Posté le 12-09-2007 à 15:56:27  profilanswer
 

C'est un SQL très compliqué puisque rien n'est connu tout est variable donc quand tu mets Set champs et bien pour moi monchamps il est égal à fields(i). Tu penses que je me trompe?
Il ya le code quelques postes au dessus.
En tout ca smerci du coup de main! Ca sent le sapin ce SQL!

n°1611089
jpcheck
Pioupiou
Posté le 12-09-2007 à 16:17:14  profilanswer
 

si ton fields(i) comporte le nom de ton champs tu dois mettre
dat = Replace((dat), ".", "/" )
SQL1 = "Update Tablecible set "[" & Fields(i) & "]='" & dat &"';"
docmd.runsql sql1

n°1611096
tegu
Posté le 12-09-2007 à 16:35:00  profilanswer
 

« Ca foire vers le update mais ... »  
Le verbe foirer ne me donnant que peu d'indication, je lui préfère un numéro et un libellé d'erreur, voire la ligne précise où ça plante (si c'est pas sur le .Update). C'est possible ?
 
Sinon, tu n'as pas besoin de ta variable h, puisque ton recordset TABLEDATE a aussi une collection .Fields avec une propriété .Count.
De plus si tu as un objet TableDef ouvert sur la même table, je crois que ça explique ton problème potentiel de màj du recordset.
L'ouverture par défaut d'un recordset est en mode feuille dynamique (dbOpenDynaset) donc il ne devrait pas y avoir de problème de màj dans ton contexte.
J'espère que tu as déclaré tes variables TEST de type boolean (pas bien sinon !).
Tu peux te passer d'écrire « = True » : « If TEST Then » fonctionne très bien dans ce cas.

n°1611105
guiguisb
Enlèves tes doigts de ton nez!
Posté le 12-09-2007 à 16:57:57  profilanswer
 

Petit à petit l'oiseau fait son nid!
Je crois que je vais réussir!
J'avance encore et je vous tiens au courant de ma soluce!

n°1611111
guiguisb
Enlèves tes doigts de ton nez!
Posté le 12-09-2007 à 17:11:05  profilanswer
 

Deja le update marche! MAis ca update toute la colonne ce pourrait. Ce que je vais faire c'est que je vais mener le test sur la premièreligne du recorset et si ca correspond à un type de donnée que je cherche je mets à jour toute la colonne! Cependant il faut que j'utilise le replacedirectement dans le SQL mais il n'en veut pas voici:
 
SQL1 = "Update [" & Tablecible & "] set [" & tablo(i) & "]= Replace((Tablo(i)), ".", "/" );"
DoCmd.RunSQL SQL1
 
Cependant ca tique sur le "." ca me met erreur de fin d'instruction!
Pourquoi? le savez vous?

n°1611118
jpcheck
Pioupiou
Posté le 12-09-2007 à 17:19:22  profilanswer
 


 
SQL1 = "Update [" & Tablecible & "] set [" & tablo(i) & "]= Replace((" & Tablo(i) & " ), ".", "/" );"

n°1611125
guiguisb
Enlèves tes doigts de ton nez!
Posté le 12-09-2007 à 17:26:08  profilanswer
 

Je vous jure ca bloque sur le point encore avec le message  
fin d'instruction attendue!

n°1611127
jpcheck
Pioupiou
Posté le 12-09-2007 à 17:28:14  profilanswer
 

tu peux nous montrerr ce que donne un debug.print SQL1 ?

n°1611128
guiguisb
Enlèves tes doigts de ton nez!
Posté le 12-09-2007 à 17:30:57  profilanswer
 

SQL1 = "Update [" & Tablecible & "] set [" & tablo(i) & "]= Replace([" & tablo(i) & "], [" & "." & "], [" & "/" & "];"
 
Ceci ne marche pas non plus!

n°1611129
tegu
Posté le 12-09-2007 à 17:33:54  profilanswer
 

Le Replace ne devrait pas être dans l'instruction SQL1 ; là elle l'est si mes yeux ont bien lu les guillemets.
Le champ qui va contenir la date est-il de type chaîne ou date ?
Il faut soit des #, soit des quotes pour encadrer sa valeur à mon avis.
Genre :
SQL1 = "Update [" & Tablecible & "] set [" & tablo(i) & "]= '" & Replace(tablo(i) , ".", "/" ) & "';"  
Enfin vite fait parce que j'ai pas bcp de temps là


Message édité par tegu le 12-09-2007 à 17:36:11
n°1611130
guiguisb
Enlèves tes doigts de ton nez!
Posté le 12-09-2007 à 17:37:52  profilanswer
 

SQL1 = "Update [" & Tablecible & "] set [" & tablo(i) & "]='" & dat & "';"
 
En debug.print cela donne  
Update [BSEG_Blocked_Invoices_Paid] set [AUGCP     ]='25.03.2004';
 
Je n'arrive pas à faire du debug.print avec
SQL1 = "Update [" & Tablecible & "] set [" & tablo(i) & "]= Replace((" & Tablo(i) & " ), ".", "/" );"  
puisque elle ne passe pas!

n°1611132
guiguisb
Enlèves tes doigts de ton nez!
Posté le 12-09-2007 à 17:47:00  profilanswer
 

SQL1 = "Update [" & Tablecible & "] set [" & tablo(i) & "]= '" & Replace(tablo(i) , ".", "/" ) & "';"  
 
Ton code Tegu fonctionne mais recopie le nom du champ dans toute la colonne! Fichtre on s'approche!
je vais essayer avec des # et des quotes.

n°1611133
guiguisb
Enlèves tes doigts de ton nez!
Posté le 12-09-2007 à 17:48:07  profilanswer
 

Voici le debu print du sql du precedent post:
 
Update [BSEG_Blocked_Invoices_Paid] set [ZFBDT     ]= 'ZFBDT     ';

n°1611142
guiguisb
Enlèves tes doigts de ton nez!
Posté le 12-09-2007 à 18:00:40  profilanswer
 

voici la version de ta reqûete avec des # tegu mais ca ne marche pas!
 
Je vais essyer de ne ttoyer mon code pour y voir plus clair et je pourrai vous montrer toute la page de code à l'exception des fonctions si ca vous interesse de lire et de résoudre ce problème. Mais c'est dejà sympa le coup de main!
 
Merci

n°1611239
tegu
Posté le 13-09-2007 à 09:26:44  profilanswer
 

Heu, bien sûr que ça met à jour toute la colonne puisqu'il n'y a pas de clause WHERE dans ta requête SQL, pour limiter l'action de la mise à jour.
Là, pour chaque enregistrement tu lances un remplacement des points par des / sur tout le fichier.

 

Je ne sais pas quel est la clé primaire de ta table mais il faudrait l'utiliser comme suit :
SQL1 = "... WHERE [ChampClePrimaire] = " & TABLEDATE.Fields(indexChampClePrimaire).value ...
en rajoutant des quotes si ta clé primaire est une chaine.

 

Après relecture, je m'aperçois qu'il y a eu un glissement de syntaxe au fil des posts.
Que contient tablo(i) en l'état actuel de ton code ? Le nom du champ ou sa valeur ?
Selon le dernier exemple de code que tu donnes on devrait plutôt avoir :

SQL1 = "Update [" & Tablecible & "] set [" & tablo(i) & "]='" & Replace(dat , ".", "/" ) & "' WHERE [ChampClePrimaire] = " & TABLEDATE.Fields(indexChampClePrimaire).value & ";"

avec dat = TABLEDATE.Fields(i).value

 


Message édité par tegu le 13-09-2007 à 09:29:53
n°1611242
guiguisb
Enlèves tes doigts de ton nez!
Posté le 13-09-2007 à 09:40:31  profilanswer
 

Code :
  1. Private Sub Command1_Click()
  2.      
  3.     Dim FULL_ADDRESS As String  'adresse complète du fichier dur l'ordinateur (exemple: C\programme\monfichier.txt)
  4.     Dim Tablecible As String    'nom de la table de destination qui n'est autre que le nom du fichier texte importé
  5.     Dim NOMDUFICHIER As String
  6.     Dim FSO As Scripting.FileSystemObject   'methode qui permet ensuite de connaitre le dossier parent du fichier texte
  7.     NOMDUFICHIER = ""
  8.     FULL_ADDRESS = ""
  9.     Me!NOMFICHIER = ""
  10.    
  11.        
  12.     'Instanciation du FSO
  13.     Set FSO = New Scripting.FileSystemObject
  14.                      
  15.     'tableau mémorisant le chemin d'accès complet à chaque fichier enregistrant les fichiers à intégrer
  16.     Dim TABLOFICHIERS(100) As String
  17.     Dim v As Byte
  18.     Dim b As Integer
  19.    
  20.     v = 0
  21.     Do Until CHOIX = "arret"
  22.    
  23.          v = v + 1
  24.          If v = 1 Then
  25.             FULL_ADDRESS = LaunchCD(Me) 'fonction qui permet de réchercher un fichier sur son pc
  26.             Me!ADRESSE = FSO.GetParentFolderName(FULL_ADDRESS) ' on recupere le chemin jusqu'au chemin parent des fichiers texte, cela permet de repartir de ce dossier pour chercher les fichiers texte à intégrer au lieu de repartir toujours de la racine du disque
  27.             'Me!NOMFICHIER = FSO.GetBaseName(FULL_ADDRESS) 'Recuperation du nom du fichier sans l'extension .txt, cei sera le nom de la table crée
  28.             NOMDUFICHIER = FSO.GetFileName(FULL_ADDRESS)
  29.             Tablecible = FSO.GetBaseName(FULL_ADDRESS)
  30.             TABLOFICHIERS(v) = FULL_ADDRESS
  31.            
  32.             If lReturn = 0 Then ' variable qui renvoit 0 si on annule l'importation d'un fichier. Comme c'est le premier choix d'intégration de fichier alors si on annule, la procédure sarrête
  33.                 GoTo Exit_Import2
  34.             End If
  35.            
  36.          Else
  37.        
  38.             CHOIX = MsgBox("Voulez-vous intégrer un nouveau fichier dans la table?", vbYesNo + vbInformation)
  39.        
  40.          End If
  41.        
  42.          If CHOIX = vbYes Then
  43.        
  44.            FULL_ADDRESS = LaunchCD(Me)
  45.            TABLOFICHIERS(v) = FULL_ADDRESS
  46.             If TABLOFICHIERS(v) = "" Then
  47.               v = v - 1
  48.             End If
  49.            
  50.          End If
  51.        
  52.          If CHOIX = vbNo Then
  53.        
  54.             CHOIX = "arret"
  55.             v = v - 1
  56.        
  57.          End If
  58.        
  59.          If FULL_ADDRESS <> "" Then
  60.             Me!NOMFICHIER = Me!NOMFICHIER & "   /   " & FSO.GetBaseName(FULL_ADDRESS)
  61.          End If
  62.        
  63.          FULL_ADDRESS = ""
  64.        
  65.     Loop
  66.    
  67.    'If v > 1 Then ' si V>1 alors cela signifie que plusieurs fichiers sont à intégrer donc on propose au user de choisir le nom de la table de destination
  68.        
  69.     '    Do Until Me.NOMTABLE <> ""
  70.        
  71.       '     Me!NOMTABLE.Visible = True
  72.         '   Me!VALIDNOMTABLE.Visible = True
  73.        
  74.         '   Me!VALIDNOMTABLE = True
  75.        
  76.        '    Tablecible = Me!NOMTABLE.Value
  77.       '  Loop
  78.      
  79.      '   Me!NOMTABLE.Visible = False
  80.     '    Me!VALIDNOMTABLE.Visible = False
  81.        
  82.    'End If
  83.  
  84.     If Tablecible <> "" And fTableExists1(Tablecible) = True Then 'la fonction fTableExists1 teste si la table existe cela empêche le user de rajouter des données dans sa table
  85.         MsgBox ("La table a déjà été importée, veuillez la supprimer puis la réimporter si vous le désirez!" )
  86.         MsgBox ("Acun fichier n'a été intégré" )
  87.                    
  88.     Else
  89.        
  90.         b = 1
  91.         Do Until b = v + 1
  92.            
  93.             NOMDUFICHIER = FSO.GetFileName(TABLOFICHIERS(b)) 'ici la boucle va tourner dans le tableau qui contient les adresses des fichiers
  94.                                                               ' à intégrer pour tous les importer à la suite ds une meme table
  95.             Call ImportReq(NOMDUFICHIER, Tablecible) 'ImportReq est la fonction d'import du fichier texte dans la table
  96.            
  97.             b = b + 1
  98.            
  99.         Loop
  100.        
  101.         'récupération de tous les champs de la table pour pouvoir ensuite sélectionner les lignes dont tous les champs sont nuls dans le but de les supprimer
  102.         Dim t As TableDef, tablo() As String
  103.         Dim i As Byte, n As Byte, y As Byte, z As Byte, bd As Database
  104.        
  105.         'On Error GoTo Exit_Import2 'si erreur message expliquant l'anomalie
  106.        
  107.         Set bd = CurrentDb
  108.         Set t = bd.TableDefs(Tablecible)
  109.         n = t.Fields.Count
  110.         ' Remplissage du tableau
  111.         ReDim tablo(n)
  112.                        
  113.         For i = 0 To n - 1
  114.             tablo(i) = t.Fields(i).Name 'le tablo(i) contient tous les champs de la table
  115.         Next i
  116.         Set t = Nothing
  117.         Set bd = Nothing
  118.                          
  119.                        
  120.         Dim Rst As DAO.Recordset
  121.         Dim Db As DAO.Database
  122.         Dim TESTING As String 'variable qui sert à tester les lignes vides pour les supprimer
  123.                
  124.         TESTING = ""
  125.         Set Db = CurrentDb()
  126.        
  127.         Set Rst = Db.OpenRecordset(Tablecible)
  128.        
  129.         Rst.MoveFirst
  130.        
  131.         While Not Rst.EOF 'deplacement dans le recordset pour trouver les enregistrements vides et les supprimer
  132.                                      
  133.             For i = 0 To n - 1
  134.             TESTING = TESTING & Rst.Fields(i) 'ici testing concantene toutes es données de la ligne
  135.             Next i
  136.            
  137.             If TESTING = "" Then 'si testing est vide alors la vide est vide et on la supprime
  138.             Rst.Delete
  139.             End If
  140.            
  141.             Rst.MoveNext
  142.             TESTING = ""
  143.            
  144.         Wend
  145.         Rst.Close
  146.         Set Rst = Nothing
  147.        
  148.         'recherche des dates pour modifier les points par des /
  149.        
  150.         Dim TABLEDATE As DAO.Recordset
  151.         Dim Db3 As DAO.Database
  152.         Dim SQL1 As String
  153.         Dim Tablo2(100) As String
  154.         Set Db3 = CurrentDb()
  155.         Set TABLEDATE = Db3.OpenRecordset(Tablecible)
  156.        
  157.         n = TABLEDATE.Fields.Count
  158.        
  159.         TABLEDATE.MoveFirst
  160.        
  161.         'While Not TABLEDATE.EOF
  162.             For i = 0 To n - 1
  163.             dat = TABLEDATE.Fields(i)
  164.            
  165.            
  166.             Debug.Print dat
  167.             Debug.Print tablo(i)
  168.             TEST1 = IsNumeric(Left(dat, 2))
  169.             TEST2 = (Right((Left((dat), 3)), 1) = "." )
  170.             TEST3 = IsNumeric(Right((Left((dat), 5)), 2))
  171.             TEST4 = (Right((Left((dat), 6)), 1) = "." )
  172.             TEST5 = IsNumeric(Right(dat, 4))
  173.             If TEST1 = True And TEST2 = True And TEST3 = True And TEST4 = True And TEST5 = True Then
  174.                 'dat = Replace((dat), ".", "/" )
  175.                 'SQL1 = "Update [" & Tablecible & "] set [" & tablo(i) & "]='" & dat & "';"
  176.                 'SQL1 = "Update [" & Tablecible & "] set [" & tablo(i) & "]= Replace([" & tablo(i) & "], [" & .  "], [" / " )];"
  177.                 'SQL1 = "Update [" & Tablecible & "] set [" & tablo(i) & "]= Replace((" & Tablo(i) & " ), ".", "/" );"
  178.                 SQL1 = "Update [" & Tablecible & "] set [" & tablo(i) & "]= #" & Replace(tablo(i), ".", "/" ) & "#;"
  179.                 Debug.Print SQL1
  180.                 DoCmd.RunSQL SQL1
  181.                
  182.                 'TABLEDATE.Edit
  183.                 'TABLEDATE(Fields(i)) = dat
  184.                 'TABLEDATE.Update
  185.              End If
  186.             Next i
  187.         'Wend
  188.                        
  189.                        
  190.                        
  191.         'Calcul du nombre de ligne intégrées
  192.         Dim TABLECALCUL As DAO.Recordset
  193.         Dim DB2 As DAO.Database
  194.         Dim k As Long
  195.        
  196.         k = 0
  197.         Set DB2 = CurrentDb()
  198.         Set TABLECALCUL = Db.OpenRecordset(Tablecible)
  199.        
  200.         TABLECALCUL.MoveFirst
  201.        
  202.         While Not TABLECALCUL.EOF 'deplacement dans le recordset compter le nombre de lignes
  203.             k = k + 1
  204.                                
  205.             TABLECALCUL.MoveNext
  206.            
  207.            
  208.         Wend
  209.         MsgBox (k & " " & "lignes sont présentes dans la table" & " " & Tablecible)
  210.         TABLECALCUL.Close
  211.        
  212.        
  213.    End If
  214. Exit Sub
  215. Exit_Import2:
  216.  
  217.   MsgBox ("Aucun fichier n'a été intégré" )
  218.    
  219. End Sub


 
Voici mon code complet à l'exception des fonctions appelées cependant j'ai marqué l'utililité des fonctions au moment de leur appel.
Tegu pour répondre à ta question et bien Tablo(i) contient le nom du champs.
Pour la clé primaire je suis un peu embeté parce que je peux pas vraiment dire que j'en ai une puisque je n'en défini pas via access (numéro unique attribué achacun) et comme chaque fichier est différent je ne sais pas quel est le champ qui identifie de manière unique chaque ligne!
 
Merci de l'aide en tout cas!

n°1611244
guiguisb
Enlèves tes doigts de ton nez!
Posté le 13-09-2007 à 09:49:37  profilanswer
 

Tegu ta requete SQL est pal mal du tout. Voila comment je l'ai adapté et voila debug.print car elle a plante mais a mon avis t'as raison:
 
SQL1 = "Update [" & Tablecible & "] set [" & tablo(i) & "]='" & Replace(dat, ".", "/" ) & "' WHERE [" & tablo(i) & "] = " & TABLEDATE.Fields(i).Value & ";"
 
Debug.print
Update [BSEG_Blocked_Invoices_Paid] set [AUGDT     ]='25/03/2004' WHERE [AUGDT     ] = 25.03.2004;
 
Sachant que mes données sont toutes des données texte.

n°1611250
guiguisb
Enlèves tes doigts de ton nez!
Posté le 13-09-2007 à 10:08:21  profilanswer
 

Cette requête fonctionne donc je vous dit un grand merci à tous les deux!
SQL1 = "Update [" & Tablecible & "] set [" & tablo(i) & "]='" & Replace(dat, ".", "/" ) & "' WHERE [" & tablo(i) & "] = '" & TABLEDATE.Fields(i).Value & "';"
Il ne me reste plus qu'à chercher comment enlever le message qui dit "X lignes vont être mises à jour voulez vous vraiment le faire?" car sinon ca va être long de cliquer à chaque fois.
 
Merci Merci!

n°1611252
jpcheck
Pioupiou
Posté le 13-09-2007 à 10:11:07  profilanswer
 

application.setwarning false
;)

n°1611342
guiguisb
Enlèves tes doigts de ton nez!
Posté le 13-09-2007 à 13:18:51  profilanswer
 

Question technique!
Encore merci pour le code!
Tout fonctionne tres bien! Parcontre ma base fraichement créé avec le code et formulaire pèse 300ko. Par contre au fur et à mesure que j'importe des tables et même si ensuite je les supprime alors elle grossit considérablement. J'intègre des gros fichiers style 25 mega. Là elle est arrive à 1.02 giga alors que j'ai tout supprimé dedans. Je me dis que je dois mal vider des recorser ou que sais je encore :  
 
Avez vous deja eu ce genre de problème?

n°1611367
guiguisb
Enlèves tes doigts de ton nez!
Posté le 13-09-2007 à 14:03:03  profilanswer
 

La soluce est le compactage c'est bon merci!

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Mettre jour des champs de table via un recordset!possible?

 

Sujets relatifs
creat table en php avec une fonction en +mise à jour d'un champs
Incrémentation automatique d'un champ numéro dans une table accessEst il possible de forcer l'impression d'une page en recto verso
Afficher correctement le champs h_addr_list de HOSTENTrequete SQL sur champs listés via Tabledef Fields
Comment mettre sur un site internet une vidéo .mod ?Mettre du Latex dans spip
besoin d'aide date php 
Plus de sujets relatifs à : Mettre jour des champs de table via un recordset!possible?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR