jeudi 13 juin 2013

Ajouter, modifier et supprimer des enregistrements

Une partie d'un tutoriel en cours. Ce cours fait partie d'un tutoriel en cours. La première partie est ici:

Codage vos propres projets de base de données VB Net.
Dans la dernière section , vous avez appris à se déplacer à travers les enregistrements de votre DataSet et comment afficher les enregistrements en champs de saisie sur votre formulaire. Dans cette leçon, nous allons voir comment ajouter de nouveaux dossiers, la façon de les supprimer et comment mettre à jour un des dossiers.
Avant de commencer le codage de ces nouveaux boutons, il est important de comprendre que le DataSet est déconnecté de la base de données. Ce que cela signifie, c'est que si vous ajoutez un nouveau record, vous n'êtes pas ce ajoutant à la base de données: vous l'ajouter à votre DataSet! De même, si vous mettez à jour ou suppression, vous le faites pour le DataSet et non à la base de données. Une fois que vous avez effectué toutes vos modifications, vous vous engagez alors ces changements à la base de données. Vous faites cela en exécutant une commande séparée. Mais nous allons voir comment tout cela fonctionne.
Vous aurez besoin d'ajouter un peu plus de boutons à votre formulaire - cinq d'entre eux. Modifiez les propriétés de nom de la nouvelle Boutons de ce qui suit:
btnAddNew
btnCommit
btnUpdate
btnDelete
btnClear
Modifiez les propriétés de texte des boutons pour ajouter un nouvel enregistrement, valider les modifications, mises à jour enregistrement, Supprimer l'enregistrement, et Effacer / Annuler. Votre formulaire peut ressembler à ceci:
Nous allons commencer avec le bouton Mise à jour de l'enregistrement

Mise à jour d'un enregistrement

Pour faire référence à une colonne particulière (point) dans une rangée du DataSet, le code est le suivant:
ds.Tables ("AddressBook"). Lignes (2). ouvrage apparaît (1)
Qui renverra tout ce qui est au point 1 sur la ligne 2.
Ainsi que le retour d'une valeur, vous pouvez également définir une valeur. Vous le faites comme ceci:
ds.Tables ("AddressBook"). Lignes (2). ouvrage apparaît (1) = "Jane"
Maintenant, Point 1 Row 2 contiendra le texte "Jane". Ce ne sera pas, cependant, l'effet de la base de données! Les changements seront simplement fait pour le DataSet. Pour illustrer cela, ajoutez le code suivant à votre btnUpdate:
ds.Tables ("AddressBook"). Lignes (inc). Item (1) = txtFirstName.Text
ds.Tables ("AddressBook"). Lignes (inc). ouvrage apparaît (2) = txtSurname.Text
MsgBox ("données mises à jour")
Exécutez votre programme et cliquez sur le bouton Enregistrement suivant pour passer au premier enregistrement. "John" doit être affiché dans votre première zone de texte, et "Smith" dans la deuxième zone de texte. Cliquez dans les zones de texte et changer "John" à "Joan" et "Smith" à "Smithy". (Sans les guillemets). Maintenant, cliquez sur le bouton de mise à jour de l'enregistrement. Passer à l'enregistrement suivant en cliquant sur ​​votre bouton Suivant de l'enregistrement, puis revenir au premier enregistrement. Vous devriez voir que le premier enregistrement est maintenant "Joan Smithy".
Fermez votre programme, puis exécutez-le à nouveau. Cliquez sur le bouton Enregistrement suivant pour passer au premier enregistrement. Il sera toujours "John Smith". Les données mise à jour a été perdu! Donc, ici, encore une fois, c'est pourquoi:
"Des modifications sont apportées au DataSet et non à la base de données"
Pour mettre à jour la base de données, vous avez besoin d'un peu de code supplémentaire. Modifier votre code pour cette (les nouvelles lignes sont en gras, texte en rouge):
Dim cb As New OleDb.OleDbCommandBuilder (da)
ds.Tables ("AddressBook"). Lignes (inc). Item (1) = txtFirstName.Text
ds.Tables ("AddressBook"). Lignes (inc). ouvrage apparaît (2) = txtSurname.Text
da.Update (ds, "AddressBook")
MsgBox ("données mises à jour")
La première nouvelle ligne est la suivante:
Dim cb As New OleDb.OleDbCommandBuilder (da)
Pour mettre à jour la base de données elle-même, vous avez besoin de quelque chose appelé un générateur de commandes. Le générateur de commandes va construire une chaîne SQL pour vous. Entre parenthèses, vous tapez le nom de votre adaptateur de données, da dans notre cas. Le constructeur de la commande est ensuite stockée dans une variable, que nous avons appelé cb.
La seconde nouvelle ligne est l'endroit où l'action est le suivant:
da.Update (ds, "AddressBook")
La variable da tient notre adaptateur de données. Une des méthodes de l'adaptateur de données est mise à jour. Entre les parenthèses, vous devez connaître le nom de votre DataSet (ds, pour nous). La partie "AddressBook" est facultative. C'est ce que nous avons appelé notre DataSet, et est là pour éviter toute confusion.
Mais l'adaptateur de données prendra alors contact avec la base de données. Parce que nous avons un générateur de commandes, l'adaptateur de données peut ensuite mettre à jour votre base de données avec les valeurs du DataSet.
Sans le Générateur de commande, cependant, l'adaptateur de données ne peut pas faire son travail. Essayez ceci. Commentez la ligne de générateur de commandes (mettre une apostrophe avant le "D" de Dim). Exécutez votre programme nouveau, et puis essayer de mettre à jour un enregistrement. Vous obtenez ce message d'erreur:
Erreur InvalidOperationException
L'erreur c'est parce que vous n'avez pas un constructeur de commande - une commande de mise à jour valide.
Supprimer le commentaire de votre ligne de générateur de commandes et le message d'erreur disparaît.
Vous devriez maintenant être en mesure d'apporter des modifications à la base de données elle-même (tant que la base de données Access n'est pas en lecture seule).
Essayez-le. Exécutez votre programme et changer l'un des enregistrements. Cliquez sur le bouton Mettre à jour. Ensuite, fermez le programme vers le bas, et le charger à nouveau. Vous devriez voir vos nouvelles modifications indiquées dans les zones de texte.

Exercice

Il ya un léger problème avec le code ci-dessus, cependant. Essayez de cliquer sur le bouton de mise à jour avant de cliquer sur le bouton Suivant de l'enregistrement. Qu'est-ce qui se passe? Savez-vous pourquoi vous obtenez ce message d'erreur? Écrire du code pour empêcher cela
Dans la partie suivante, nous allons voir comment ajouter un nouveau record.

1 commentaires:

salut! j'ai bien parcouru votre tuto, je vois que votre code n'est pas complet surtout au niveau de la création du dataset, si vous pouvez nous faciliter la tâche de bien construire un code complet. Merci

Enregistrer un commentaire