IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Problème Invalid Object


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 472
    Par défaut Problème Invalid Object
    Bonjour à tous,

    J'ai un souci avec mon application quand je clique sur un bouton qui me sert à lister toutes les activités j'ai un message d'erreur >>> invalid object name : nom_de_ma_procedure

    Quand je clique sur le bouton de débogage je pointe sur cette ligne là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call rs.Open(cmd, , , , adCmdStoredProc)
    Avez vous une idée sur cette erreur là ?

    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Call est utilisé pour appeler une procédure, ce qui n'est pas le cas ici.

    Essayes avec Set à la place.

    Philippe

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 472
    Par défaut
    Citation Envoyé par Philippe JOCHMANS Voir le message
    Bonjour

    Call est utilisé pour appeler une procédure, ce qui n'est pas le cas ici.

    Essayes avec Set à la place.

    Philippe
    Bonjour Philippe,

    Merci pour ta réponse , mais quand j'ai remplacé le Call avec le SET ma ligne de code est devenue rouge.

    Et cette ligne là fait appel normalement à une procédure qui va me récupérer des données à partir de ma base sql server.

    Pour être plus précise voilà le code de ma fonction qui contient cette ligne là :


    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    Private Sub InitialisationDuTableau(ByVal projectName As String)
     
        Dim params As Variant
        Dim ligneCourant As Integer
        Dim objDBHelper As New DBHelper
     
        Dim cnx As ADODB.Connection
        Dim rs As ADODB.Recordset
        Dim cmd As ADODB.Command
        Dim prm As ADODB.Parameter
        Dim identifiant As Integer
        Dim sequenceCourant As String
     
        Set cnx = New ADODB.Connection
        With cnx
     
            .ConnectionString = objDBHelper.GetConnectionString
            Call .Open
        End With
     
        Set cmd = New ADODB.Command
        With cmd
     
            Set .ActiveConnection = cnx
            .CommandType = adCmdStoredProc
            .CommandText = "usp_MSP_Extract_Project_Tableau"
     
            Set prm = cmd.CreateParameter("@ProjectName", adVarChar, adParamInput, 4000, projectName)
            Call .Parameters.Append(prm)
        End With
     
        Set rs = New ADODB.Recordset
        With rs
     
            Set .ActiveConnection = cnx
            .LockType = adLockOptimistic
            .CursorLocation = adUseClient
            .CursorType = adOpenForwardOnly
        End With
     
       Call rs.Open(cmd, , , adCmdStoredProc)  '''''' cette ligne là pose problème
     
        'Affichage du résultat
        With rs
     
            Call Application.Goto(Reference:="ORIGINE")
            ligneCourant = 0
     
            Do While rs.EOF = False
     
                If IsNull(rs!Sequence) = False Then
     
                    'Il faut rajouter un index pour toutes les ressources uniquements
                    If IsNull(rs!DisplayOrder) = False Then
     
                        '1 : Correspond à une tâche
                        '2 : Correspond à une ressource
                        If rs!DisplayOrder = 1 Then
     
                            sequenceCourant = rs!Sequence
                            identifiant = 0
                        Else
     
                            identifiant = identifiant + 1
                            sequenceCourant = rs!Sequence & "." & identifiant
                        End If
     
                        ActiveCell.Offset(ligneCourant, -2).Value = rs!DisplayOrder
                    End If
     
                    ActiveCell.Offset(ligneCourant, -1).Value = "'" & CStr(sequenceCourant)
                End If
     
                If IsNull(rs!ProjectCode) = False Then
     
                    ActiveCell.Offset(ligneCourant, 0).Value = rs!ProjectCode
                End If
     
                If IsNull(rs!TaskName) = False Then
     
                    ActiveCell.Offset(ligneCourant, 1).Value = rs!TaskName
                End If
     
                If IsNull(rs!TableRateCost) = False Then
     
                    ActiveCell.Offset(ligneCourant, 2).Value = rs!TableRateCost
                End If
     
                If IsNull(rs!Costs) = False Then
     
                    ActiveCell.Offset(ligneCourant, 3).Value = rs!Costs
     
                    If rs!Active = 0 Then
     
                        ActiveCell.Offset(ligneCourant, 3).NumberFormat = "(#,##0.00)"
                    Else
     
                        ActiveCell.Offset(ligneCourant, 3).NumberFormat = "#,##0.00"
                    End If
                End If
     
                If IsNull(rs!Times) = False Then
     
                    ActiveCell.Offset(ligneCourant, 4).Value = rs!Times
     
                    If rs!Active = 0 Then
     
                        ActiveCell.Offset(ligneCourant, 4).NumberFormat = "(#,##0.00)"
                    Else
     
                        ActiveCell.Offset(ligneCourant, 4).NumberFormat = "#,##0.00"
                    End If
                End If
     
                If IsNull(rs!Durate) = False Then
     
                    ActiveCell.Offset(ligneCourant, 5).Value = Replace(rs!Durate, "'", "")
     
                    If rs!Active = 0 Then
     
                        ActiveCell.Offset(ligneCourant, 5).NumberFormat = "(#,##0)"
                    Else
     
                        ActiveCell.Offset(ligneCourant, 5).NumberFormat = "#,##0"
                    End If
                End If
     
                If IsNull(rs!StartDate) = False Then
     
                    ActiveCell.Offset(ligneCourant, 6).Value = rs!StartDate
     
                    If rs!Active = 0 Then
     
                        ActiveCell.Offset(ligneCourant, 6).NumberFormat = "(dd/mm/yyyy)"
                    Else
     
                        ActiveCell.Offset(ligneCourant, 6).NumberFormat = "dd/mm/yyyy"
                    End If
                End If
     
                If IsNull(rs!EndDate) = False Then
     
                    ActiveCell.Offset(ligneCourant, 7).Value = rs!EndDate
     
                    If rs!Active = 0 Then
     
                        ActiveCell.Offset(ligneCourant, 7).NumberFormat = "(dd/mm/yyyy)"
                    Else
     
                        ActiveCell.Offset(ligneCourant, 7).NumberFormat = "dd/mm/yyyy"
                    End If
                End If
     
                Call .MoveNext
                ligneCourant = ligneCourant + 1
            Loop
     
            Call .Close
     
        End With
     
        Call cnx.Close
     
        Set cnx = Nothing
        Set rs = Nothing
    End Sub

  4. #4
    Invité
    Invité(e)
    Par défaut Problème Invalid Object

  5. #5
    Invité
    Invité(e)
    Par défaut Set rs = cmd.Execute
    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
    25
    26
    27
    28
    29
    30
    Dim params As Variant
        Dim ligneCourant As Integer
        Dim objDBHelper As New DBHelper
     
        Dim cnx As ADODB.Connection
        Dim rs As ADODB.Recordset
        Dim cmd As ADODB.Command
        Dim prm As ADODB.Parameter
        Dim identifiant As Integer
        Dim sequenceCourant As String
     
        Set cnx = New ADODB.Connection
        With cnx
     
            .ConnectionString = objDBHelper.GetConnectionString
            Call .Open
        End With
     
        Set cmd = New ADODB.Command
        With cmd
     
            Set .ActiveConnection = cnx
            .CommandType = adCmdStoredProc
            .CommandText = "usp_MSP_Extract_Project_Tableau"
     
            Set prm = cmd.CreateParameter("@ProjectName", adVarChar, adParamInput, 4000, projectName)
            Call .Parameters.Append(prm)
        End With
        Set rs = cmd.Execute
        'Set rs = New ADODB.Recordset

  6. #6
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 472
    Par défaut
    Citation Envoyé par rdurupt Voir le message
    Merci pour ta réponse.

    Alors j'ai fait ce que tu m'as demandé et j'ai eu le même message.

    J'ai décidé de regarder coté sql server en jetant un coup d'oeil sur la procédure stockée "usp_MSP_Extract_Project_Tableau" et la surprise j'ai trouvé du code lié au curseur :

    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
    25
    26
    27
    --Mise à jour des indicateurs  
     
    	DECLARE task_cursor CURSOR FOR 
    	SELECT [Id]
    	FROM #Temp
    	WHERE	[DisplayOrder] = 1 AND 
    			[HasNotes] = 1
     
    	OPEN task_cursor
     
    	FETCH NEXT FROM task_cursor INTO @UID
     
    	WHILE @@FETCH_STATUS = 0
    	BEGIN
     
    		UPDATE #Temp
    		SET [HasNotes] = 1
    		FROM #Temp t
    		WHERE t.[Id] IN (
    					SELECT [ID] FROM [dbo].[MSP_GET_AllTask](@UID)
    		)
     
    		FETCH NEXT FROM task_cursor INTO @UID
    	END
     
    	CLOSE task_cursor
    	DEALLOCATE task_cursor
    Et justement le message d'erreur était :

    Erreur d'exécution
    Invalid object name ' dbo.MSP_GET_AllTask '

    Et dans ma procédure stockée cette ligne de code est soulignée en rouge
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT [ID] FROM [dbo].[MSP_GET_AllTask](@UID)

  7. #7
    Invité
    Invité(e)
    Par défaut SELECT [ID] FROM [dbo].[MSP_GET_AllTask](@UID)
    je suis un peut limite en procédure stocké,
    mais je pense qu'il est possible de la tester seule dans sqlsever pour la débuguer.

Discussions similaires

  1. [SQL-Server] Invalid object name
    Par Anthony.Desvernois dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 13/07/2007, 12h47
  2. [Tableaux] Problème invalid argument foreach()
    Par kcizth dans le forum Langage
    Réponses: 9
    Dernier message: 05/01/2006, 11h56
  3. [SQL] Problème "Invalid number"
    Par EssaiEncore dans le forum Bases de données
    Réponses: 2
    Dernier message: 09/12/2005, 10h45
  4. invalid object name
    Par Dnx dans le forum Langage SQL
    Réponses: 3
    Dernier message: 11/10/2005, 10h42
  5. [PowerBuilder 9] EditMask : problème Invalid Number
    Par loicmillion dans le forum Powerbuilder
    Réponses: 1
    Dernier message: 22/11/2004, 13h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo