Bonjour à tous,

Peut-être que la réponse a déjà été donnée mais je n'arrive pas à la trouver.

Je cherche à importer les données d'une table SQL vers un autre serveur SQL.
Pour cela j'utilise un dataadapter et fait une boucle.
Ci-dessous mon code.

Code VB.NET : 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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Sub ChargementBaseSalaries()
        Dim OConnectionAS400 As Data.Odbc.OdbcConnection
        Dim OCommandeAs400 As Data.Odbc.OdbcCommand
        Dim ODataAdapter As Data.Odbc.OdbcDataAdapter
        Dim ODataSet As New Data.DataSet()
        Dim strSql As String
        Dim ODataTable As Data.DataTable
        Dim strConn As String
 
        strConn = "Driver={SQL Server};Server=X1;DataBase=X2;Uid=Util;Pwd=Mdp"
        strSql = "SELECT A1, A2, A3, A4, A5 FROM T1 WHERE X10 = '040' AND A11 = '004'"
 
        OConnectionAS400 = New Data.Odbc.OdbcConnection()
        OConnectionAS400.ConnectionString = strConn
        OConnectionAS400.Open()
        OCommandeAs400 = New Data.Odbc.OdbcCommand(strSql)
        ODataAdapter = New Data.Odbc.OdbcDataAdapter(OCommandeAs400)
        OCommandeAs400.Connection() = OConnectionAS400
        ODataAdapter.Fill(ODataSet, "PPERS")
        ODataTable = ODataSet.Tables("PPERS")
 
        OConnectionAS400.Close()
 
 
        Dim ConnectionSQL As New OdbcConnection
        ConnectionSQL.ConnectionString = "Driver={SQL Server};Server=X10;DataBase=X11;Uid=UtilX11;Pwd=MdpX11"
        ConnectionSQL.Open()
 
        Dim CommandeSQL As OdbcCommand
        Dim RequeteSQL As String
        Dim i As Integer
 
        For i = 0 To ODataSet.Tables("T1").Rows.Count - 1
            RequeteSQL = "INSERT INTO [T10](A10, A11, A12, A13) VALUES ('" & ODataTable.Rows(i).Item("A1").ToString & "', '" & ODataTable.Rows(i).Item("A2").ToString & "', '" & ODataTable.Rows(i).Item("A3").ToString & "', '" & ODataTable.Rows(i).Item("A4").ToString & "')"
            CommandeSQL = New OdbcCommand(RequeteSQL, ConnectionSQL)
            CommandeSQL.ExecuteNonQuery()
        Next
 
        ConnectionSQL.Close()
    End Sub


Mais, je ne sais pas pourquoi, je me retrouve avec le double d'enregistrement sur ma table réception.

Avez-vous une idée ?

Merci de votre aide.