Hoofdstuk 23: Disconnected toegang

23.1         Inleiding Disconnected Toegang
23.2         Databasegegevens in een formulier
22.3         DataSet
22.4         TableAdapter en TableAdapterManager
22.5         BindingSource
22.6         DataRelation

Oefeningen hoofdstuk 23

23.1         Inleiding Disconnected Toegang

In het vorige hoofdstuk “Connected Toegang” was een constante verbinding met de database vereist. In dit hoofdstuk wordt de data offline gebruikt. Een tijdelijke verbinding met de database is uiteraard noodzakelijk om de data op te halen. Maar daarna is de data offline beschikbaar en kan de data bewerkt worden. Het is zelfs mogelijk om helemaal zonder verbinding te werken en een volledige dataset met relaties op te bouwen in het geheugen.
Top

23.2         Databasegegevens in een formulier

Maak een nieuw project “Hoofdstuk 23” en ontwerp daarin een formulier “frmKlanten”. Voeg een Data Source toe via het menu Project, Add New Data Source…

Figuur 23.1: Data Source toevoegen

Figuur 23.1: Data Source toevoegen

De Data Source Configuration Wizard opent. Doorloop deze wizard en maak hierbij de keuzes die hieronder stap voor stap uitgelegd staan.

Kies Database als Data Source Type en druk op Next.

Figuur 23.2: Type Database

Figuur 23.2: Type Database

Kies Dataset als Database Model en druk op Next.

Figuur 23.3: Dataset

Figuur 23.3: Dataset

In de dropdownlist kan gekozen worden voor de data connections die in de Database Explorer staan. Selecteer de verbinding met ArtemisSQL.mdf. Druk op Next.

Figuur 23.4: Data Connection

Figuur 23.4: Data Connection

De onderstaande melding verschijnt. Kies voor “Nee”. De database wordt niet toegevoegd aan het project.

Figuur 23.5: Database NIET toevoegen aan project

Figuur 23.5: Database NIET toevoegen aan project

Zorg dat optie “Yes, save the connection as:” aangevinkt is. Hierdoor wordt de connection string in de application configuration file bewaard worden. Bijgevolg moeten aanpassingen aan de connection string enkel hierin aangebracht worden. Druk op Next.

Figuur 23.6: Bewaar de connection string

Figuur 23.6: Bewaar de connection string

Plaats tblKlanten in de dataset en geef de dataset de naam dtsKlanten. Een dataset is een deel van relationele databank in het geheugen van de computer (meer hierover in paragraaf 23.3 Dataset). Druk op Finish.

Figuur 23.7: Dataset

Figuur 23.7: Dataset

In de Solution Explorer staat nu het nieuwe bestand van de aangemaakte dataset.

Figuur 23.8: Dataset in Solution Explorer

Figuur 23.8: Dataset in Solution Explorer

Dubbelklik op de aangemaakte dataset dtsKlanten.xsd. In deze dataset zit één DataTable, namelijk de tabel tblKlanten.

Figuur 23.9: DataTable

Figuur 23.9: DataTable

Om de gegevens van eigenlijke database over te brengen naar de DataTable wordt een TableAdapter gebruikt. Aan de DataTable tblKlanten is de TableAdapter tblKlantenTableAdapter verbonden. Met het SQL commando “Fill,GetData()” kunnen de gewenste gegevens opgehaald worden.

Figuur 23.10: SQL-commando Fill,GetData()

Figuur 23.10: SQL-commando Fill,GetData()

Wanneer de Data Sources geactiveerd worden (View, Other Windows, Data Sources) dan kunnen de gegevens overgezet worden naar het formulier in een lijst (DataGridView) of individueel (Details).

Figuur 23.11: Data Sources

Figuur 23.11: Data Sources

Standaard worden de verschillende velden weergegeven in een Textbox. Het gewenste besturingselement kan voor ieder veld geselecteerd worden.

Figuur 23.12: Besturingselement wijzigen

Figuur 23.12: Besturingselement wijzigen

Verander het besturingselement voor Klantnummer naar label en voor Type naar Combobox.

Alle velden overbrengen naar het formulier gebeurt als volgt: Sleep ofwel alle velden één voor één naar het formulier ofwel de tabelnaam naar het formulier.

Schik de velden zodanig tot het onderstaande resultaat.

Figuur 23.13: Design formulier frmKlanten

Figuur 23.13: Design formulier frmKlanten

Automatisch is de navigatiebalk toegevoegd aan het formulier. De onderstaande objecten zorgen ervoor dat het formulier gekoppeld wordt aan de gegevens van de database:

  • dtsKlanten: de dataset is een deel van de relationele database die in het geheugen staat.
  • tblKlantenBindingSource: zorgt voor de koppeling van de data aan de besturingselementen op het formulier.
  • tblKlantenTableAdapter: verzorgt het transport van data tussen de DataTable en de Dataset.
  • tableAdapterManager: bewaart data in een relationele databank.
  • tblKlantenBindingNavigator: zorgt voor het navigeren, het toevoegen en verwijderen van records…

