none
[RESOLU]Problème avec ma requête(insert) sur une DB oracle RRS feed

  • Question

  • Bonjour,

    J'utilise le driver oracle pour un applicatif en VB.net.

    J'ai un problème avec ma requête insert, quand je l’exécute avec Toad ma requête fonctionne mais pas depuis Visual Studio.

     Requête sous toad:

    INSERT INTO tbl_candidature(id_candidat,id_fonction_vacante,id_statut,date_encodage,lien_cv,lien_lettre,lien_doc,candi_ext_int,soutien_politique,candidature_spontanee,commentaire,reserve,date_debut_reserve,date_fin_reserve,experience,date_mail,word,lien_word) values (1934,29,4,'19/10/2012','','','',0,0,0,'',0,'','','','01/01/1999',0,'')

    Requête avec visual studio:

    str_requete = "INSERT INTO tbl_candidature(id_candidat,id_fonction_vacante,id_statut,date_encodage,lien_cv,lien_lettre,lien_doc,candi_ext_int,soutien_politique,candidature_spontanee,commentaire,reserve,date_debut_reserve,date_fin_reserve,experience,date_mail,word,lien_word) values (1970,29,4,TO_DATE(" & "'12/09/12'" & "'YYYYMMDD')" & ",'','','',0,0,0,'',0,'','','','',0,'')"

    Message d'erreur:

    Ora-01843 not a valid month j'ai déja essayé d'encoder la date de différentes façon mais rien ne passe.

    J'ai regardé dans NLS_DATE_FORMAT je suis au format DD/MM/RR.

    Je pense que TOAD est configuré avec une certaine culture qui défini la date en dd/mm/yy et que mon connecteur de donnée est défini autrement.

    On ma conseillé de passer par une requête paramétrée:

    Dim oradb As String = "Data Source=(DESCRIPTION=" _
               + "(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=******)(PORT=1521)))" _
               + "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=DBTEST)));" _
               + "User Id=GRH;Password=grh;"
    
            Dim conn As New OracleConnection(oradb)
            'conn.Open()
    
            Dim myCommand As OracleCommand
            Dim strRequete As String
    
    
            strRequete = "INSERT INTO TBL_CANDIDATURE (id_candidat,id_fonction_vacante,id_statut,date_encodage,lien_cv,lien_lettre,lien_doc,candi_ext_int,soutien_politique,candidature_spontanee,commentaire,reserve,date_debut_reserve,date_fin_reserve,experience,date_mail,word,lien_word) VALUES (@id_candidat,@id_fonction_vacante,@id_statut,@date_encodage,@lien_cv,@lien_lettre,@lien_doc,@candi_ext_int,@soutien_politique,@candidature_spontanee,@commentaire,@reserve,@date_debut_reserve,@date_fin_reserve,@experience,@date_mail,@word,@lien_word)"
    
            MsgBox(strRequete)
            myCommand = New OracleCommand(strRequete, conn)
    
            'Création et décalartion des paramètres
            With myCommand.Parameters
                .Add(New OracleParameter("@id_candidat", OracleDbType.Int32, 4))
                .Add(New OracleParameter("@id_fonction_vacante", OracleDbType.Int32, 4))
                .Add(New OracleParameter("@id_statut", OracleDbType.Int32, 4))
                .Add(New OracleParameter("@date_encodage", OracleDbType.Date))
                .Add(New OracleParameter("@lien_cv", OracleDbType.Char, 255))
                .Add(New OracleParameter("@lien_lettre", OracleDbType.Char, 255))
                .Add(New OracleParameter("@lien_doc", OracleDbType.Char, 255))
                .Add(New OracleParameter("@candi_ext_int", OracleDbType.Int16, 1))
                .Add(New OracleParameter("@soutien_politique", OracleDbType.Int16, 1))
                .Add(New OracleParameter("@candidature_spontanee", OracleDbType.Int16, 1))
                .Add(New OracleParameter("@commentaire", OracleDbType.Char, 255))
                .Add(New OracleParameter("@reserve", OracleDbType.Int16, 1))
                .Add(New OracleParameter("@date_debut_reserve", OracleDbType.Date))
                .Add(New OracleParameter("@date_fin_reserve", OracleDbType.Date))
                .Add(New OracleParameter("@experience", OracleDbType.Char, 255))
                .Add(New OracleParameter("@date_mail", OracleDbType.Date))
                .Add(New OracleParameter("@word", OracleDbType.Int16, 1))
                .Add(New OracleParameter("@lien_word", OracleDbType.Char, 255))
            End With
    
            'Attribution des valeurs aux paramètres
            With myCommand
                .Parameters("@id_candidat").Value = CInt("1970")
                .Parameters("@id_fonction_vacante").Value = CInt("29")
                .Parameters("@id_statut").Value = CInt(4)
                .Parameters("@date_encodage").Value = CDate("12/09/2012")
                .Parameters("@lien_cv").Value = CStr("")
                .Parameters("@lien_lettre").Value = CStr("")
                .Parameters("@lien_doc").Value = CStr("")
                .Parameters("@candi_ext_int").Value = CInt(0)
                .Parameters("@soutien_politique").Value = CInt(0)
                .Parameters("@candidature_spontanee").Value = CInt(0)
                .Parameters("@commentaire").Value = CStr("")
                .Parameters("@reserve").Value = CInt(0)
                .Parameters("@date_debut_reserve").Value = CDate("12/09/2012")
                .Parameters("@date_fin_reserve").Value = CDate("12/09/2012")
                .Parameters("@experience").Value = CStr("")
                .Parameters("@date_mail").Value = CDate("12/09/2012")
                .Parameters("@word").Value = CStr("")
                .Parameters("@lien_word").Value = CStr("")
    
            End With
    
            Try
                myCommand.Connection.Open()
                myCommand.ExecuteNonQuery()
                myCommand.Connection.Close()
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
     

    Mais j'ai une erreur sur la ligne 

     myCommand.ExecuteNonQuery()

    missing expression.

    Pouvez vous m'aider, d'avance merci 




    • Modifié neotof samedi 20 octobre 2012 11:01
    vendredi 19 octobre 2012 17:23

Réponses

  • Merci Patrice Scribe, maintenant il me dit le format de la chaine d'entrée est incorrect sur la ligne myCommand.ExecuteNonQuery()

    J'ai trouvé c etait le format de la date encore merci Patrice 

    • Modifié neotof samedi 20 octobre 2012 11:00
    • Marqué comme réponse neotof dimanche 21 octobre 2012 10:26
    samedi 20 octobre 2012 08:43

Toutes les réponses