2011-11-04 4 views
0

J'essaie de supprimer une ligne dans la base de données avec GetDeleteCommand() et DataAdapter.Update(). Avec GetInsertCommand() et GetUpdateCommand() toutes les transactions fonctionnent, mais avec GetDeleteCommand() échoue, je veux dire, "exécuter" sur cette instruction mais les données restent dans la table.getdeletecommand ne supprime rien

voici mon code:

Public Function delete(ByVal tabla As String, ByVal arg As VariantType) As Boolean 
    Dim ok As Boolean = False 
    Dim dataSet As DataSet = New DataSet(tabla) 
    Dim dataRow As DataRow 
    Dim dataTable As DataTable 
    Me.sqlComm.Connection = Me.sqlConn 
    Me.sqlComm.CommandText = "Select * from " & tabla 

    Try 
     Me.sqlDA.SelectCommand = Me.sqlComm 
     'llenar el dataset con los datos de la consulta 
     Me.sqlDA.MissingSchemaAction = MissingSchemaAction.AddWithKey 
     Me.sqlDA.Fill(dataSet, tabla) 

     'nuevo commandbuilder 
     Me.sqlCB = New SqlCommandBuilder(Me.sqlDA) 
     'crear el buffer de la tabla 
     dataTable = dataSet.Tables(tabla) 
     'buscar el valor en la tabla 
     dataRow = dataTable.Rows.Find(arg) 
     'obtener el delete command 
     Me.sqlDA.DeleteCommand = Me.sqlCB.GetDeleteCommand(True) 
     'actualizar los registros. 
     'se supone q con el DeleteCommand deberia borrar en este punto el dato 
     Me.sqlDA.Update(dataSet, tabla) 

     ok = True 
    Catch ex As Exception 
     Console.WriteLine(ex.StackTrace.ToString() & vbCrLf & ex.Message()) 
     Me.err = ex.StackTrace.ToString() & vbCrLf & ex.Message() 
    End Try 
    Me.sqlConn.Close() 
    Return ok 
End Function 

comme dit précédemment, le tout code exécuté sans erreur, mais les données trouvées et « supprimé » de mon code restent encore dans le tableau.

Qu'est-ce qui ne va pas? ou comment faire une commande correcte ou comment faire cela fonctionne?

merci

Répondre

0

Vous ne supprimez pas réellement la ligne. Vous le trouvez, mais ne faites rien après l'avoir trouvé. Si vous appelez dataRow.Delete() avant votre instruction sqlData.Update, la ligne doit être supprimée.

+0

ouais ... c'est vrai, mais la commande sqlcommand.getdelet ne serait pas nécessaire en utilisant datarow.delete() –