none
Charger, modifier et mettre à jour une base de données via des contrôles RRS feed

  • Discussion générale

  • Bonjour,

    Je souhaite développer une application WPF avec VB Express 2010 faisant appel à une base de données MS Access.

    Après quelques essais, j'ai réussi à lier les champs de ma base de données à mes contrôles sur mon formulaire (MainWindow  WPF).

    Désormais, je souhaiterais pouvoir éditer mes enregistrements dans mes contrôles puis enregistrer les modifications dans ma base de données pour la mettre à jour.

    Pour le moment j'ai trouvé comment rendre un contrôle éditable mais malheureusement lorsque je change la valeur du contrôle, toutes valeurs des autres contrôles s'effacent.

    J'ai lu quelques articles au sujet des groupes de données et j'ai compris qu'il s'agissait d'une mise en cache d'une table pour pouvoir effectuer des modifications. Malheureusement, je suis pas sûr d'avoir bien compris et j'ai encore moins trouver d'exemple expliquant leur mise en œuvre.

    J'espère que vous pourrez m'aider à y voir plus clair et me transmettre des briques de code pour mon développement.

    • Type modifié Aurel Bera mardi 5 mars 2013 07:37 Discussion
    mardi 26 février 2013 22:42

Toutes les réponses

  • Bonjour,

    Est-il possible que vous puissiez nous montrer le code C# et XAML qui pose problème ?

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    mercredi 27 février 2013 06:57
    Modérateur
  • Vous trouverez ci-joint le code demandé qui correspond à une fenêtre composé de :

    - 2 Combobox qui reçoivent des données d'une base de données

    - 1 Boutton qui n'a pas d'action pour le moment mais qui servira à enregistrer les modifications effectuées dans les Combobox dans la base de données.

    MainWindow.xaml:

    <Window x:Class="MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525" xmlns:my="clr-namespace:WpfApplication1">
        <Window.Resources>
            <my:DataSet1 x:Key="DataSet1" />
            <CollectionViewSource x:Key="PeopleViewSource" Source="{Binding Path=People, Source={StaticResource DataSet1}}" />
        </Window.Resources>
        <Grid DataContext="{StaticResource PeopleViewSource}">
            <ComboBox Height="23" HorizontalAlignment="Left" Margin="159,79,0,0" Name="ComboBox2" VerticalAlignment="Top" Width="120" DisplayMemberPath="Nom" ItemsSource="{Binding Source={StaticResource PeopleViewSource}, Mode=OneTime}" IsEditable="True" />
            <ComboBox Height="23" HorizontalAlignment="Left" Margin="159,123,0,0" Name="ComboBox3" VerticalAlignment="Top" Width="120" DisplayMemberPath="Age" ItemsSource="{Binding Source={StaticResource PeopleViewSource}, Mode=OneTime}" IsEditable="True" />
            <Button Content="Button" Height="32" HorizontalAlignment="Left" Margin="144,193,0,0" Name="Button1" VerticalAlignment="Top" Width="162" />
        </Grid>
              
    </Window>
    

    MainWindow.xaml.vb:

    Class MainWindow
    
        Public Sub New()
    
            ' This call is required by the designer.
            InitializeComponent()
    
            ' Add any initialization after the InitializeComponent() call.
    
        End Sub
    
        Private Sub Window_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
    
            Dim DataSet1 As WpfApplication1.DataSet1 = CType(Me.FindResource("DataSet1"), WpfApplication1.DataSet1)
            'Load data into the table People. You can modify this code as needed.
            Dim DataSet1PeopleTableAdapter As WpfApplication1.DataSet1TableAdapters.PeopleTableAdapter = New WpfApplication1.DataSet1TableAdapters.PeopleTableAdapter()
            DataSet1PeopleTableAdapter.Fill(DataSet1.People)
            Dim PeopleViewSource As System.Windows.Data.CollectionViewSource = CType(Me.FindResource("PeopleViewSource"), System.Windows.Data.CollectionViewSource)
            PeopleViewSource.View.MoveCurrentToFirst()
        End Sub
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click
    
            
        End Sub
    End Class
    Merci pour votre aide.

    mercredi 27 février 2013 07:24
  • Bonjour,

    Pour le moment j'ai trouvé comment rendre un contrôle éditable mais malheureusement lorsque je change la valeur du contrôle, toutes valeurs des autres contrôles s'effacent.

    Quelle contrôle "vous changez" pour que la valeur des autres contrôles soient effacés ?

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    mercredi 27 février 2013 07:29
    Modérateur
  • J'ai uniquement modifié la valeur d'un ComboBox qui affiche une liste de nom extrait d'une table.

    En faisant cette, opération l'autre ComboBox n'affiche plus de valeur.

    mercredi 27 février 2013 07:37
  • Bonjour,

    J'ai du mal à reproduire votre problème.

    Est-il possible que vous puissiez nous soumettre les source de votre projet au format zip ? Déposez le sur votre compte Skydrive (ou équivalent) et donnez nous un lien pour pouvoir y accéder.

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    mercredi 27 février 2013 08:00
    Modérateur
  • Vous trouverez ci-joint le fichier zip contenant le projet et la base données.

    Projet.zip

    mercredi 27 février 2013 08:53
  • Bonjour

    N'est pas très claire ce que vous voulez faire, mais, a une première vue, le deuxième ComboBox doit être un textBox. Quand vous changez la valeur dans le premier Combo vous pouvez modifier la valeur du cham Age dans le TextBox pour la valeur sélectionnée dans le premier ComboBox:

     

    <TextBoxHorizontalAlignment="Left"Height="23"Margin="159,131,0,0"TextWrapping="Wrap"  VerticalAlignment="Top"Width="120"RenderTransformOrigin="0.644,0.398"  Text="{BindingPath=Age }" />

    Ou si vous voulez avoir toujours un ComboBox,  vous devez avoir une autre DataSource, qui contient les valeurs possibles pour Age.

    Cordialement,


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.


    • Modifié Aurel Bera jeudi 28 février 2013 11:07
    jeudi 28 février 2013 10:59
  • Bonjour,

    Est-ce que vous avez testé les solutions proposées ? Merci de partager avec nous les résultats, afin que d'autres personnes avec le même problème puissent profiter de cette solution.

    Cordialement,

    Aurel


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    vendredi 1 mars 2013 15:23
  • Bonjour,

    Nous changeons le type de votre question à « Discussion générale ». Si vous avez plus de temps pour réexaminer la question et fournir plus d'informations, n'hésitez pas à modifier le type du thread à « Question ». Si le problème est résolu, s’il vous plaît partagez la solution avec nous afin que la réponse puisse être trouvée et utilisée par d'autres membres de la communauté ayant des questions similaires.

    Merci !

    Cordialement,


    Aurel BERA, Microsoft
    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    mardi 5 mars 2013 07:38