none
Requête sur ma table Access RRS feed

  • Question

  • Bonjour, 

     

    J'arrive à me connecter à ma base de donnée Access, mais pas à faire un update des records.  Voici mon code :

     

    ******************

     Dim con As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & S1 & "currencies.accdb ; Persist Security Info=False"

    'S1 est une variable qui récupère le chemin d'accès à mon applic


     Dim cmdSQL As New SqlCommand("Update currencies.accdb SET rate_date = 31/12/2008, rate = eur2usd & WHERE currencyid = USD")

    'eur2usd est une variable qui contient un double dans lequel une valeur a été récupérée à partir d'un Webservice (Taux d'une devise)

     Dim connex As New SqlConnection(con)

     connex.Open()
      

                  Try

    cmdSQL = New SqlClient.SqlCommand(cmdSQL, connex)

    'Ici le compilateur me dit   Erreur    1    Une valeur de type 'System.Data.SqlClient.SqlCommand' ne peut pas être convertie en 'String'.  


                        Dim row As Integer
                        row = cmdSQL.ExecuteNonQuery()
                        If row = 1 Then
                            Label1.Text = "UPDT OK"
                        Else
                            Label1.Text = "Error"
                        End If
                        If connex.State = ConnectionState.Open Then connex.Close()

                    Catch er As Exception
                        MessageBox.Show(er.Message)
                    End Try

     

    Pourtant tous les exemple que j'ai me donne cette syntaxe pour le SqlCommand ..... Je ne comprend rien.

     

    Merci de vos lumières .....

    jeudi 29 janvier 2009 11:54

Toutes les réponses

  • Ca va déjà un peu mieux avec ceci : 

     

                        Dim upd As OleDbCommand = New OleDbCommand(cmdText, connex)
                        Dim row As Integer
                        row = upd.ExecuteNonQuery()

     

    par contre j'ai une erreur "problème de syntaxe opérateur manquant " 'eur2usd' & ". " avec cette requête :

     

    Dim cmdText As String = ("Update currencies.accdb SET [rate_date] = '31/12/2008', [rate] = 'eur2usd' & WHERE [currencyid] = 'USD'")

     

    Des avis ?

    jeudi 29 janvier 2009 19:19
  • J'ai presque résolu ma question.  La requête update doit être comme ceci : 

    Dim cmdText As String = _
                    ("UPDATE table1 SET [currencyid] = USD, [rate_date] = '31/12/2008', [rate] =" & eur2usd & "WHERE [currencyid] = 'USD' ")

     

    Malheureusement ma variable eur2usd est un double qui me retourne un nombre avec une virgule (un point plus exactement) qui fait planter ma requête.  J'ai deux pistes pour le résoudre, une en passant un paramètre à ma requête et l'autre en substituant des charactères, mais je n'ai rien compris ni à l'une ni à l'autre.

     

    Qui a déjà résolu ce problème dans une requête update ?

     

    Merci d'avance.

    vendredi 30 janvier 2009 04:37
  • J'ai voulu faire ceci pour que tout passe bien :

    Dim castusd As String = ("CAST (eur2usd as AS decimal(10,5)) ")

    Dim cmdText As String = _
    ("UPDATE table1 SET [currencyid] = USD, [rate_date] = '31/12/2008', [rate] =" & castusd & "WHERE [currencyid] = 'USD' ")

    Mais j'obtient une erreur :  Erreur de syntaxe (opérateur absent) dans l'expression « CAST (eur2usd as AS decimal(10,5)) ».

    Ma requête décodée donne ceci :        

    UPDATE table1 SET [currencyid] = USD, [rate_date] = '31/12/2008', [rate] = CAST (eur2usd as AS decimal(10,5)) WHERE [currencyid] = 'USD'

    Pour info si je hardocde une valeur (sans virgule) cela se passe sans problèmes

    JE MEURSSSSSSSSSSSSSSSSSSSSSSSS
    samedi 31 janvier 2009 11:44