une interface qui reçoi une table, des conditions, les champs à afficher, les pourcentages des champs, le type des champs, ...
prend tout ça et crée un table avec des boutons de configuration
très pratique, mais un peu dur a expliquer vite comme ça
je me sert de mes outils pour me connecter à une base de donnée Access
toute les validation sont faire (texte, entier, double, couleur, requete, boolean)
on peut, si on a des département, par exemple, au lieu d'affichier ID, afficher un combobox avec les donner de l'autre table (faut envoyer un type requete)
c'est très compliquer a tout montrer, mais amuser vous avez, vous pourrez faire pleins de chose très intéressante
Source / Exemple :
Public Class AjouterModifierSupprimé
Inherits System.Windows.Forms.UserControl
#Region " Windows Form Designer generated code "
#Region "variable"
Public nb As Integer
Public tableau() As Type.AjoutModSupp
Public condition As Type.AjoutModSuppDroit
Public table As String
Public where As String
Public ordre() As String
#End Region 'variable
#Region "New, masi pas utiliser, faut le laisser sinon VB.net veut pas compiler"
Public Sub New()
MyBase.New()
'This call is required by the Windows Form Designer.
InitializeComponent()
'Add any initialization after the InitializeComponent() call
End Sub
#End Region 'New, masi pas utiliser, faut le laisser sinon VB.net veut pas compiler
#Region "New"
Public Sub New(ByVal tableau() As Type.AjoutModSupp, ByVal table As String, ByVal condition As Type.AjoutModSuppDroit, Optional ByVal where As String = "", Optional ByVal ordre() As String = Nothing)
MyBase.New()
'#Zone " mise en mémoire "
Me.nb = nb
Me.tableau = tableau
Me.table = table
Me.condition = condition
Me.where = where
Me.ordre = ordre
'#End Zone
'This call is required by the Windows Form Designer.
InitializeComponent()
rafraichir() 'création du tableau
End Sub
#End Region 'New
'UserControl overrides dispose to clean up the component list.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
Friend WithEvents VScrollBar1 As System.Windows.Forms.VScrollBar
Friend textbox() As Object
Friend WithEvents contour1 As test.Contour
Friend WithEvents Panel1 As System.Windows.Forms.Panel
Friend WithEvents pnlPanel1 As System.Windows.Forms.Panel
Friend Button1() As DllBoutons.XpBouton
Friend Button2() As DllBoutons.XpBouton
Friend Button3() As DllBoutons.XpBouton
Friend WithEvents Button4 As DllBoutons.XpBouton
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.VScrollBar1 = New System.Windows.Forms.VScrollBar
Me.contour1 = New test.Contour
Me.Panel1 = New System.Windows.Forms.Panel
Me.pnlPanel1 = New System.Windows.Forms.Panel
Me.Panel1.SuspendLayout()
Me.SuspendLayout()
'
'VScrollBar1
'
Me.VScrollBar1.LargeChange = 1
Me.VScrollBar1.Location = New System.Drawing.Point(370, 10)
Me.VScrollBar1.Maximum = 0
Me.VScrollBar1.Name = "VScrollBar1"
Me.VScrollBar1.Size = New System.Drawing.Size(15, 315)
Me.VScrollBar1.TabIndex = 0
'
'contour1
'
Me.contour1.BackColor = System.Drawing.Color.AliceBlue
Me.contour1.Location = New System.Drawing.Point(0, 0)
Me.contour1.Name = "contour1"
Me.contour1.Size = New System.Drawing.Size(400, 335)
Me.contour1.TabIndex = 2
'
'Panel1
'
Me.Panel1.BackColor = System.Drawing.Color.AliceBlue
Me.Panel1.Controls.Add(Me.pnlPanel1)
Me.Panel1.Location = New System.Drawing.Point(12, 12)
Me.Panel1.Name = "Panel1"
Me.Panel1.Size = New System.Drawing.Size(360, 315)
Me.Panel1.TabIndex = 3
'
'pnlPanel1
'
Me.pnlPanel1.BackColor = System.Drawing.Color.AliceBlue
Me.pnlPanel1.Location = New System.Drawing.Point(0, 0)
Me.pnlPanel1.Name = "pnlPanel1"
Me.pnlPanel1.Size = New System.Drawing.Size(360, 0)
Me.pnlPanel1.TabIndex = 2
'
'AjouterModifierSupprimé
'
Me.BackColor = System.Drawing.SystemColors.Control
Me.Controls.Add(Me.Panel1)
Me.Controls.Add(Me.VScrollBar1)
Me.Controls.Add(Me.contour1)
Me.Name = "AjouterModifierSupprimé"
Me.Size = New System.Drawing.Size(400, 335)
Me.Panel1.ResumeLayout(False)
Me.ResumeLayout(False)
End Sub
#End Region
Private Sub rafraichir()
'#Zone " initiation des données "
Me.pnlPanel1.Controls.Clear()
Me.pnlPanel1.Size = New System.Drawing.Size(360, 0)
Me.Panel1.Size = New System.Drawing.Size(360, 315)
Me.VScrollBar1.Maximum = 0
Dim i As Integer, j As Integer
Dim chaine As String
Dim compteur As Integer = 0
Dim ordre As String
Dim tableauRequete(,) As Type.DeuxDonnées
ReDim tableauRequete(-1, 1)
Dim tableauRequetepos As Integer
Dim compteurRequete1 As Integer
Dim compteurRequete2 As Integer
compteurRequete1 = 0
compteurRequete2 = 0
'#End Zone
'#Zone " Condition "
If where <> "" And Mid(where, 1, Len("where ")) <> "where " Then
where = "where " & where
End If
'#End Zone
'#Zone " Order by "
Try
ordre = "order by " & Me.ordre(0)
For i = 1 To UBound(Me.ordre)
ordre += Me.ordre(i)
Next i
Catch
End Try
If ordre = Nothing And Mid(ordre, 1, Len("order by ")) <> "order by " Then
ordre = "order by " & ordre
End If
'#End Zone
'#Zone " évênement "
Dim AjoutEvent As EventHandler = New EventHandler(AddressOf AjoutClic)
Dim EnrEvent As EventHandler = New EventHandler(AddressOf EnrClic)
Dim SuppEvent As EventHandler = New EventHandler(AddressOf SuppClic)
Dim couleur As EventHandler = New EventHandler(AddressOf ChangerCouleur)
'#End Zone
'#Zone " Création de la requête "
chaine = "select "
For i = 0 To UBound(tableau)
chaine += "[" & tableau(i).nom & "],"
If tableau(i).type = "requete" Then
BaseDonnee.ouvertureRST("select " & tableau(i).requêteID & "," & tableau(i).requêtetexte & " from " & tableau(i).requêteTable & " order by " & tableau(i).requêtetexte)
compteurRequete2 = 0
While BaseDonnee.read
ReDim Preserve tableauRequete(compteurRequete1, compteurRequete2)
tableauRequete(compteurRequete1, compteurRequete2).un = BaseDonnee.item(0)
tableauRequete(compteurRequete1, compteurRequete2).deux = BaseDonnee.item(1)
compteurRequete2 += 1
End While
compteurRequete1 += 1
End If
Next i
chaine = Mid(chaine, 1, Len(chaine) - 1)
chaine += " from " & table & " " & where & " " & ordre
'#End Zone
BaseDonnee.ouvertureRST(chaine)
ReDim Button2(-1)
ReDim Button3(-1)
ReDim textbox(-1)
If condition.Ajouter Then
Me.Button4 = New DllBoutons.XpBouton
Me.Button4.BackColor = System.Drawing.SystemColors.ControlLightLight
Me.Button4.Boutonsonore = DllBoutons.XpBouton.Son.Muet
Me.Button4.DialogResult = System.Windows.Forms.DialogResult.None
Me.Button4.ImageAlign = DllBoutons.XpBouton.ImageAligns.Left
Me.Button4.Location = New System.Drawing.Point(0, compteur * 20)
Me.Button4.Name = "Button3"
Me.Button4.Size = New System.Drawing.Size(64, 20)
ReDim Me.Button4.Tag(1)
Me.Button4.Tag(0) = compteur
Me.Button4.Tag(1) = ""
Me.Button4.Text = "Ajouter"
AddHandler Button4.Click, AjoutEvent
Me.pnlPanel1.Controls.Add(Me.Button4)
tableauRequetepos = 0
'#Zone " Si on peut ajouter (première ligne) "
For i = 0 To UBound(tableau)
ReDim Preserve textbox(UBound(textbox) + 1)
Select Case LCase(tableau(i).type)
Case "chiffre"
Me.textbox(UBound(textbox)) = New System.Windows.Forms.NumericUpDown
Me.textbox(UBound(textbox)).Maximum = 999999
Me.textbox(UBound(textbox)).minimum = 0
Me.textbox(UBound(textbox)).value = 0
Case "date"
Me.textbox(UBound(textbox)) = New System.Windows.Forms.DateTimePicker
Me.textbox(UBound(textbox)).Format = 8
Me.textbox(UBound(textbox)).CustomFormat = "yyyy-MM-dd"
Case "boolean"
Me.textbox(UBound(textbox)) = New System.Windows.Forms.ComboBox
Me.textbox(UBound(textbox)).Items.AddRange(New Object() {"Oui", "Non"})
Case "requete"
Me.textbox(UBound(textbox)) = New System.Windows.Forms.ComboBox
For j = 0 To compteurRequete2 - 1
CType(Me.textbox(UBound(textbox)), ComboBox).Items.Add(tableauRequete(tableauRequetepos, j).deux)
Next j
CType(Me.textbox(UBound(textbox)), ComboBox).SelectedIndex = 0
tableauRequetepos += 1
Case "couleur"
Me.textbox(UBound(textbox)) = New Button
Me.textbox(UBound(textbox)).backcolor = Color.AliceBlue
AddHandler CType(textbox(UBound(textbox)), Button).Click, couleur
Case Else
Me.textbox(UBound(textbox)) = New TextBox
Me.textbox(UBound(textbox)).text = ""
End Select
If i = 0 Then
Me.textbox(UBound(textbox)).Location = New System.Drawing.Point(64, compteur * 20)
Else
Me.textbox(UBound(textbox)).Location = New System.Drawing.Point(Me.textbox(UBound(textbox) - 1).Left + Me.textbox(UBound(textbox) - 1).Width + 1, compteur * 20)
End If
Me.textbox(UBound(textbox)).Name = "TextBox"
Me.textbox(UBound(textbox)).Size = New System.Drawing.Size((pnlPanel1.Width - 64) * (tableau(i).pourcentage / 100) - 1, 20)
ReDim Me.textbox(UBound(textbox)).Tag(2)
Me.textbox(UBound(textbox)).Tag(0) = compteur
Me.textbox(UBound(textbox)).Tag(1) = tableau(i).pourcentage
Me.textbox(UBound(textbox)).Tag(2) = tableau(i).type
Me.pnlPanel1.Controls.Add(Me.textbox(UBound(textbox)))
Next i
'#End Zone
pnlPanel1.Height += 20 'agrandir le paneau d'affichage
'#Zone " gestion de la barre de progress Bar "
If Me.pnlPanel1.Height > Me.Panel1.Height Then
Me.VScrollBar1.Maximum += 1
End If
'#End Zone
compteur += 1
End If
While BaseDonnee.read
'#Zone " Item à afficher "
ReDim Preserve Button2(UBound(Button2) + 1)
Me.Button2(UBound(Button2)) = New DllBoutons.XpBouton
Me.Button2(UBound(Button2)).BackColor = System.Drawing.SystemColors.ControlLightLight
Me.Button2(UBound(Button2)).Boutonsonore = DllBoutons.XpBouton.Son.Muet
Me.Button2(UBound(Button2)).DialogResult = System.Windows.Forms.DialogResult.None
Me.Button2(UBound(Button2)).ImageAlign = DllBoutons.XpBouton.ImageAligns.Left
Me.Button2(UBound(Button2)).Location = New System.Drawing.Point(0, compteur * 20)
Me.Button2(UBound(Button2)).Name = "Button2"
Me.Button2(UBound(Button2)).Size = New System.Drawing.Size(30, 20)
ReDim Me.Button2(UBound(Button2)).Tag(1)
Me.Button2(UBound(Button2)).Tag(0) = compteur
Me.Button2(UBound(Button2)).Tag(1) = BaseDonnee.item(condition.cle)
Me.Button2(UBound(Button2)).Text = "Enr"
AddHandler Button2(UBound(Button2)).Click, EnrEvent
Me.pnlPanel1.Controls.Add(Me.Button2(UBound(Button2)))
ReDim Preserve Button3(UBound(Button3) + 1)
Me.Button3(UBound(Button3)) = New DllBoutons.XpBouton
Me.Button3(UBound(Button3)).BackColor = System.Drawing.SystemColors.ControlLightLight
Me.Button3(UBound(Button3)).Boutonsonore = DllBoutons.XpBouton.Son.Muet
Me.Button3(UBound(Button3)).DialogResult = System.Windows.Forms.DialogResult.None
Me.Button3(UBound(Button3)).ImageAlign = DllBoutons.XpBouton.ImageAligns.Left
Me.Button3(UBound(Button3)).Location = New System.Drawing.Point(30, compteur * 20)
Me.Button3(UBound(Button3)).Name = "Button3"
Me.Button3(UBound(Button3)).Size = New System.Drawing.Size(34, 20)
ReDim Me.Button3(UBound(Button3)).Tag(1)
Me.Button3(UBound(Button3)).Tag(0) = compteur
Me.Button3(UBound(Button3)).Tag(1) = BaseDonnee.item(condition.cle)
Me.Button3(UBound(Button3)).Text = "Supp"
AddHandler Button3(UBound(Button3)).Click, SuppEvent
Me.pnlPanel1.Controls.Add(Me.Button3(UBound(Button3)))
tableauRequetepos = 0
For i = 0 To UBound(tableau)
ReDim Preserve textbox(UBound(textbox) + 1)
Select Case LCase(tableau(i).type)
Case "chiffre"
Me.textbox(UBound(textbox)) = New System.Windows.Forms.NumericUpDown
Me.textbox(UBound(textbox)).Maximum = 999999
Me.textbox(UBound(textbox)).minimum = 0
Me.textbox(UBound(textbox)).value = BaseDonnee.item(i)
Case "date"
Me.textbox(UBound(textbox)) = New System.Windows.Forms.DateTimePicker
Me.textbox(UBound(textbox)).Format = 8
Me.textbox(UBound(textbox)).CustomFormat = "yyyy-MM-dd"
Me.textbox(UBound(textbox)).text = BaseDonnee.item(i)
Case "boolean"
Me.textbox(UBound(textbox)) = New System.Windows.Forms.ComboBox
Me.textbox(UBound(textbox)).Items.AddRange(New Object() {"Oui", "Non"})
Me.textbox(UBound(textbox)).text = IIf(BaseDonnee.item(i), "Oui", "Non")
Case "requete"
Me.textbox(UBound(textbox)) = New System.Windows.Forms.ComboBox
For j = 0 To compteurRequete2 - 1
CType(Me.textbox(UBound(textbox)), ComboBox).Items.Add(tableauRequete(tableauRequetepos, j).deux)
If BaseDonnee.item(i) = tableauRequete(tableauRequetepos, j).un Then
CType(Me.textbox(UBound(textbox)), ComboBox).SelectedIndex = j
End If
Next j
tableauRequetepos += 1
Case "couleur"
Me.textbox(UBound(textbox)) = New Button
Me.textbox(UBound(textbox)).backcolor = System.Drawing.ColorTranslator.FromWin32(BaseDonnee.item(i))
AddHandler CType(textbox(UBound(textbox)), Button).Click, couleur
Case Else
Me.textbox(UBound(textbox)) = New TextBox
Me.textbox(UBound(textbox)).text = BaseDonnee.item(i)
End Select
If i = 0 Then
Me.textbox(UBound(textbox)).Location = New System.Drawing.Point(64, compteur * 20)
Else
Me.textbox(UBound(textbox)).Location = New System.Drawing.Point(Me.textbox(UBound(textbox) - 1).Left + Me.textbox(UBound(textbox) - 1).Width + 1, compteur * 20)
End If
Me.textbox(UBound(textbox)).Name = "TextBox"
Me.textbox(UBound(textbox)).Size = New System.Drawing.Size((pnlPanel1.Width - 64) * (tableau(i).pourcentage / 100) - 1, 20)
ReDim Me.textbox(UBound(textbox)).Tag(2)
Me.textbox(UBound(textbox)).Tag(0) = compteur
Me.textbox(UBound(textbox)).Tag(1) = tableau(i).pourcentage
Me.textbox(UBound(textbox)).Tag(2) = tableau(i).type
If tableau(i).visible Then
Me.pnlPanel1.Controls.Add(Me.textbox(UBound(textbox)))
End If
Next i
'#End Zone
compteur += 1
pnlPanel1.Height += 20 'agrandir le paneau d'affichage
'#Zone " gestion de la barre de progress Bar "
If Me.pnlPanel1.Height > Me.Panel1.Height Then
Me.VScrollBar1.Maximum += 1
End If
'#End Zone
Me.Button2(UBound(Button2)).Enabled = condition.Modification
Me.Button3(UBound(Button3)).Enabled = condition.Suppression
End While
'#Zone " pareil, mais en bas pour l'ajout "
If condition.Ajouter Then
Me.Button4 = New DllBoutons.XpBouton
Me.Button4.BackColor = System.Drawing.SystemColors.ControlLightLight
Me.Button4.Boutonsonore = DllBoutons.XpBouton.Son.Muet
Me.Button4.DialogResult = System.Windows.Forms.DialogResult.None
Me.Button4.ImageAlign = DllBoutons.XpBouton.ImageAligns.Left
Me.Button4.Location = New System.Drawing.Point(0, compteur * 20)
Me.Button4.Name = "Button3"
Me.Button4.Size = New System.Drawing.Size(64, 20)
ReDim Me.Button4.Tag(0)
Me.Button4.Tag(0) = compteur
Me.Button4.Text = "Ajouter"
AddHandler Button4.Click, AjoutEvent
Me.pnlPanel1.Controls.Add(Me.Button4)
tableauRequetepos = 0
For i = 0 To UBound(tableau)
ReDim Preserve textbox(UBound(textbox) + 1)
Select Case LCase(tableau(i).type)
Case "chiffre"
Me.textbox(UBound(textbox)) = New System.Windows.Forms.NumericUpDown
Me.textbox(UBound(textbox)).Maximum = 999999
Me.textbox(UBound(textbox)).minimum = 0
Me.textbox(UBound(textbox)).value = 0
Case "date"
Me.textbox(UBound(textbox)) = New System.Windows.Forms.DateTimePicker
Me.textbox(UBound(textbox)).Format = 8
Me.textbox(UBound(textbox)).CustomFormat = "yyyy-MM-dd"
Case "boolean"
Me.textbox(UBound(textbox)) = New System.Windows.Forms.ComboBox
Me.textbox(UBound(textbox)).Items.AddRange(New Object() {"Oui", "Non"})
Case "requete"
Me.textbox(UBound(textbox)) = New System.Windows.Forms.ComboBox
For j = 0 To compteurRequete2 - 1
CType(Me.textbox(UBound(textbox)), ComboBox).Items.Add(tableauRequete(tableauRequetepos, j).deux)
Next j
CType(Me.textbox(UBound(textbox)), ComboBox).SelectedIndex = 0
tableauRequetepos += 1
Case "couleur"
Me.textbox(UBound(textbox)) = New Button
Me.textbox(UBound(textbox)).backcolor = Color.AliceBlue
AddHandler CType(textbox(UBound(textbox)), Button).Click, couleur
Case Else
Me.textbox(UBound(textbox)) = New TextBox
Me.textbox(UBound(textbox)).text = ""
End Select
If i = 0 Then
Me.textbox(UBound(textbox)).Location = New System.Drawing.Point(64, compteur * 20)
Else
Me.textbox(UBound(textbox)).Location = New System.Drawing.Point(Me.textbox(UBound(textbox) - 1).Left + Me.textbox(UBound(textbox) - 1).Width + 1, compteur * 20)
End If
Me.textbox(UBound(textbox)).Name = "TextBox"
Me.textbox(UBound(textbox)).Size = New System.Drawing.Size((pnlPanel1.Width - 64) * (tableau(i).pourcentage / 100) - 1, 20)
ReDim Me.textbox(UBound(textbox)).Tag(2)
Me.textbox(UBound(textbox)).Tag(0) = compteur
Me.textbox(UBound(textbox)).Tag(1) = tableau(i).pourcentage
Me.textbox(UBound(textbox)).Tag(2) = tableau(i).type
Me.pnlPanel1.Controls.Add(Me.textbox(UBound(textbox)))
Next i
pnlPanel1.Height += 20
If Me.pnlPanel1.Height > Me.Panel1.Height Then
Me.VScrollBar1.Maximum += 1
End If
compteur += 1
End If
'#End Zone
nb = UBound(tableau)
OnResize(Nothing)
'Add any initialization after the InitializeComponent() call
End Sub
#Region "permet de redimentionner le controle dépendant de la form"
Protected Overrides Sub OnResize(ByVal e As System.EventArgs)
Dim i As Integer
Me.VScrollBar1.Height = Me.Height - 24
Me.VScrollBar1.Left = Me.Width - Me.VScrollBar1.Width - 12
Me.Panel1.Height = Me.Height - 24
Me.Panel1.Width = Me.Width - Me.VScrollBar1.Width - 24
Me.pnlPanel1.Width = Me.Panel1.Width
contour1.Size = Me.Size
Try
i = Me.textbox(0).Tag(1)
Catch
Exit Sub
End Try
For i = 0 To UBound(Me.textbox)
Me.textbox(i).Width = (pnlPanel1.Width - 64) * (Me.textbox(i).Tag(1) / 100) - 1
If i Mod (nb + 1) = 0 Then
Me.textbox(i).Left = 64
Else
Me.textbox(i).Left = Me.textbox(i - 1).Left + Me.textbox(i - 1).Width
End If
Next i
If Me.pnlPanel1.Height > Me.Panel1.Height Then
VScrollBar1.Maximum = (Me.pnlPanel1.Height - Me.Panel1.Height) \ 20
Else
VScrollBar1.Maximum = 0
End If
End Sub
#End Region 'permet de redimentionner le controle dépendant de la form
#Region "permet de scroller"
Private Sub VScrollBar1_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles VScrollBar1.Scroll
Dim temp As Single
If VScrollBar1.Maximum <> 0 Then
pnlPanel1.Top = VScrollBar1.Value * -20
End If
End Sub
#End Region 'permet de scroller
Private Sub AjoutClic(ByVal sender As Object, ByVal e As System.EventArgs)
If ajouter(sender, e) Then
_Date.sleep(2)
rafraichir()
End If
End Sub
Private Sub EnrClic(ByVal sender As Object, ByVal e As System.EventArgs)
If ValiderLigne(CType(sender, DllBoutons.XpBouton).Tag(0)) Then
supprimer(sender, e)
ajouter(sender, e, CType(sender, DllBoutons.XpBouton).Tag(1))
_Date.sleep(2)
rafraichir()
End If
End Sub
Private Sub SuppClic(ByVal sender As Object, ByVal e As System.EventArgs)
supprimer(sender, e)
_Date.sleep(2)
rafraichir()
End Sub
Private Sub supprimer(ByVal sender As Object, ByVal e As System.EventArgs)
BaseDonnee.ouvertureRST("delete * from " & table & " where " & tableau(condition.cle).nom & " = " & SQL(CType(sender, DllBoutons.XpBouton).Tag(1), tableau(condition.cle).type))
End Sub
Private Sub ChangerCouleur(ByVal sender As Object, ByVal e As System.EventArgs)
Dim couleurDialog As System.Windows.Forms.ColorDialog = New System.Windows.Forms.ColorDialog
With couleurDialog
.Color = sender.BackColor
.SolidColorOnly = True
If .ShowDialog = DialogResult.OK Then
sender.BackColor = .Color
End If
End With
End Sub
Private Function ajouter(ByVal sender As Object, ByVal e As System.EventArgs, Optional ByVal ID As Integer = -1) As Boolean
If ValiderLigne(CType(sender, DllBoutons.XpBouton).Tag(0)) Then
Dim sql As String
Dim i As Integer
sql = "insert into " & Me.table & " values("
For i = 0 To nb
If tableau(i).visible Then
sql += Me.SQL(textbox(i + CType(sender, DllBoutons.XpBouton).Tag(0) * (nb + 1)), tableau(i)) & ","
Else
sql += Me.SQL(sender, i, ID) & ","
End If
Next i
sql = Mid(sql, 1, Len(sql) - 1) & ")"
BaseDonnee.ouvertureRST(sql)
Return True
Else
Return False
End If
End Function
Private Function ValiderLigne(ByVal numero As Integer) As Boolean
Dim i As Integer
For i = 0 To nb
If Me.tableau(i).visible Then
If Not Valider(textbox(i + numero * (nb + 1))) Then
MsgBox("opération annulé")
Return False
End If
End If
Next i
Return True
End Function
'#Zone " valider les résultats "
Private Function Valider(ByVal texte As Object) As Boolean
Dim temp As Boolean
Select Case LCase(texte.Tag(2))
Case "chiffre"
temp = ValiderChiffre(texte.value)
Case "double"
temp = ValiderDouble(texte.Text)
Case "date"
temp = ValiderDate(texte.Text)
Case "boolean"
temp = True
Case "requete"
temp = True
Case "couleur"
temp = True
Case "lettre"
temp = True
End Select
If LCase(texte.Tag(2)) <> "couleur" Then
If temp Then
texte.BackColor = Color.White
Else
texte.BackColor = Color.Red
End If
End If
Return temp
End Function
'#End Zone
Private Function ValiderChiffre(ByVal texte As String) As Boolean
Dim temp As Long
Try
temp = texte
If temp = texte Then
Return True
Else
MsgBox("Chiffre non Valide. Le chiffre doit-être un entier", MsgBoxStyle.Critical, "Erreur")
Return False
End If
Catch
MsgBox("Chiffre non Valide. Le chiffre doit-être un entier", MsgBoxStyle.Critical, "Erreur")
Return False
End Try
End Function
Private Function ValiderDouble(ByVal texte As String) As Boolean
Dim temp As Double
Try
temp = texte
Return True
Catch
MsgBox("Chiffre non Valide.", MsgBoxStyle.Critical, "Erreur")
Return False
End Try
End Function
Private Function ValiderDate(ByVal texte As String) As Boolean
Dim temp As Date
Try
temp = texte
Return True
Catch ex As Exception
MsgBox("Date non Valide. La date doit-être sous le format 'yyyy-mm-dd'" & vbCrLf & "ex: " & Format(Now, "yyyy-MM-dd"), MsgBoxStyle.Critical, "Erreur")
Return False
End Try
End Function
'#Zone " création des élément dans la requête SQL "
Private Function SQL(ByVal texte As Object, ByVal tableau As Type.AjoutModSupp) As String
Dim i As Integer
Select Case LCase(texte.Tag(2))
Case "chiffre"
Return texte.value
Case "double"
Return texte.Text
Case "boolean"
Return IIf(texte.text = "Oui", "true", "false")
Case "date"
Return "#" & texte.Text & "#"
Case "texte"
Return "'" & texte.Text & "'"
Case "lettre"
Return "'" & texte.Text & "'"
Case "boolean"
Return texte.text
Case "couleur"
Return System.Drawing.ColorTranslator.ToWin32(texte.backcolor)
Case "requete"
BaseDonnee.ouvertureRST("select " & tableau.requêteID & " from " & tableau.requêteTable & " order by " & tableau.requêtetexte)
For i = 0 To CType(texte, ComboBox).SelectedIndex
BaseDonnee.read()
Next i
Return BaseDonnee.item(0)
End Select
End Function
'#End Zone
#Region "création des élément dans la requête SQL"
Private Function SQL(ByVal texte As String, ByVal type As String) As String
Select Case LCase(type)
Case "chiffre"
Return texte
Case "chiffre"
Return texte
Case "boolean"
Return IIf(texte = "Oui", "true", "false")
Case "date"
Return "#" & texte & "#"
Case "texte"
Return "'" & texte & "'"
Case "texte"
Return "'" & texte & "'"
Case "boolean"
Return texte
End Select
End Function
#End Region 'création des élément dans la requête SQL
#Region "création des élément dans la requête SQL"
Private Function SQL(ByVal sender As Object, ByVal i As Integer, ByVal ID As Integer) As String
If i <> condition.cle And LCase(tableau(i).nom) = "id" Then
Select Case LCase(tableau(i).type)
Case "chiffre"
Return tableau(i).défaut
Case "double"
Return tableau(i).défaut
Case "boolean"
Return tableau(i).défaut
Case "date"
Return "#" & tableau(i).défaut & "#"
Case "texte"
Return "'" & tableau(i).défaut & "'"
Case "lettre"
Return "'" & tableau(i).défaut & "'"
Case "boolean"
Return tableau(i).défaut
Case "couleur"
Return System.Drawing.ColorTranslator.ToWin32(sender.BackColor)
End Select
ElseIf ID = -1 Then
BaseDonnee.ouvertureRST("select max(id) as maxid from " & table)
Return BaseDonnee.item("maxid") + 1
Else
Return ID
End If
End Function
#End Region 'création des élément dans la requête SQL
End Class
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.