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 83 84 85 86
|
Imports System.Data.SqlClient
Public Class MonEvenement
Public Property LaDate As DateTime
Public Property Nature As String
Public Property Decision As String
Public Property Operateur As String
Public Sub New()
End Sub
Public Sub New(ladate As DateTime, nature As String, decision As String, operateur As String)
Me.LaDate = ladate
Me.Nature = nature
Me.Decision = decision
Me.Operateur = operateur
End Sub
End Class
Public Class Form1
Private Sub VisualiserHiver_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Dim Rqt, Rqt2, Rqt3 As String
Dim listOfEvent As List(Of MonEvenement)
'**************************
'section à commenter si on laisse le DGV créer les colonnes
'**************************
dgvMainHiver.AutoGenerateColumns = False
Dim index As Integer
index = dgvMainHiver.Columns.Add("dgvcLaDate", "Date")
dgvMainHiver.Columns(index).DataPropertyName = "LaDate"
index = dgvMainHiver.Columns.Add("dgvcLibelle", "Libellé")
dgvMainHiver.Columns(index).DataPropertyName = "Libelle"
index = dgvMainHiver.Columns.Add("dgvcNature", "Nature de l'évènement")
dgvMainHiver.Columns(index).DataPropertyName = "Nature"
index = dgvMainHiver.Columns.Add("dgvcDecision", "Décision")
dgvMainHiver.Columns(index).DataPropertyName = "Decision"
index = dgvMainHiver.Columns.Add("dgvcOperator", "Opérateur")
dgvMainHiver.Columns(index).DataPropertyName = "Operateur"
Try
' Requête paramétrée
'ici, il ne faut faire qu'une seule de sélection qui fait une jointure sur les tables pour avoir les informations que l'on a besoin
'avec tes requêtes, tu récupères des données de la table DECISION mais qui ne sont pas forcément en rapport avec l'évènement que tu affiches sur la même ligne (pareil pour OPERATEUR)
'je ne peux la produire vu que je ne connais pas le schéma de ta DB mais ce serait quelque chose du genre (en mode sql server).
'je suis disposé à t'aider à écrire cette requête si nécessaire (et je suis sûr de ne pas être le seul ^^)
Rqt = "SELECT EVE.DTE_EVENT AS 'DATE', EVE.LIBELLE AS 'NATURE', DEC.LIBELLE AS 'DECISION', OPE.LIBELLE AS 'OPERATEUR' "
Rqt &= "FROM EVENEMENT EVE INNER JOIN DECISION DEC ON [LE CRITERE QUI VA BIEN] INNER JOIN OPERATEUR OPE ON [LE CRITERE QUI VA BIEN] "
Rqt &= "ORDER BY TO_CHAR(DTE_EVENT,'DD/MM/YYYY') ASC"
' On crée une commande Oracle
'J'ai fait le code avec les classes sql car ne j'ai pas oracle mais c'est strictement identique à priori. Juste remplacer sql par oracle
Using cnx As New SqlConnection
cnx.ConnectionString = GetConnexionString()
Using cmd As SqlCommand = cnx.CreateCommand
cmd.CommandType = CommandType.Text
cmd.CommandText = Rqt
cnx.Open()
Using reader As SqlDataReader = cmd.ExecuteReader
If reader.HasRows Then
listOfEvent = New List(Of MonEvenement)
While reader.Read
listOfEvent.Add(New MonEvenement(CDate(reader.Item("DATE")),
CStr(reader.Item("NATURE")),
CStr(reader.Item("DECISION")),
CStr(reader.Item("OPERATEUR"))))
End While
End If
End Using
End Using
End Using
If Not IsNothing(listOfEvent) Then
dgvMainHiver.DataSource = listOfEvent
End If
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
End Sub
End Class |
Partager