Imports System
Imports System.Data.SqlClient
Imports System.IO
Public Class WebForm6
    Inherits System.Web.UI.Page
#Region " Code généré par le Concepteur Web Form "
    'Cet appel est requis par le Concepteur Web Form.
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
    End Sub
    Protected WithEvents form1 As System.Web.UI.HtmlControls.HtmlForm
    Protected WithEvents Button1 As System.Web.UI.WebControls.Button
    Protected WithEvents Button2 As System.Web.UI.WebControls.Button
    Protected WithEvents val_a_ajouter As System.Web.UI.WebControls.TextBox
    Protected WithEvents DataGrid1 As System.Web.UI.WebControls.DataGrid
    'REMARQUE : la déclaration d'espace réservé suivante est requise par le Concepteur Web Form.
    'Ne pas supprimer ou déplacer.
    Private designerPlaceholderDeclaration As System.Object
    Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
        'CODEGEN : cet appel de méthode est requis par le Concepteur Web Form
        'Ne le modifiez pas en utilisant l'éditeur de code.
        InitializeComponent()
    End Sub
#End Region
    'cette fonction permet de rafraichir le tableau
    Sub charger_grille()
        'chaine de connexion a la base
        Dim strConnection As String = Global.loginbase
        'definition de la requete
        Dim strRequete As String = "SELECT * FROM MANDAT"
        'creation de la connection
        Dim connection As New SqlConnection(strConnection)
        'creation de la requete
        Dim requete As New SqlCommand(strRequete, connection)
        'ouverture de la connection
        connection.Open()
        'execution de la requete et fermeture de celle ci a quand l'objet datareader se ferme 
        DataGrid1.DataSource = requete.ExecuteReader(CommandBehavior.CloseConnection)
        'lie le controle a la source de données
        DataGrid1.VirtualItemCount = DataGrid1.Items.Count
        DataGrid1.DataBind()
        'fermeture de la connection par sécurité
        connection.Close()
    End Sub
    'fonction qui se lance au chargement de la page
    'on en profite pour raffraichir l'ecran
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'si la page n'est pas en chargement, ni en reponse a une publication du client
        ',ni en reponse a une premiere demande d'acces  
        If (Not Page.IsPostBack) Then
            'alors on raffraichit le tableau
            charger_grille()
        End If
    End Sub
    'fonction qui se lance quand on clique sur un bouton modifier du tableau
    Sub DataGrid1EditHandler(ByVal sender As Object, ByVal e As DataGridCommandEventArgs)
        'on edite la ligne du tableau qui doit être modifiée
        DataGrid1.EditItemIndex = e.Item.ItemIndex
        'on recharge le tableau
        charger_grille()
    End Sub
    'fonction qui se lance quand on clique sur un bouton annuler du tableau
    Sub DataGrid1CancelHandler(ByVal sender As Object, ByVal e As DataGridCommandEventArgs)
        'dans ce cas, si on clique sur annule, on ne doit plus etre en edition!
        DataGrid1.EditItemIndex = -1
        'on recharge le tableau
        charger_grille()
    End Sub
    'fonction qui affiche un message d'avertissement
    Public Sub ShowAlert(ByVal Message As String)
        Dim MyAlertLabel As New Label
        MyAlertLabel.Text = "<script language='vbscript'>" & _
          vbNewLine & "Alert(" & """" & Message & """" & ")" & _
          vbNewLine & "</script>"
        Page.Controls.Add(MyAlertLabel)
    End Sub
    'fonction qui transorme une chaine pour que si elle contient une quote
    ', elle soit bien gérée par la requete sql
    'le principe est de tripler toutes les quotes rencontrées
    Public Function DoubleApost(ByVal chaine)
        Dim i
        Dim modif
        'on parcours la chaine
        For i = 1 To Len(chaine)
            'si on trouve une quote
            If Mid(chaine, i, 1) = "'" Then
                'on rajoute deux quotes
                modif = modif & "''"
            Else
                'sinon on rajoute le caractere 
                modif = modif & Mid(chaine, i, 1)
            End If
        Next
        'on retourne la chaine modifiee
        DoubleApost = modif
    End Function
    'fonction appelée quand on rajoute un enregistrement
    Sub btn_command(ByVal Sender As Object, ByVal e As CommandEventArgs)
        'on recupere la valeur a ajouter
        Dim valeur As String = val_a_ajouter.Text
        'on transorme cette chaine en chaine compatible sql
        valeur = DoubleApost(valeur)
        'chaine de connexion a la base
        Dim strConnection As String = Global.loginbase
        'definition de la requete
        Dim strRequete As String = "INSERT INTO MANDAT(INTITULE_MANDAT) VALUES('" + valeur + "')"
        'creation de la connection
        Dim connection As New SqlConnection(strConnection)
        'creation de la requete
        Dim requete As New SqlCommand(strRequete, connection)
        'ouverture de la connection
        connection.Open()
        Try
            'on essaye d'effectuer la requete
            requete.ExecuteNonQuery()
        Catch
            'si ca ne marche pas, cela signifie que l'enregistrement existe deja, dans ce cas message d'erreur
            ShowAlert("enregistrement déjà existant, insertion refusée")
        End Try
        'fermeture de la connection
        connection.Close()
        'raffraichissement du tableau
        charger_grille()
    End Sub
    'mise a jour d'un enregistrement
    Sub DataGrid1UpdateHandler(ByVal sender As Object, ByVal e As DataGridCommandEventArgs)
        'recuperation de l'identifiant
        Dim idmandat As String = e.Item.Cells(0).Text
        'recuperation de sa valeur
        Dim intitule As TextBox = e.Item.Cells(1).Controls(0)
        'creation de la requete en validant les chaines
        Dim strRequete As String = "UPDATE MANDAT SET INTITULE_MANDAT = '" + DoubleApost(intitule.Text) + "' WHERE NUM_MANDAT=" + idmandat
        'chaine de connexion a la base
        Dim strConnection As String = Global.loginbase
        'creation de la connection
        Dim connection As New SqlConnection(strConnection)
        'creation de la requete
        Dim requete As New SqlCommand(strRequete, connection)
        'ouverture de la connection
        connection.Open()
        Try
            'on essaye d'effectuer la requete
            requete.ExecuteNonQuery()
        Catch
            'si ca ne marche pas, cela signifie que l'enregistrement existe deja, dans ce cas message d'erreur
            ShowAlert("enregistrement déjà existant, insertion refusée")
        End Try
        'fermeture de la connection
        connection.Close()
        'on annule le mode d'edition
        DataGrid1.EditItemIndex = -1
        'raffraichissement du tableau
        charger_grille()
    End Sub
    'pour trier par ordre alphabétique les enregistrements selon la colonne selectionnée
    Sub DataGrid1EventHandler(ByVal sender As Object, ByVal e As DataGridSortCommandEventArgs)
        'creation de la requete avec le tri
        Dim strRequete As String = "SELECT * FROM MANDAT ORDER BY " + e.SortExpression
        'chaine de connexion a la base
        Dim strConnection As String = Global.loginbase
        'creation de la connection
        Dim connection As New SqlConnection(strConnection)
        'creation de la requete
        Dim requete As New SqlCommand(strRequete, connection)
        'ouverture de la connection
        connection.Open()
        'execution de la requete et fermeture de celle ci a quand l'objet datareader se ferme 
        DataGrid1.DataSource = requete.ExecuteReader(CommandBehavior.CloseConnection)
        'lie le controle a la source de données
        DataGrid1.DataBind()
        'fermeture de la connection
        connection.Close()
        'raffraichissement du tableau
        charger_grille()
    End Sub
    'suppression d'un enregistrement
    Sub suppr(ByVal resul As String)
        'definition de la requete
        Dim strRequete2 As String = "DELETE MANDAT WHERE NUM_MANDAT=" + resul
        'chaine de connexion a la base
        Dim strConnection As String = Global.loginbase
        'creation de la connection
        Dim connection As New SqlConnection(strConnection)
        'creation de la requete
        Dim requete As New SqlCommand(strRequete2, connection)
        'ouverture de la connection
        connection.Open()
        'execution de la requete
        requete.ExecuteNonQuery()
        'fermeture de la connection
        connection.Close()
    End Sub
    'quand on clique sur un bouton
    Sub DataGrid1_ItemCommand(ByVal Sender As Object, ByVal e As DataGridCommandEventArgs)
        'recuperation de l'id de l'enregistrement
        Dim strResultat As String = e.Item.Cells(0).Text
        'recuperation du bouton cliqué
        Dim commande As String = e.CommandName
        'si on a clique sur supprimer
        If (commande = "supprimer") Then
            'on supprime l'enregistrement grace a l'ide recupéré
            suppr(strResultat)
        End If
        'raffraichissement du tableau
        charger_grille()
    End Sub
    Sub DataGrid1_Page(ByVal sender As Object, ByVal e As DataGridPageChangedEventArgs) Handles DataGrid1.PageIndexChanged
        DataGrid1.CurrentPageIndex = e.NewPageIndex
        charger_grille()
    End Sub
End Class
			
		
 
	
Partager