Manipulowanie danymi przy użyciu DAO



Podobne dokumenty
Materiały do laboratorium MS ACCESS BASIC

Database Connectivity

'otwarcie i ustawienie zbioru rekordow na podstawie tabeli Studenci Set rs = CurrentDb.OpenRecordset("Studenci", dbopensnapshot)

Dostęp do baz danych z serwisu www - PHP. Wydział Fizyki i Informatyki Stosowanej Joanna Paszkowska, 4 rok FK

DAO. tworzenie tabeli

Materiały pomocnicze do zajęć z przedmiotu Projekt ADP

15. Funkcje i procedury składowane PL/SQL

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

1.1. System otwartych baz danych ODBC. System otwartych baz danych ODBC. Interfejs ODBC. Interfejs ODBC. System otwartych baz danych ODBC

Zakres tematyczny dotyczący podstaw programowania Microsoft Office Excel za pomocą VBA

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

LK1: Wprowadzenie do MS Access Zakładanie bazy danych i tworzenie interfejsu użytkownika

Program szkolenia PODSTAWY VBA (VISUAL BASIC FOR APPLICATIONS) I FORMULARZE.

DECLARE VARIABLE zmienna1 typ danych; BEGIN

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście.

PHP: bazy danych, SQL, AJAX i JSON

Aplikacje w środowisku VBA. Visual Basic for Aplications

Systemy baz danych Prowadzący: Adam Czyszczoń. Systemy baz danych. 1. Import bazy z MS Access do MS SQL Server 2012:

Oracle PL/SQL. Paweł Rajba.

Podstawy programowania III WYKŁAD 2

1. Zarządzanie informacją w programie Access

Laboratorium Technologii Informacyjnych. Projektowanie Baz Danych

Program szkolenia VBA (VISUAL BASIC FOR APPLICATIONS) W EXCELU PRZEKROJOWY.

Bazy Danych. Wykład VII Makropolecenia. Copyright by Arkadiusz Rzucidło 1

SQL 4 Structured Query Lenguage

Wykład 4. Architektura ADO.NET Dostawcy danych Modele dostępu do danych model połączeniowy Model bezpołączeniowy. Bazy danych 2

Wykład 8. SQL praca z tabelami 5

LABORATORIUM 8,9: BAZA DANYCH MS-ACCESS

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Paweł Rajba

Ustawienie na poziomie sesji (działa do zmiany lub zakończenia sesji zamknięcia połączenia).

Architektura ADO.NET Dostawcy danych Modele dostępu do danych model połączeniowy Model bezpołączeniowy

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści

4 Web Forms i ASP.NET Web Forms Programowanie Web Forms Możliwości Web Forms Przetwarzanie Web Forms...152

Programowanie w SQL. definicja bloku instrukcji BEGIN...END, warunkowe wykonanie instrukcji IF...ELSE, wyrażenie CASE,

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

Konspekt do lekcji informatyki dla klasy II gimnazjum. TEMAT(1): Baza danych w programie Microsoft Access.

Zapytania i wstawianie etykiet z bazy danych do rysunku

Tworzenie bazy danych na przykładzie Access

Projektowanie baz danych za pomocą narzędzi CASE

PODSTAWY BAZ DANYCH 13. PL/SQL

Połączenie AutoCad'a z bazą danych

COMARCH IT AKADEMIA. Programista VBA w Microsoft Excel (microbootcamp)

Administracja i programowanie pod Microsoft SQL Server 2000

Funkcje i instrukcje języka JavaScript

Trigger jest obiektem związanym z tablicą, który aktywuje się gdy do tablicy następuje odpowiednie zapytanie.

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Platforma.NET laboratorium 4 Aktualizacja: 15/11/2013. Visual Basic.NET dostęp do bazy danych. Baza Microsoft SQL Server Compact

Wyzwalacze (triggery) Przykład

PL/SQL. Zaawansowane tematy PL/SQL

Bazy danych 2. Wykład 6

Materiały. Technologie baz danych. Plan wykładu Kursory. Wykład 5: Kursory jawne. Podprogramy. Kursory jawne. Kursory niejawne

Access - Aplikacja. Tworzenie bazy danych w postaci aplikacji

