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

cs_JMO 1855 Messages postés jeudi 23 mai 2002Date d'inscription 24 juin 2018 Dernière intervention - 3 oct. 2015 à 18:42 - Dernière réponse : cs_JMO 1855 Messages postés jeudi 23 mai 2002Date d'inscription 24 juin 2018 Dernière intervention
- 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 

Votre réponse

2 réponses

cs_JMO 1855 Messages postés jeudi 23 mai 2002Date d'inscription 24 juin 2018 Dernière intervention - 3 oct. 2015 à 18:53
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
cs_JMO 1855 Messages postés jeudi 23 mai 2002Date d'inscription 24 juin 2018 Dernière intervention - 4 oct. 2015 à 11:11
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.