Problème de liaison tardive avec strict on [Résolu]

Messages postés
1855
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
- - Dernière réponse : cs_JMO
Messages postés
1855
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
Afficher la suite 

2 réponses

Messages postés
1855
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
23
0
Merci
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()
Commenter la réponse de cs_JMO
Messages postés
1855
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
23
0
Merci
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
Commenter la réponse de cs_JMO