Składowane procedury i funkcje

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

PLAN WYKŁADU BAZY DANYCH PODSTAWOWE KWESTIE BEZPIECZEŃSTWA OGRANICZENIA DOSTĘPU DO DANYCH

Bazy danych i strony WWW

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Podstawowe pojęcia dotyczące relacyjnych baz danych. mgr inż. Krzysztof Szałajko

Cele. Definiowanie wyzwalaczy

Obsługa blędów i zewnętrznych plików

Przewodnik Szybki start

Informatyka I. Programowanie aplikacji bazodanowych w języku Java. Standard JDBC.

Kolekcje Zbiory obiektów, rodzaje: tablica o zmiennym rozmiarze (ang. varray) (1) (2) (3) (4) (5) Rozszerzenie obiektowe w SZBD Oracle

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Currenda EPO Instrukcja Konfiguracji. Wersja dokumentu: 1.3

PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:

Użycie Visual Basic for Applications ("VBA")

Język PL/SQL Procedury i funkcje składowane

Program szkolenia VBA (VISUAL BASIC FOR APPLICATIONS) W EXCELU PODSTAWOWY.

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

INFORMATOR TECHNICZNY WONDERWARE. Ograniczenie wyświetlania listy zmiennych w przeglądarce zmiennych ActiveFactory

Sprawdzenie poziomu izolacji transakcji (w aktualnym połączeniu):

Wprowadzenie do projektowania i wykorzystania baz danych. Katarzyna Klessa

