Problème de liaison tardive avec strict on

Résolu
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 - 3 oct. 2015 à 18:42
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 - 4 oct. 2015 à 11:11
Bonjour le forum,

Suivant les recommandations de plusieurs modérateurs et contributeurs de ce forum (que je salue), j'ai appliqué le restrictif "Option Strict On, Option Explicit On" et me retrouve donc avec une erreur "option Strict On refuse toute liaison tardive" que je n'arrive pas à solutionner.


       Dim cnPDP As OleDbConnection = New OleDbConnection(ConnectingExcel(newfilePDP))
        cnPDP.Open()

        Dim rsPDP As New ADODB.Recordset
        rsPDP.CursorLocation = ADODB.CursorLocationEnum.adUseServer
        rsPDP.CursorType = ADODB.CursorTypeEnum.adOpenKeyset
        rsPDP.LockType = ADODB.LockTypeEnum.adLockOptimistic

        For Each itemrow In datasetCGN.Tables("CGN").Rows
            rsPDP.Open(" SELECT * FROM [Plan_Production$] " & _
                    " WHERE [Environnement] =" & "'" & itemrow("Environnement") & "' And " & _
                    "       [Application] =" & "'" & itemrow("Application") & "' And " & _
                    "       [Job] =" & "'" & itemrow("Job") & "' ", cnPDP)
            Do Until rsPDP.EOF
                For Each item As String In listofcolumns
                    rsPDP.Fields(item).Value = itemrow(item).ToString
                Next item
                rsPDP.MoveNext()
                System.Windows.Forms.Application.DoEvents()
            Loop
            rsPDP.Close()
        Next


J'obtiens cette erreur sur
itemrow("Environnement")
itemrow("Application")
itemrow("Job")
et itemrow(item)

Pour écrire avec "Microsoft.Office.Interop.Excel.Application()", j'ai écrit
        For i As Integer = 0 To listofcolumns.Count - 1
            Dim castRange As Excel.Range = CType(xlWorkSheet.Cells(1, (columnsPDP + 1) + i), Excel.Range)
            castRange.Value = listofcolumns(i).ToString
        Next i

mais pour écrire avec ADODB, je n'arrive pas à trouver le bon cast.

Merci de vos propositions,
.jean-marc

2 réponses

cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
3 oct. 2015 à 18:53
ajout

Pour le datasetCGN
        Dim da As OleDb.OleDbDataAdapter
        Dim datasetCGN As DataSet = New DataSet

        Dim cnCGN As OleDbConnection = New OleDbConnection(ConnectingExcel(fileCGN))
        Dim queryCGN As String = " SELECT * " & _
                                 " FROM [Informations_CGN$] WHERE [Job] IS NOT NULL " & _
                                 " ORDER BY [Environnement] ASC, [Application] ASC, [Job] ASC "
        cnCGN.Open()
        da = New OleDb.OleDbDataAdapter(queryCGN, cnCGN)
        da.Fill(datasetCGN, "CGN")
        cnCGN.Close()
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
4 oct. 2015 à 11:11
Problème résolu en passant par un DataTable.
        Dim table As DataTable = datasetCGN.Tables(0)
        For j As Integer = 0 To table.Rows.Count - 1
            rs.Open(" SELECT * FROM [Plan_Production$] " & _
                     " WHERE [Environnement] =" & "'" & table.Rows.Item(j).Item(0).ToString & "' And " & _
                     "       [Application] =" & "'" & table.Rows.Item(j).Item(1).ToString & "' And " & _
                     "       [Job] =" & "'" & table.Rows.Item(j).Item(2).ToString & "' ", cn)

jean-marc
0
Rejoignez-nous