Voeg aan de Combobox de keuzemogelijkheden P, R, T en W toe via het snelmenu Edit Items. Een andere mogelijkheid om keuzemogelijkheden aan te passen is via de property “Items” van de Combobox.

Figuur 23.14: Items toevoegen aan combobox

Figuur 23.14: Items toevoegen aan combobox

In het formulier kunnen gegevens gewijzigd, verwijderd of toegevoegd worden. De aanpassingen zijn pas definitief wanneer op de bewaarknop gedrukt wordt. De gegevens worden dan zoals ze in de DataTable staan, weggeschreven naar de database . De DataTable tblKlanten wordt bij het laden van het formulier gevuld met de gegevens van de klanten die uit de database gehaald worden.
Top

23.3         Dataset

Een dataset bevat één of meer tabellen en wordt vertegenwoordigt door DataTables. Een DataTable vertegenwoordigt een gegevensbron die gegevens in rij- en kolomopmaak opslaat.

Eigenlijk is een dataset een relationele database (of een deel van een relationele database) die zich volledig in het geheugen van de PC bevindt. Tijdens de verwerking is er helemaal geen verbinding met de database. Alleen op het ogenblik dat de gegevens in de DataSet geladen worden en op het ogenblik dat de aangepaste gegevens vanuit de DataSet naar de database weggeschreven worden, is er een verbinding met de database.
Top

23.4         TableAdapter en TableAdapterManager

De TableAdapter staat in voor de de communicatie tussen de database en de DataSet, m.a.w. de TableAdapter zorgt ervoor dat de gegevens ingeladen worden in de DataSet. Met de TableAdapter kunnen ook de gewijzigde gegevens van een individuele tabel bewaard worden in de database.

Het bewaren van wijzigingen in een relationele databank met meerdere tabellen in een DataSet gebeurt met de TableAdapterManager. De TableAdapterManager maakt gebruik van  de relaties tussen de verschillende tabellen om de volgorde te bepalen waarin gegevens toegevoegd, gewijzigd of verwijderd worden, rekening houdend met de referentiële integriteit.
Top

23.5         BindingSource

Databinding slaat op het feit dat velden van een DataSource gekoppeld worden aan besturingselementen om de gegevens uit de database weer te geven. Er bestaan twee soorten databinding, namelijk:

  • Enkelvoudige databinding: de gegevensbron wordt gekoppeld aan een besturingselement dat enkelvoudige informatie kan bevatten, bijvoorbeeld een TextBox of een CheckBox…
  • Complexe databinding: een besturingselement kan meerdere gegevens uit de gegevensbron bevatten, bijvoorbeeld een keuzelijst…

Top

23.6         DataRelation

Als een rij van een ParentTable meerdere ChildRows heeft, dan kunnen deze via de methode GetChildRows van de DataRow rechtstreeks aangesproken worden. Het argument van deze mehode is de naam van een DataRelation of de index van de DataRelation. Het resultaat is een Array van DataRows. Het aantal elementen in de array kan opgevraagd worden met de eigenschap Length.
Top

Oefeningen hoofdstuk 23

Oefening 23-1     Maak een formulier frmKlantenLijst waarin alle gegevens van de klanten worden weergegeven in een lijst.

Oefening 23-2     Maak een formulier frmOrders voor het beheren van de gegevens van de orders van Artemis. Per klant verschijnt een overzicht van de geplaatste orders. Vervolgens kan per geplaatst order de informatie over dit order opgevraagd worden. Gebruik voor deze oefening de tabellen tblKlanten, tblOrders en tblOrderInformatie waardoor in de DataSet 3 DataTables gecreëerd worden.

Oefening 23-3     Maak een formulier frmProducten  waarin een lijst van de producten is weergegeven met Productnummer, Productnaam, PrijsPerEenheid en de bedrijfsnaam van de leverancier. Voeg aan de DataSet in eerste instantie enkel de velden van de tabel tblProducten toe, namelijk Productnummer, Productnaam en PrijsPerEenheid. De bedrijfsnaam wordt toegevoegd via de Query builder.

Oefening 23-4     Maak een formulier frmProductenLijst waarin de namen van alle producten worden weergegeven in een ListBox.

Oefening 23-5     Maak een formulier frmProductenPerLeverancier waarin per leveranciersnummer de bedrijfsnaam wordt weergegeven in een TextBox. Daarnaast worden per gekozen leverancier de producten met hun gegevens weergegeven in een DataGridView.
OPLOSSINGEN
Top

Vorige          Volgende