Sprawdzenie czy połączenie przebiegło poprawnie if (mysqli_connect_errno()) { echo Błąd; Połączenie z bazą danych nie powiodło się.

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

STWORZENIE BIBLIOTEKI SŁUŻĄCEJ DO WCZYTYWANIA

TI - Bazy TECHNOLOGIE INFORMACYJNE

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Administracja i programowanie pod Microsoft SQL Server 2000

Bazy danych Karta pracy 1

Laboratorium A: Korzystanie z raportów zasad grupy/klucz do odpowiedzi

Obowiązuje od wersji

Obsługa pakietu biurowego OFFICE

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

Oracle11g: Wprowadzenie do SQL

Programowanie obiektowe

System. Instalacja bazy danych MySQL. Autor : Piotr Zielonka tel Piotrków Tryb., sierpień 2018r.

Oracle PL/SQL. Paweł Rajba.

5.3. Tabele. Tworzenie tabeli. Tworzenie tabeli z widoku projektu. Rozdział III Tworzenie i modyfikacja tabel

PODSTAWOWE POJĘCIA BAZ DANYCH

BAZY DANYCH. Co to jest baza danych. Przykłady baz danych. Z czego składa się baza danych. Rodzaje baz danych

Wstęp. Opis ten dotyczy wydziałów orzeczniczych.

KOMPUTEROWY SYSTEM WSPOMAGANIA OBSŁUGI JEDNOSTEK SŁUŻBY ZDROWIA KS-SOMED

DBPLUS Data Replicator Subtitle dla Microsoft SQL Server. dbplus.tech

Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze

Technologia informacyjna

Transkrypt:

Manipulowanie danymi przy użyciu DAO DAO Data Access Objects Korzystając z obiektów DAO można manipulować danymi z kodu procedur VBA np. Otwarta baza danych jest reprezentowana przez obiekt Database TableDef reprezentuje tabelę QueryDef reprezentuje kwerendę itd.

W oknie edytora Visual Basic wybierz Narzędzia->Odwołania (Tools->References) W polu listy kliknij pole wyboru Microsoft DAO 3.6 Object Library

Maszyna Obiekty DBO DAO Błędy Obszary robocze Obszar roboczy Bazy danych użytkownicy Baza danych Pojemniki Tabele Zapytania Zbiory rekordów Relacje grupy użytkowników

Maszyna DBO. Błędy i Obszary robocze DBEngine reprezentuje tzw. silnik baz danych Zawiera dwie kolekcje Errors błędy (bazy danych nie mylić z błędami VB) reprezentowane przez obiekty typu Error Workspaces obszary robocze- reprezentowane przr obiekty typu Workspace W ramach określonej przestrzeni roboczej: Każda otwarta baza danych reprezentowana jest przez obiekt typu Database Wyróżniamy obiekty reprezentujące użytkowników User, i grupy użytkowników Group

Obiekty baz danych Databases Databases zawiera obiekty reprezentujące wszystkie obecnie otwarte bazy danych t.j. obiekty typy Database W ramach obiektu typu Database : Zbiory TableDefs, QueryDefs, Relations mieszczą obiekty reprezentujące definicje tabel, kwerend, relacji... Zbiory typu Container reprezentują zachowane obiekty MS Access takie jak tabele, formularze, raporty itd... Zbiory typu Recordset prezentują zbiory rekordów,

Sesje użytkownika w Access Każda sesja użytkownika posiada jeden obiekt Workspace o nazwie DBEngine.Workspaces(0)

Model programowania ADO określa grupę obiektów i ich metod, które umożliwiają uzyskanie dostępu i aktualizację różnego rodzaju źródeł danych w tym baz danych. Oto jego zasady: Połączenie ze źródłem danych odbywa się przy użyciu obiektu klasy Connection. Określa się instrukcję SQL na źródle danych. Wykonuje się instrukcję SQL. Jeśli jest nią SELECT, zapisuje się wynikowe wiersze w obiekcie klasy RecordSet w celu ich przejrzenia i aktualizacji. Jeśli trzeba, aktualizuje się źródło danych przy pomocy metod obiektu RecordSet. Ewentualnie, następuje wykrycie błędów podczas połączenia i wykonywania polecenia.

Podstawowe obiekty modelu ADO Connection - korzeń w hierarchii obiektów ADO, używany przy dokonywaniu połączenia aplikacji ze źródłem danych. Recordset - reprezentuje zbiór rekordów przekazywanych ze źródła danych. Jest używany do przetwarzania rekordów w bazie danych. Używając tego obiektu można nawigować po zbiorze rekordów, modyfikować istniejące rekordy, dodawać nowe rekordy i usuwać wskazane rekordy. W danej chwili dostęp jest tylko do jednego rekordu nazywanego bieżącym rekordem. Command - reprezentuje instrukcję SQL. Error - reprezentuje błąd ADO.

ODBC (Open Database Connectivity) ODBC umożliwia dostęp do danych pochodzących z różnych systemów zarządzania bazami danych. W tym celu trzeba dodać do systemu składniki oprogramowania zwane sterownikami. Program Źródła danych (ODBC) pomaga dodać i skonfigurować te sterowniki. Aby otworzyć aplet Źródła danych (ODBC), Start->Panel sterowania-> Narzędzia administracyjne->odbc

Źródła danych ODBC DSN użytkownika (user DSN) DSN pliku (File DSN) DSN systemu (System DSN) przechowywane lokalnie w rejestrze Windows przechowywane w pliku z rozszerzeniem dsn (Program Files \Common Files\Odbc\Data Sources) przechowaywany lokalnie w rejestrze z możliwością dostępu do źródła zalogowanym użytkownikom

Model obiektów ADO ActiveX Data Objects (ADO) składa się z trzech bibliotek: ADODB dostęp i manipulowanie danymi ADOX definiowanie i bezpieczeństwo danych JRO replikacja (replika bazy danych - baza danych zawierająca kopie obiektów, których oryginały znajdują się w bazie danych wzorcu).

Odwołania do bibliotek ADO w VBA ADODB ADOX Tools->References JRO

Nawiązywanie łączności z bazą danych Deklaracja zmiennej obiektowej ADO Connection: Dim conn As ADODB.Connection Uzyskanie połączenia z bieżącą bazą danych MS Access Set conn = CurrentProject.Connection W ogólnym przypadku jest potrzebny tzw. łańcuch połączeniowy czyli tekst zawierający najważniejsze informacje pozwalające na połączenie z wybraną bazą danych, udostępnioną przez wskazanego dostawcę.

łańcuch zależy od wybranego źródła danych zob. http://www.connectionstrings.com/

Łańcuch połączeniowy można też uzyskać w następujący sposób: 1. Tworzymy plik o dowolnej nazwie i rozszerzeniu UDL np. Nowy.UDL. 2. Otwieramy utworzony plik poprzez dwukrotne jego kliknięcie. W wyniku czego pojawi się okno Właściwości łącza danych 3.Z listy Dostawcy OLE DB wybieramy dostawcę danych, od którego pochodzi nasza baza danych

Określamy źródło danych informacje o logowaniu Możemy przetestować połączenie

Po ustawieniu opcji otwieramy plik nowy.udl za pomocą notatnika [oledb] ; Everything after this line is an OLE DB initstring Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Documents and Settings\marmac\Pulpit\zajęcia2007\bazy danych\wspolnota.mdb; Mode=ReadWrite; Persist Security Info=False Wygenerowany łańcuch przyłączeniowy

Recordset reprezentuje zbiór rekordów przekazywanych ze źródła danych. Jest używany do przetwarzania rekordów w bazie danych. W danej chwili dostęp jest tylko do jednego rekordu nazywanego bieżącym rekordem. Uwaga Aby określić z którego modelu danych (DAO, ADO,...) korzystasz wpisz kwalifikator przed nazwą obiektu np. Dim tabela As DAO.Recordset Dim tabela As ADODB.Recordset W przypadku braku kwalifikatora zostanie uzyta biblioteka obiektów, wymieniona jako pierwsza w oknie Odwołania (References) VBA

Dim cncurrent As ADODB.Connection Set cncurrent = New ADODB.Connection Dim rsklienci As ADODB.Recordset Set rsklienci = New ADODB.Recordset Deklaracja i utworzenie obiektu Recordset

Wykonywanie instrukcji SQL Instrukcję SQL można wykonać w kodzie VBA w różny sposób. Oto możliwości: metoda RunSQL obiektu DoCmd; jej stosowanie jest ograniczone do tabel MS Access (w tym załączonych z innych baz danych), metoda Execute obiektu Connection, metoda Execute obiektu Command, metoda Open obiektu Recordset.

Oto przykłady stosowania instrukcji UPDATE, INSERT i DELETE alternatywnie przy pomocy metody Execute obiektu klasy Connection i przy pomocy metod obiektu klasy RecordSet: Dla instrukcji UPDATE: strsql = "UPDATE Klienci " SET Nazwisko = '" & _ txtnazwisko.value & "'" & _ "WHERE IDKlienta = '" & txtidklienta.value & "'" cncurrent.execute strsql lub po ustawieniu się na odpowiednim rekordzie w obiekcie rsklienci: rsklienci!nazwisko = InputBox("Podaj nazwisko:") rsklienci.update

Podobnie dla instrukcji INSERT: strsql = "INSERT INTO Klienci(IDKlienta, Nazwisko)_ VALUES (' _ & txtidklienta.value & "','" _ & txtnazwisko.value & "')" cncurrent.execute strsql lub rsklienci.addnew rsklienci!idklienta = txtidklienta.value rsklienci!nazwisko = InputBox("Podaj nazwisko:") rsklienci.update

Przykład Załóżmy, że chcemy w tabeli Pracownicy zmienić zawód Sprzedawca na Księgowy. Najprostsze rozwiązanie to użyć instrukcji SQL (w metodzie RunSQL lub Execute): UPDATE Pracownicy SET Tytuł = "Księgowy" WHERE Tytuł = "Sprzedawca"; Natomiast używając języka programowania, moglibyśmy napisać instrukcję iteracji sprowadzającą kolejne rekordy z tabeli Pracownicy. W przypadku napotkania wartości Sprzedawca zmienilibyśmy ją na Księgowy. Dostęp do kolejnych rekordów tabeli (a także rekordów kwerend i formularzy) umożliwia konstrukcja zestawu rekordów. Stosując ją należy na samym początku utworzyć zestaw rekordów dla źródła rekordów, a następnie używając metod MoveFirst i MoveNext obiektu RecordSet przejść po wszystkich rekordach ze źródła rekordów.

Dim cncurrent As ADODB.Connection Set cncurrent = CurrentProject.Connection Dim rspracownicy As ADODB.Recordset Set rspracownicy = New ADODB.Recordset rspracownicy.open "Pracownicy", cncurrent rspracownicy.movefirst Do Until rspracownicy.eof If rspracownicy!tytuł = "Sprzedawca" Then rspracownicy!tytuł = "Księgowy" rspracownicy.update 'Zapisanie zmian End If rspracownicy.movenext Loop rspracownicy.close Set rspracownicy = Nothing

Podnieś zarobki wszystkich pracowników, którzy zarabiają mniej niż 2000. Public Sub SalRise() Dim cnn As ADODB.Connection Set cnn = New ADODB.Connection cnn.connectionstring = "DSN=scott;UID=scott;PWD=tiger;" cnn.open Dim strsql As String strsql = "UPDATE Emp SET Sal=Sal*1.1 WHERE Sal < 2000" cnn.execute strsql cnn.close Set cnn = Nothing End Sub

Transakcje na bazie danych Transakcja bazy danych to ciąg instrukcji INSERT, DELETE i UPDATE traktowany jako niepodzielna całość według zasady albo wszystkie instrukcje są wykonywane albo żadna. Wymagane jest explicite rozpoczęcie transakcji, ponieważ domyślnie w ADO każda instrukcja SQL stanowi jednoelementową transakcję kończącą się automatycznym zatwierdzeniem (auto-commit). Za pomocą metod obiektu Connection: BeginTrans rozpoczyna nową transakcję. CommitTrans zapisuje zmiany i kończy aktualną transakcję. RollbackTrans kasuje zmiany dokonane w trakcie transakcji i kończy aktualną transakcję.

Transakcje mogą być zagnieżdżone. Składnia (gdzie obiekt oznacza obiekt klasy Connection) poziom = obiekt.begintrans() zwraca poziom zagnieżdżenia transakcji obiekt.begintrans obiekt.committrans obiekt.rollbacktrans Ten sam efekt można uzyskać przy pomocy instrukcji SQL wykonywanych przez metodę Execute: BEGIN TRANSACTION COMMIT ROLLBACK Uwaga: Nie każdy "dostawca danych" realizuje transakcje!

Obiekt Command Obiekt Command jest reprezentacją instrukcji SQL w celu jej wykonania na źródle danych. Obiekt Command jest istotny w przypadkach gdy trzeba powtórnie wykonać tę samą instrukcję bądź, gdy wygodnie jest w aplikacji używać parametrów (których tutaj nie będziemy omawiać). Pokazaliśmy uprzednio jak wykonywać instrukcje SQL przy pomocy metod obiektów Connection i RecordSet.

Użycie kolekcji Errors i obiektu Error Każda operacja dotycząca obiektów ADO może spowodować wystąpienie jednego lub więcej błędów, zgłaszanych przez dostawcę danych w wyniku wykonywania instrukcji SQL. Każdy błąd jest reprezentowany przez osobny obiekt klasy Error w kolekcji Errors. Gdy kolejna instrukcja generuje błędy - poprzednie obiekty kolekcji Errors są kasowane. Oprócz błędów zgłaszanych przez dostawcę danych mogą wystąpić błędy ADO w ramach realizacji kodu w VBA są one standardowo zapisywane w obiekcie Err omawianym na poprzednich wykładach. Obiekt typu Error zawiera: 1. właściwość Description tekst opisujący błąd, 2. właściwość Number numer błędu, 3. właściwość Source identyfikacja obiektu, który podniósł błąd, 4. właściwości SQLState i NativeError dostarczające informacji ze źródeł danych SQL.

On Error GoTo Err_Execute cmdchange.execute... Err_Execute: 'Powiadom użytkownika o błędach pochodzących z wykonania instrukcji SQL. Dim errloop As ADODB.Error If cnn.errors.count > 0 Then For Each errloop In cnn.errors MsgBox "Numer błędu: " & errloop.number & vbcr & errloop.description Next errloop End If Resume Next...

Podsumowanie Języka programowania przy tworzeniu aplikacji bazy danych używamy do: przetwarzania danych wymagającego iteracji i podejmowania wyborów; sprawdzania poprawności danych, ich poprawiania i diagnostyki błędów; odpowiedniej reakcji na zaistniałe błędy, do ich diagnostyki i dynamicznego poprawiania; współpracy z innymi programami systemu Windows jak i z odległymi bazami danych; wielokrotnego użycia tego samego kodu.