OVH Cloud OVH Cloud

question sur execute

3 réponses
Avatar
dav
j'essaye de copier tous les enrgistrements de ma table1 vers ma
table2...mais ça ne marche pas...pourquoi ??????
je fais ceci :


Set mabase = OpenDatabase(App.Path & "\mabase.mdb", False, False, "; pwd
=" & lepasse)

sql = "INSERT INTO table1 SELECT * FROM table2"
mabase.Execute (sql)

MsgBox mabase.RecordsAffected

...et recordsAffected me renvoie 0...d'ailleurs quand je vais apres
cette opération dans ma table1 il n'y a pas les enregistrements de table2.

votre avis
merci,
dav

3 réponses

Avatar
Patrick Philippot
dav wrote:
sql = "INSERT INTO table1 SELECT * FROM table2"
mabase.Execute (sql)

MsgBox mabase.RecordsAffected

...et recordsAffected me renvoie 0...d'ailleurs quand je vais apres
cette opération dans ma table1 il n'y a pas les enregistrements de
table2.



Bonjour,

Les colonnes de table1 sont bien en nombre égal aux colonnes de table2
et les types de chaque colonne sont bien compatibles?

Quelle erreur est retournée?

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
dav
les colonnes ont le meme nom, type identique, aucune erreur renvoyée
mais pas de mise a jour de faite...
comprend pas....
dav


Patrick Philippot a écrit :

dav wrote:

sql = "INSERT INTO table1 SELECT * FROM table2"
mabase.Execute (sql)

MsgBox mabase.RecordsAffected

...et recordsAffected me renvoie 0...d'ailleurs quand je vais apres
cette opération dans ma table1 il n'y a pas les enregistrements de
table2.




Bonjour,

Les colonnes de table1 sont bien en nombre égal aux colonnes de table2
et les types de chaque colonne sont bien compatibles?

Quelle erreur est retournée?



Avatar
Jean-Marc
Hello,

Peux tu faire tourner le programme suivant (en l'adaptant si nécessaire), et
poster une copie de la sortie dans la fenêtre Debug:

Dim db As Database
Dim sql As String
Dim tbd1 As TableDef
Dim tbd2 As TableDef
Dim i As Integer

Set db = OpenDatabase("c:db1.mdb") ' remplacer si nécessaire

Set tbd1 = db.TableDefs("table1")
Set tbd2 = db.TableDefs("table2")

For i = 0 To tbd1.Fields.Count - 1
Debug.Print "t1_n:" & tbd1.Fields(i).Name & " t1_s:" &
tbd1.Fields(i).Type
Next i

For i = 0 To tbd2.Fields.Count - 1
Debug.Print "t2_n:" & tbd2.Fields(i).Name & " t2_s:" &
tbd2.Fields(i).Type
Next i

sql = "DELETE FROM TABLE1"
db.Execute (sql)
Debug.Print "DELETE records affected : " & db.RecordsAffected
sql = "INSERT INTO TABLE1 SELECT * FROM TABLE2"
db.Execute (sql)
Debug.Print "INSERT records affected : " & db.RecordsAffected
db.Close
Set db = Nothing

Il n'y a aucune raison pour que ça ne marche pas, je pense que le petit
programme précédent nous dira pourquoi ça veut pas. Avant de commencer, bien
vérifier que:
- la DB n'est pas ouverte en mode exclusif par un autre programme
- la table Table2 contient des données ....
- tu n'as pas fait de trucs tordus avec la sécurité de la base qui
interdiraient les update

--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."






"dav" a écrit dans le message de
news:41bb3bf5$0$3436$
les colonnes ont le meme nom, type identique, aucune erreur renvoyée
mais pas de mise a jour de faite...
comprend pas....
dav


Patrick Philippot a écrit :

> dav wrote:
>
>>sql = "INSERT INTO table1 SELECT * FROM table2"
>> mabase.Execute (sql)
>>
>>MsgBox mabase.RecordsAffected
>>
>>...et recordsAffected me renvoie 0...d'ailleurs quand je vais apres
>>cette opération dans ma table1 il n'y a pas les enregistrements de
>>table2.
>
>
> Bonjour,
>
> Les colonnes de table1 sont bien en nombre égal aux colonnes de table2
> et les types de chaque colonne sont bien compatibles?
>
> Quelle erreur est retournée?
>