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…
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.
Kies Dataset als Database Model en druk op Next.
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.
De onderstaande melding verschijnt. Kies voor “Nee”. De database wordt niet toegevoegd aan het 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.
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.
In de Solution Explorer staat nu het nieuwe bestand van de aangemaakte dataset.
Dubbelklik op de aangemaakte dataset dtsKlanten.xsd. In deze dataset zit één DataTable, namelijk de tabel tblKlanten.
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.
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).
Standaard worden de verschillende velden weergegeven in een Textbox. Het gewenste besturingselement kan voor ieder veld geselecteerd worden.
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.
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.
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…
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