Bonjour
J'ai un petit problème avec mon programme. Je souhaite rapatrier une table d'SQL Server vers Access. Pour cela j'ai d'abord utilisé un batchmove mais il me perdait des enregistrements quand la table dépassait 150000 enregistrements. J'essaye donc de le faire en plusieurs parties pour ne pas perdre mes enregistrements à l'aide de 2 composants batchmove (1 en batCopy, l'autre en batAppend) et d'une boucle. Le soucis c'est qu'en faisant mes tests avec une table de 260000 enregistrements j'ai le message suivant :
Et la table n'est même pas créée sous Access alors que si la table fait 1600 enregistrements (il ne passe donc qu'une fois dans la boucle et n'utilise qu'un batchmove), ca fonctionne...Ressource limite de la table temporaire
Voilà le code :
Quelqu'un a une idée ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 TTabDest.TableName := NomTable+'ADR'; QuerybatchMove.close; QueryBatchmove.sql.clear; QueryBatchMove.sql.add('SELECT count(*) FROM tabtrav'+NomTable); QueryBatchMove.open; nb_enreg := QueryBatchMove.Fields[0].AsInteger; i := 1; // on boucle while (i <= nb_enreg) do begin Str(i,debut); Str((i+50000),fin); QuerybatchMove.close; QueryBatchmove.sql.clear; QueryBatchMove.sql.add('SELECT * FROM tabtrav'+NomTable); QueryBatchMove.sql.add('where IDTABLE >= '+debut+' and IDTABLE < '+fin); if i = 1 then BatchMove2.Execute else BatchMove3.Execute; TTabDest.close; TTabDest.TableName := NomTable+'ADR'; i := i + 50000; end;
Merci
Partager