Probleme remplissage bindingsource vb.net help

guillaumeIA Messages postés 12 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 3 septembre 2009 - 22 août 2009 à 16:23
guillaumeIA Messages postés 12 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 3 septembre 2009 - 24 août 2009 à 12:36
Bonjour,
Je suis actuellement coincé sur un programme basé sur une source de base de donnée microsoft que je ne retrouve plus (si vous avez le lien, je serai content de l'avoir)
explication du probleme
a chaque creation d'un nouveau device , les parametres sont affectés aux devices déja créés remplacant ainsi les parametres propres aux autres devices

voici la partie critique du code:
public Class Accueil

Public Shared PLCLineList As New Lines
End Class
////////////////////
Public Class Device_property
Public Structure Device

Dim Name As String
Dim Line As Integer
Dim Adresse As Integer
Dim param() As Integer ' les parametres peuvent changer en fonction du device
End Structure
//////////////
Shared Function Fill_DataSource(ByVal Device As Device_property.Device) 'remplir la datasource

Dim Num_line_created, Found, num_line

Num_line_created = Accueil.PLCLineList.Count
Found = False
num_line = 0

If Num_line_created > 0 Then

For i = 0 To (Num_line_created - 1)
If Accueil.PLCLineList(i).LineID = Device.Line Then
Found = True
num_line = i
i = Num_line_created
End If
Next i

If Not Found Then
Accueil.PLCLineList.Add(New Line(Device.Line, "Line " & Device.Line))
num_line = Accueil.PLCLineList.Count - 1
'num_line = Device.Line
End If
Else
Accueil.PLCLineList.Add(New Line(Device.Line, "Line " & Device.Line))

'num_line = Device.Line
End If


Accueil.PLCLineList(num_line).Device.Add(New Device(Device.Adresse, "Device" & Device.Adresse, Device.param)) 'Je PENSE QUE L'ERREUR VIENT DE LA!! '
DataForm.LinesBindingSource.DataSource = LinesManager.GetAllLines(Accueil.PLCLineList)

Return Nothing
End Function

//////////////////////////////////////////////////
' Copyright (c) Microsoft Corporation. All rights reserved.
''' <summary>
''' A single Device
''' </summary>
Public Class Device

Public Sub New()
End Sub

''' <summary>
''' Creates a new order
''' </summary>
''' The identifier for this order


''' The customer who placed this order


''' The date the order was placed


Public Sub New(ByVal DeviceID As Integer, ByVal DeviceName As String, ByVal Parameter As Array)
DeviceIDValue = DeviceID
DeviceNameValue = DeviceName
ParameterValue = Parameter
End Sub

Private DeviceIDValue As String
''' <summary>
''' Identifier for the Device
''' </summary>
Public ReadOnly Property DeviceID() As Integer
Get
Return DeviceIDValue
End Get
End Property

Private DeviceNameValue As String
''' <summary>
''' The Line where placed this Device
''' </summary>
Public Property DeviceNameID() As String
Get
Return DeviceNameValue
End Get
Set(ByVal Value As String)
DeviceNameValue = Value
End Set
End Property

Public Shared ParameterValue As Array
''' <summary>
''' The parameter of the device
''' </summary>
Public Property Parameter() As Array
Get
Return ParameterValue
End Get
Set(ByVal Value As Array)
ParameterValue = Value
End Set
End Property
End Class

''' <summary>
''' A collection of Device
''' </summary>
Public Class Devices
Inherits System.ComponentModel.BindingList(Of Device)
End Class
///////////////////////////////////////
' Copyright (c) Microsoft Corporation. All rights reserved.
''' <summary>
''' A single customer
''' </summary>
Public Class Line

''' <summary>
''' Creates a new Line
''' </summary>
''' The ID of the line


''' The name of the line



Public Sub New(ByVal LineId As Integer, ByVal LineName As String)
Initialize()
LineIDValue = LineId
LineNameValue = LineName

End Sub

Private Sub Initialize()
DevicesValue = New Devices()
End Sub

Private LineIDValue As Integer
''' <summary>
''' Identifier for the Line
''' </summary>
Public Property LineID() As Integer
Get
Return LineIDValue
End Get
Set(ByVal value As Integer)
LineIDValue = value
End Set
End Property

Private LineNameValue As String
''' <summary>
''' Name for the Line
''' </summary>
Public Property LineName() As String
Get
Return LineNameValue
End Get
Set(ByVal value As String)
LineNameValue = value
End Set
End Property


Public Shared WithEvents DevicesValue As Devices
''' <summary>
''' The Devices for this Line
''' </summary>
Public Property Device() As Devices
Get
Return DevicesValue
End Get
Set(ByVal value As Devices)
DevicesValue = value
End Set
End Property

Public Shared Sub DevicesValue_AddingNew(ByVal sender As Object, ByVal e As System.ComponentModel.AddingNewEventArgs) Handles DevicesValue.AddingNew
e.NewObject = New Device(999, "test", Accueil.TParam)
End Sub
End Class

''' <summary>
''' A collection of Lines
''' </summary>
Public Class Lines
Inherits System.ComponentModel.BindingList(Of Line)
End Class
////////////////////////////////////////
Public Class LinesManager
Public Shared Function GetAllLines(ByVal GlobalList As Lines) As Lines
Return GlobalList
End Function

Public Shared Function GetNewLine() As Line
Return New Line("LineID", "LineName")
End Function

Public Shared Function GetNewDevice() As Device
Return New Device(999, "DeviceName", Accueil.TParam)
End Function

End Class
///////
' Copyright (c) Microsoft Corporation. All rights reserved.

Public Class DataForm

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If Not Accueil.PLCLineList.Count > 0 Then
Dim LineList As New Lines()
LineList.Add(New Line(0, "None"))
LineList(0).Device.Add(New Device(0, "None", Accueil.TParam))
Me.LinesBindingSource.DataSource = LinesManager.GetAllLines(LineList)
Else
Me.LinesBindingSource.DataSource = LinesManager.GetAllLines(Accueil.PLCLineList)

End If
End Sub

' Private Sub LinesBindingSource_AddingNew(ByVal sender As System.Object, ByVal e As System.ComponentModel.AddingNewEventArgs) Handles LinesBindingSource.AddingNew
' e.NewObject = LinesManager.GetNewLine()
'End Sub

Private Sub DevicesBindingSource_AddingNew(ByVal sender As System.Object, ByVal e As System.ComponentModel.AddingNewEventArgs) Handles DeviceBindingSource.AddingNew
e.NewObject = LinesManager.GetNewDevice()
End Sub

End Class
///////////////////////

Si vous pouviez me debloquer cela serait magnifique
pour de plus ample information, je vous repondrai dans la mesure du possible.

Cordialement

3 réponses

guillaumeIA Messages postés 12 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 3 septembre 2009
22 août 2009 à 17:55
Bonjour,
Je suis actuellement coincé sur un programme basé sur une source de base de donnée microsoft que je ne retrouve plus (si vous avez le lien, je serai content de l'avoir)
explication du probleme
a chaque creation d'un nouveau device , les parametres sont affectés aux devices déja créés remplacant ainsi les parametres propres aux autres devices

voici la partie critique du code:
public Class Accueil

Public Shared PLCLineList As New Lines
End Class

////////////////////
Public Class Device_property
Public Structure Device

Dim Name As String
Dim Line As Integer
Dim Adresse As Integer
Dim param() As Integer ' les parametres peuvent changer en fonction du device
End Structure

//////////////
Shared Function Fill_DataSource(ByVal Device As Device_property.Device) 'remplir la datasource

Dim Num_line_created, Found, num_line

Num_line_created = Accueil.PLCLineList.Count
Found = False
num_line = 0

If Num_line_created > 0 Then

For i = 0 To (Num_line_created - 1)
If Accueil.PLCLineList(i).LineID = Device.Line Then
Found = True
num_line = i
i = Num_line_created
End If
Next i

If Not Found Then
Accueil.PLCLineList.Add(New Line(Device.Line, "Line " & Device.Line))
num_line = Accueil.PLCLineList.Count - 1
'num_line = Device.Line
End If
Else
Accueil.PLCLineList.Add(New Line(Device.Line, "Line " & Device.Line))

'num_line = Device.Line
End If


Accueil.PLCLineList(num_line).Device.Add(New Device(Device.Adresse, "Device" & Device.Adresse, Device.param)) 'Je PENSE QUE L'ERREUR VIENT DE LA!! '
DataForm.LinesBindingSource.DataSource = LinesManager.GetAllLines(Accueil.PLCLineList)

Return Nothing
End Function


//////////////////////////////////////////////////
' Copyright (c) Microsoft Corporation. All rights reserved.
''' <summary>
''' A single Device
''' </summary>
Public Class Device

Public Sub New()
End Sub

''' <summary>
''' Creates a new order
''' </summary>
''' The identifier for this order


''' The customer who placed this order


''' The date the order was placed


Public Sub New(ByVal DeviceID As Integer, ByVal DeviceName As String, ByVal Parameter As Array)
DeviceIDValue = DeviceID
DeviceNameValue = DeviceName
ParameterValue = Parameter
End Sub

Private DeviceIDValue As String
''' <summary>
''' Identifier for the Device
''' </summary>
Public ReadOnly Property DeviceID() As Integer
Get
Return DeviceIDValue
End Get
End Property

Private DeviceNameValue As String
''' <summary>
''' The Line where placed this Device
''' </summary>
Public Property DeviceNameID() As String
Get
Return DeviceNameValue
End Get
Set(ByVal Value As String)
DeviceNameValue = Value
End Set
End Property

Public Shared ParameterValue As Array
''' <summary>
''' The parameter of the device
''' </summary>
Public Property Parameter() As Array
Get
Return ParameterValue
End Get
Set(ByVal Value As Array)
ParameterValue = Value
End Set
End Property
End Class

''' <summary>
''' A collection of Device
''' </summary>
Public Class Devices
Inherits System.ComponentModel.BindingList(Of Device)
End Class

///////////////////////////////////////
' Copyright (c) Microsoft Corporation. All rights reserved.
''' <summary>
''' A single customer
''' </summary>
Public Class Line

''' <summary>
''' Creates a new Line
''' </summary>
''' The ID of the line


''' The name of the line



Public Sub New(ByVal LineId As Integer, ByVal LineName As String)
Initialize()
LineIDValue = LineId
LineNameValue = LineName

End Sub

Private Sub Initialize()
DevicesValue = New Devices()
End Sub

Private LineIDValue As Integer
''' <summary>
''' Identifier for the Line
''' </summary>
Public Property LineID() As Integer
Get
Return LineIDValue
End Get
Set(ByVal value As Integer)
LineIDValue = value
End Set
End Property

Private LineNameValue As String
''' <summary>
''' Name for the Line
''' </summary>
Public Property LineName() As String
Get
Return LineNameValue
End Get
Set(ByVal value As String)
LineNameValue = value
End Set
End Property


Public Shared WithEvents DevicesValue As Devices
''' <summary>
''' The Devices for this Line
''' </summary>
Public Property Device() As Devices
Get
Return DevicesValue
End Get
Set(ByVal value As Devices)
DevicesValue = value
End Set
End Property

Public Shared Sub DevicesValue_AddingNew(ByVal sender As Object, ByVal e As System.ComponentModel.AddingNewEventArgs) Handles DevicesValue.AddingNew
e.NewObject = New Device(999, "test", Accueil.TParam)
End Sub
End Class

''' <summary>
''' A collection of Lines
''' </summary>
Public Class Lines
Inherits System.ComponentModel.BindingList(Of Line)
End Class

////////////////////////////////////////
Public Class LinesManager
Public Shared Function GetAllLines(ByVal GlobalList As Lines) As Lines
Return GlobalList
End Function

Public Shared Function GetNewLine() As Line
Return New Line("LineID", "LineName")
End Function

Public Shared Function GetNewDevice() As Device
Return New Device(999, "DeviceName", Accueil.TParam)
End Function

End Class

///////
' Copyright (c) Microsoft Corporation. All rights reserved.

Public Class DataForm

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If Not Accueil.PLCLineList.Count > 0 Then
Dim LineList As New Lines()
LineList.Add(New Line(0, "None"))
LineList(0).Device.Add(New Device(0, "None", Accueil.TParam))
Me.LinesBindingSource.DataSource = LinesManager.GetAllLines(LineList)
Else
Me.LinesBindingSource.DataSource = LinesManager.GetAllLines(Accueil.PLCLineList)

End If
End Sub

' Private Sub LinesBindingSource_AddingNew(ByVal sender As System.Object, ByVal e As System.ComponentModel.AddingNewEventArgs) Handles LinesBindingSource.AddingNew
' e.NewObject = LinesManager.GetNewLine()
'End Sub

Private Sub DevicesBindingSource_AddingNew(ByVal sender As System.Object, ByVal e As System.ComponentModel.AddingNewEventArgs) Handles DeviceBindingSource.AddingNew
e.NewObject = LinesManager.GetNewDevice()
End Sub

End Class

///////////////////////

Si vous pouviez me debloquer cela serait magnifique
pour de plus ample information, je vous repondrai dans la mesure du possible.

Cordialement
0
guillaumeIA Messages postés 12 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 3 septembre 2009
22 août 2009 à 18:16
je développe l'explication du probleme :


résumé du problème:
a chaque création d'un nouveau device , les noms et paramètres sont affectés aux devices déjà créés remplaçant ainsi les paramètres propres aux autres devices

explication du problème:
en gros un device est une structure composé d'une ligne (integer), d'une adresse (integer)... quand un device est créé il contient donc une line et une adresse et des paramètres propres a celui ci .
si la database est vide, alors la ligne est créé et le device est ensuite ajouté celle ci et le device apparait alors dans la ligne avec ses paramètres. quand un deuxième device est créé, exemple device1 avec ces parametres1 celui ci est ajouté a la base de donne plclinelist mais toutes ces caractéristique sont copié sur le premier device créé

assez difficile de l'expliquer

un peu d'aide svp

line0 -> device0 -> deviceid 0
param[19]
device1 -> deviceid 1
param[19]
line1-> device0 -> deviceid 0
param[19]
device2 -> deviceid 2
param[19]

'(correspondant au device 0 de la ligne 1 different du device 0 de la ligne 0 et chaque parametre de device est different
voila ce que cela devrait faire
mais voila ce que mon code fait:

line0 -> device2 -> deviceid 2
param[19]
device2 -> deviceid 2
param[19]
line1-> device2 -> deviceid 2
param[19]
device2 -> deviceid 2
param[19] si celui ci est le dernier créé!!
0
guillaumeIA Messages postés 12 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 3 septembre 2009
24 août 2009 à 12:36
BUG MIS A JOUR

Bonjour,
Je suis actuellement coincé
résumé du problème:
a chaque création d'un nouveau device , les paramètres sont affectés aux devices déjà créés remplaçant ainsi les paramètres propres aux autres devices


voici la partie critique du code:
public Class Accueil
  
    Public Shared PLCLineList As New Lines
End Class

////////////////////
Public Class Device_property
        Public Structure Device
       
        Dim Name As String
        Dim Line As Integer
        Dim Adresse As Integer
        Dim param() As Integer  ' les parametres peuvent changer en fonction du device
    End Structure

//////////////
Shared Function Fill_DataSource(ByVal Device As Device_property.Device) 'remplir la datasource

        Dim Num_line_created, Found, num_line

        Num_line_created = Accueil.PLCLineList.Count
        Found = False
        num_line = 0

        If Num_line_created > 0 Then

            For i = 0 To (Num_line_created - 1)
                If Accueil.PLCLineList(i).LineID = Device.Line Then
                    Found = True
                    num_line = i
                    i = Num_line_created
                End If
            Next i

            If Not Found Then
                Accueil.PLCLineList.Add(New Line(Device.Line, "Line " & Device.Line))
                num_line = Accueil.PLCLineList.Count - 1
             
            End If
        Else
            Accueil.PLCLineList.Add(New Line(Device.Line, "Line " & Device.Line))
         End If
        Accueil.PLCLineList(num_line).Device.Add(New Device(num_line, Device.Adresse, "Device" & Device.Adresse, Device.param))
         
        Return Nothing
    End Function

///////////////////////
Public Class Line

    ''' <summary>
    ''' Creates a new Line
    ''' </summary>
    ''' The ID of the line


    ''' The name of the line



    Public Sub New(ByVal LineId As Integer, ByVal LineName As String)
        Initialize()
        LineIDValue = LineId
        LineNameValue = LineName

    End Sub

    Private Sub Initialize()
        DevicesValue = New Devices()
    End Sub

    Private LineIDValue As String
    ''' <summary>
    ''' Identifier for the Line
    ''' </summary>
    Public Property LineID() As String
        Get
            Return LineIDValue
        End Get
        Set(ByVal value As String)
            LineIDValue = value
        End Set
    End Property

    Private LineNameValue As String
    ''' <summary>
    ''' Name for the Line
    ''' </summary>
    Public Property LineName() As String
        Get
            Return LineNameValue
        End Get
        Set(ByVal value As String)
            LineNameValue = value
        End Set
    End Property

  
    Private WithEvents DevicesValue As Devices
    ''' <summary>
    ''' The Devices for this Line
    ''' </summary>
    Public Property Device() As Devices
        Get
            Return DevicesValue
        End Get
        Set(ByVal value As Devices)
            DevicesValue = value
        End Set
    End Property

End Class

''' <summary>
''' A collection of Lines
''' </summary>
Public Class Lines
    Inherits System.ComponentModel.BindingList(Of Line)
End Class

////////////////////
Public Class Device

    'Public Sub New()
    'End Sub

    ''' <summary>
    ''' Creates a new device
    ''' </summary>
    ''' The identifier for this device


    ''' The line  who placed this device


    ''' The name of the device


    ''' The param of the device was placed


    Public Sub New(ByVal lineid As Integer, ByVal DeviceID As Integer, ByVal DeviceName As String, ByVal Parameter As Array)
        lineIDValue = lineid
        DeviceIDValue = DeviceID
        DeviceNameValue = DeviceName

        ParameterValue = Parameter
    End Sub
    Private lineIDValue As Integer
    ''' <summary>
    ''' Identifier for the order
    ''' </summary>
    Public ReadOnly Property lineID() As Integer
        Get
            Return lineIDValue
        End Get
    End Property
    Private DeviceIDValue As Integer
    ''' <summary>
    ''' Identifier for the Device
    ''' </summary>
    Public ReadOnly Property DeviceID() As Integer
        Get
            Return DeviceIDValue
        End Get
    End Property

    Private DeviceNameValue As String
    ''' <summary>
    ''' The Line where placed this Device
    ''' </summary>
    Public Property DeviceNameID() As String
        Get
            Return DeviceNameValue
        End Get
        Set(ByVal Value As String)
            DeviceNameValue = Value
        End Set
    End Property

    Private WithEvents ParameterValue As Array
    ''' <summary>
    ''' The parameter of the device
    ''' </summary>
    Public Property Parameter() As Array
        Get
            Return ParameterValue
        End Get
        Set(ByVal Value As Array)
            ParameterValue = Value
        End Set
    End Property

End Class

''' <summary>
''' A collection of Device
''' </summary>
Public Class Devices
    Inherits System.ComponentModel.BindingList(Of Device)
End Class

/////////////////////
Si vous pouviez me debloquer cela serait magnifique
pour de plus ample information, je vous repondrai dans la mesure du possible.

Cordialement
0
Rejoignez-nous