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
| Le bouton :
Private Sub BAjouterAstuce_Click(sender As Object, e As EventArgs) Handles BAjouterAstuce.Click
If Not DonneesPossiblesAstuce() Then
BIgnorerAstuce_Click(Me, Nothing)
Exit Sub
End If
Dim NouvelId As Integer
Dim IdAstuceEnCours As Integer
IdAstuceEnCours = MesAstuces.Tables(NomTableAstuces).Rows(Me.BindingContext(MesAstuces.Tables(NomTableAstuces)).Position).Item("IdAstuce")
Dim DTR As DataRow = MesAstuces.Tables(NomTableFichiers).NewRow
ChargerDonneesPourAjouterOuModifierAstuce(DTR)
MesAstuces.Tables(NomTableFichiers).RejectChanges()
If AjouterAstuce(NouvelId, DTR) Then ' envoyer toutes les données et recevoir le nouvel ID par ByRef de NouvelId
DTR.Item("IdType") = NouvelId
MesAstuces.Tables(NomTableAstuces).RejectChanges()
MesAstuces.Tables(NomTableAstuces).Rows.Add(DTR.ItemArray) ' Si ok, on ajoute au DataTable
MesAstuces.Tables(NomTableAstuces).AcceptChanges()
Else
BIgnorerAstuce_Click(Me, Nothing)
End If
DTR.Delete()
End Sub
La mise à jour effective :
Private Function AjouterAstuce(ByRef Id As Integer, ByRef DTR As DataRow) As Boolean ' doit recevoir toutes les données, sans Id.
Dim SQL As String
ParametroConexion()
MaConexion.Open()
MaCommande = New OleDbCommand()
MaCommande.Connection = MaConexion
' Les paramètres dans l'ordre de leur utilisation dans la commande
MaCommande.Parameters.AddWithValue("@XIdTypeAstuce", DTR.Item("XIdTypeAstuce"))
MaCommande.Parameters.AddWithValue("@NomAstuce", DTR.Item("NomAstuce"))
MaCommande.Parameters.AddWithValue("@DescripAstuce", DTR.Item("DescripAstuce"))
MaCommande.Parameters.AddWithValue("@CodeAstuce", DTR.Item("CodeAstuce"))
MaCommande.Parameters.AddWithValue("@NoteAstuce", DTR.Item("NoteAstuce"))
MaCommande.Parameters.AddWithValue("@RemAstuce", DTR.Item("RemAstuce"))
MaCommande.Parameters.AddWithValue("@CommentAstuce", DTR.Item("CommentAstuce"))
MaCommande.Parameters.AddWithValue("@LienAstuce", DTR.Item("LienAstuce"))
' Traiter ici l'interdiction de doublon sur NomAstuce
SQL = "SELECT COUNT(IdType) FROM T_Type WHERE NomAstuce = @NomAstuce; "
MaCommande.CommandText = SQL
If MaCommande.ExecuteScalar() > 0 Then
' On ne peut créer un doublon sur Type
MaConexion.Close()
MaCommande.Dispose()
Return False
End If
' Vérifier ici les autres contraintes (interdiction et obligations diverses pour la cohérence des données)
'
' Rien à faire pour la gestion des astuces
'
' Effectuer l'ajout effectif dans la DB
SQL = "INSERT INTO T_ASTUCEPROG (XIdTypeAstuce, NomAstuce, DescripAstuce, CodeAstuce, NoteAstuce, RemAstuce, CommentAstuce, LienAstuce) VALUES(@XIdTypeAstuce, @NomAstuce, @DescripAstuce, @CodeAstuce, @NoteAstuce, @RemAstuce, @CommentAstuce, @LienAstuce); "
MaCommande.CommandText = SQL
If MaCommande.ExecuteNonQuery() = 1 Then
' Ajout effectué
Else
' Erreur
MaConexion.Close()
MaCommande.Dispose()
Return False
End If
' Lire le dernier ID attribué pour la mise à jour du DataTable (retour par paramètre ByRef)
SQL = "SELECT MAX(IdAstuce) FROM T_ASTUCEPROG"
MaCommande.CommandText = SQL
Id = MaCommande.ExecuteScalar()
MaConexion.Close()
MaCommande.Dispose()
Return True
End Function |
Partager