DAO. tworzenie tabeli

Podobne dokumenty
Materiały do laboratorium MS ACCESS BASIC

Manipulowanie danymi przy użyciu DAO

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

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

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Język SQL, zajęcia nr 1

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

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

Ref. 7 - Język SQL - polecenia DDL i DML

Autor: Joanna Karwowska

Plik->Opcje->Zakladka Główne->Dostosuj Wstążkę Zaznaczamy kwadracik Developer na liscie po prawej stronie. Klikamy OK.

1. Połączenie z bazą danych. W wybranym edytorze tworzymy plik sqltest.py i umieszczamy w nim poniższy kod. #!/usr/bin/python3 import sqlite3

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

koledzy, Jan, Nowak, ul. Niecała 8/23, , Wrocław, , ,

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

DECLARE VARIABLE zmienna1 typ danych; BEGIN

LibreOffice Calc VBA

Ćwiczenie zapytań języka bazy danych PostgreSQL

Oracle11g: Wprowadzenie do SQL

LABORATORIUM 8,9: BAZA DANYCH MS-ACCESS

Kiedy i czy konieczne?

Systemy GIS Tworzenie zapytań w bazach danych

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

KORPORACYJNE SYSTEMY ZARZĄDZANIA INFORMACJĄ

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

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 3. Programowanie komputerowe

SQL, LIKE, IN, CASE, EXISTS. Marcin Orchel

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

1. Tworzenie tabeli. 2. Umieszczanie danych w tabeli

Przykładowe B+ drzewo

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL,

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

ECDL/ICDL Użytkowanie baz danych Moduł S1 Sylabus - wersja 6.0

Bazy danych 6. Klucze obce. P. F. Góra

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

Baza danych. Program: Access 2007

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

Bazy Danych i Usługi Sieciowe

Podstawy programowania III WYKŁAD 2

Struktura drzewa w MySQL. Michał Tyszczenko

Bazy danych SQL Server 2005

CREATE USER

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

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

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

Plan wykładu BAZY DANYCH II WYKŁAD 3. Zasięg zmiennych. Zasięg zmiennych

Oracle PL/SQL. Paweł Rajba.

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

TEMAT ĆWICZENIA Zapoznanie z technologią LINQ

4.1. Analiza AWN jest dokonywana na poziomie VBA

SQL - Structured Query Language -strukturalny język zapytań SQL SQL SQL SQL

Zarządzanie bazą danych. Bazy Danych i Systemy informacyjne Wykład 4. Piotr Syga

Baza danych część 8. -Klikamy Dalej

Bazy danych i usługi sieciowe

Właściwości i metody obiektu Comment Właściwości

Baza danych Uczniowie.mdb

Inżynieria Programowania Laboratorium 3 Projektowanie i implementacja bazy danych. Paweł Paduch paduch@tu.kielce.pl

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

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

Zmiany funkcjonalne i lista obsłużonych zgłoszeń Comarch DMS , Comarch DMS i Comarch DMS

SQL (ang. Structured Query Language)

Hurtownia Świętego Mikołaja projekt bazy danych

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

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław r.

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

Systemy internetowe. Wykład 4 mysql. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

Symfonia Produkcja. Kreator raportów. Wersja 2013

2. Kliknij Insert->Userform. Jeżeli Toolbox nie pojawi się automatycznie, kliknij View -> Toolbox. Otrzymany widok powinien być jak poniżej.

SQL :: Data Definition Language

Język SQL Złączenia. Laboratorium. Akademia Morska w Gdyni

Spis treści. Przedmowa Tworzenie kwerend Obliczenia w kwerendach... 57

Instrukcje cykliczne (pętle) WHILE...END WHILE

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

Algorytmika i Programowanie VBA 1 - podstawy

Bloki anonimowe w PL/SQL

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

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

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

Wykład 5. SQL praca z tabelami 2

Wykład 8. SQL praca z tabelami 5

Oracle Application Express

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

Wprowadzenie do baz danych

Aktualizacja baz danych systemu qs-stat

Zapytania do baz danych

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

ECDL/ICDL Użytkowanie baz danych Moduł S1 Sylabus - wersja 5.0

Podstawowe zagadnienia z zakresu baz danych

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Leszek Stasiak Zastosowanie technologii LINQ w

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

INSTRUKCJA SKOKU GOTO

P o d s t a w y j ę z y k a S Q L

Podstawy Pentaho Data Integration

Wstęp 5 Rozdział 1. Podstawy relacyjnych baz danych 9

Wprowadzenie do programowania w VBA

Wyzwalacze (triggery) Przykład

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

Transkrypt:

Mały poradnik do projektu z baz danych macie przykładowe kody DAO I ADODB, pewnie nie wszystkie, jak będą prośby to się dopisze co trzeba na razie będzie to wersja: 0.1 tego dokumentu. Na czerwono zaznaczyłem w kodzie takie rzeczy jak nazwy pól i tabel czy nazwy plików które należy przed uruchomieniem zamienić na własne wartości inaczej z dużym prawdopodobieństwem wszystko się pierdolnie ;) Jeśli macie problem z otwarciem z poziomu VBA plików Accessa 2007 (rozszerzenie accdb) to całkiem prawdopodobne ze potrzebujecie zainstalować sobie to cos: http://www.microsoft.com/downloads/details.aspx?familyid=7554f536 8C28 4598 9B72 EF94E038C891&displaylang=en Przyjemność korzystania z tej publikacji zawdzięczacie mnie i tadziowi który odwrotnie niż ja nie odkłada wszystkiego na ostatnia chwile i jakoś mnie zmobilizował żeby się za to zabrać. Kody testowane, działały u nas, ale pomimo moich starań mogą tu być błędy. DAO tworzenie tabeli Dim pole As DAO.Field Dim tabela As DAO.TableDef Dim txt As String txt = InputBox("Podaj nazwę dla tabeli") Set tabela = baza.createtabledef(txt) txt = InputBox("Podaj nazwę kolumny") Set pole = tabela.createfield(txt, dbtext) 'Możliwe typy pola to dbbigint, dbbinary, dbboolean, dbbyte, dbchar, dbcurrency, dbdate, dbdecimal, dbdouble, dbfloat, dbguid, dbinteger, dblong, dblongbinary, dbmemo, dbnumeric, dbsingle, dbtext, dbtime, dbtimestamp, dbvarbinary tabela.fields.append pole tabela.fields.refresh baza.tabledefs.append tabela baza.tabledefs.refresh tworzenie indeksu Dim baza As Dao.Database

Dim pole As Dao.Field Dim indeks As Dao.Index Dim txt As String Dim tabela As Dao.TableDef Set tabela = baza.tabledefs("nazwatabeli") txt = InputBox("Podaj nazwę dla indeksu") Set indeks = tabela.createindex(txt) txt = InputBox("Podaj nazwe pola") Set pole = indeks.createfield(txt) indeks.fields.append pole tabela.indexes.append indeks tabela.indexes.refresh tworzenie relacji Dim relacja As DAO.Relation Dim pole As DAO.Field Set relacja = baza.createrelation("nazwarelacji", "nazwatabeli1", "nazwatabeli2") relacja.attributes = dbrelationupdatecascade Set pole = relacja.createfield("nazwapolawtabeli1") pole.foreignname = "NazwaPolawTabeli2" relacja.fields.append pole baza.relations.append relacja tworzenie kwerend wybierających Dim txt, sql As String Dim zapytanie As DAO.QueryDef txt = InputBox("Podaj nazwę dla zapytania", "Nazwa?") Tutaj podane jest przykładowe domyślne zapytanie sql = InputBox("Podaj zapytanie sql", "SQL", "SELECT * FROM nazwatabeli") Set zapytanie = baza.createquerydef(txt, sql) tworzenie kwerend modyfikujących Dim txt, sql As String Dim zapytanie As DAO.QueryDef txt = InputBox("Podaj nazwę dla zapytania", "Nazwa?") Tutaj możecie sobie wstawić zapytanie SQL na sztywno, ważne żeby to zapytanie cos modyfikowało sql = InputBox("Podaj zapytanie sql", "SQL", "UPDATE Znajomi SET majatek = 300000 WHERE majatek>150000") Set zapytanie = baza.createquerydef(txt, sql) transakcja Dim workspace As workspace

Dim zapytanie As DAO.QueryDef Dim zapytanie2 As DAO.QueryDef Dim q As Integer Set workspace = DBEngine(0) Przykładowe 2 zapytania modyfikujace które będą Stanowic nasza transakcje Set zapytanie = baza.createquerydef("modyfik", "UPDATE Znajomi SET majatek = majatek*1.5") Set zapytanie2 = baza.createquerydef("modyfik2", "UPDATE Znajomi SET inteligencja = 'geniusz' WHERE wzrost='wysoki'") baza.querydefs.refresh workspace.begintrans zapytanie.execute zapytanie2.execute q = MsgBox("Pierwsze zapytanie modyfikuje " & zapytanie.recordsaffected & ", drugie " & zapytanie2.recordsaffected & "czy napewno wykonac", vbyesno, "Czy wykonac transakcje?") If (q = vbyes) Then workspace.committrans Else workspace.rollback Tutaj usuwam zapytania ktore wczesniej zadeklarowalismy bo inaczej to przy ponownym wykonaniu kodu by się wywalil baza.querydefs.delete ("modyfik") baza.querydefs.delete ("modyfik2") baza.querydefs.refresh workspace.close metoda Seek Tabela musi miec zdefiniowany indeks tabela.index = "nazwaindeksu" Przykładowo poniżej wyszukujemy wyrazy zaczynajace się od litery R tabela.seek ">=", "R" If Not tabela.nomatch Then Nazwa pola dla ktorego zdefiniowany jest wyzej podany indeks MsgBox tabela("nazwapola") Else MsgBox "Nie znaleziono" metoda Find Podany poniżej kod przeszukuje podane pole szukając y stringów które zaczynają sie od litery R. FindFirst i FIndNext jako kryteria wyszukiwania przyjmują string który wyglada tak jak sqlowa klauzula WHERE tyle ze bez słowa WHERE.

Dim vrpowrot As Variant Set tabela = baza.openrecordset("nazwatabeli", dbopendynaset) MsgBox "Biezacy:" & tabela("nazwapola") vrpowrot = tabela.bookmark tabela.findfirst "Left(NazwaPola, 1) = 'R'" Do While Not tabela.nomatch MsgBox tabela("nazwapola ") tabela.findnext "Left(NazwaPola, 1) = 'R'" tabela.bookmark = vrpowrot MsgBox "Powrot do: " & tabela("nazwapola ") dodawanie rekordu Przykład uniwersalny wystarczy podać nazwe tabeli a reszta zrobi sie sama. Jednak dodaje tylko pola które są tekstem lub liczba dziesiętną, co ogranicza możliwość wystąpienia błędów przy konwersji typow. Dim txt As Variant tabela.addnew For i = 0 To tabela.fields.count 1 If tabela.fields(i).type = dbtext Or tabela.fields(i).type = dbdecimal Then txt = InputBox("Podaj wartość dla pola " & tabela.fields(i).name) tabela(tabela.fields(i).name) = txt Next i tabela.update a tutaj wersja mniej uniwersalna zmieniająca konkretne pola With tabela.addnew!nazwapola1 = wartość pola 1!nazwapola2 = wartość pola 2!nazwapola3 = 3.Update End With edycja rekordów Przykładowy kod zmieniający podane pole zamieniając wszystkie litery na duze.

tabela.movefirst Do While Not tabela.eof tabela.edit tabela!nazwapola = UCase(tabela! NazwaPola) tabela.update tabela.movenext usuwanie rekordow Dim ile As Integer ile = 0 tabela.movefirst Do While Not tabela.eof If tabela!nazwapola < 220000 Then tabela.delete ile = ile + 1 tabela.movenext MsgBox "Usunieto rekordów: " & ile ADO łaczenie jawne Dim con As New ADODB.Connection Dim rst As New ADODB.Recordset con.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = c:\\nazwapliku.mdb;" rst.open "NazwaTabeli", con, adopenforwardonly, adlockreadonly, adcmdtable Wyswietlenie zawartosci 2 pierwszych kolumn w tabeli MsgBox rst.fields(0).value & vbtab & rst.fields(1).value rst.close con.close łaczenie niejawne Dim rst As New ADODB.Recordset rst.open "NazwaTabeli", "Provider=Microsoft.ACE.OLEDB.12.0; Data Source = NazwaPliku.accdb", adopenkeyset, adlockreadonly, 2 MsgBox rst.fields(0).value & vbtab & rst.fields(1).value

rst.close wykorzystanie metody execute obiektu connection Dim con As New ADODB.Connection Dim rst As ADODB.Recordset con.connectionstring = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source = Nazwapliku.accdb" con.open Pobranie z tabeli ksiegarnia wszystkich rekordów I wyswietlenie zawartosci 2 pierwszych kolumn 1 rekordu Set rst = con.execute("select * FROM ksiegarnia") MsgBox rst.fields(0).value & vbtab & rst.fields(1).value rst.close con.close obiekt connection (jawnie, niejawnie), metoda execute metoda save obiektu recordset zapis do pliku txt jako XML Dim con As New ADODB.Connection Dim rst As ADODB.Recordset con.connectionstring = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source = ksiegarnia.accdb" con.open Set rst = con.execute("select * FROM ksiegarnia") rst.save "ksiegarnia.txt", adpersistxml rst.close con.close Lub wersja z wykorzystaniem obiektu Stream Dim con As New ADODB.Connection Dim rst As ADODB.Recordset Dim str As New ADODB.Stream con.connectionstring = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source = ksiegarnia.accdb" con.open Set rst = con.execute("select * FROM ksiegarnia") rst.save str, adpersistxml str.savetofile "C:\dane2.txt", adsavecreateoverwrite rst.close con.close metoda move obiektu recordset Przykładowy kod który przesuwa wskaźnik na srodkowy rekord Dim d As Long rekord.activeconnection = CurrentProject.Connection rekord.open "Nazwatabeli",, adopenstatic, adlockoptimistic, adcmdtable d = (rekord.recordcount / 2) rekord.movefirst MsgBox rekord.fields("nazwapola") rekord.move d, 0 MsgBox rekord.fields("nazwapola") dodawanie rekordu Dim txt As Variant

rekord.activeconnection = CurrentProject.Connection rekord.open "Nazwatabeli",, adopenkeyset, adlockoptimistic, adcmdtable rekord.addnew txt = InputBox("Podaj wartosc pola1") rekord.fields("pole1").value = txt txt = InputBox("Podaj wartosc pola2") rekord.fields("pole2").value = txt txt = InputBox("Podaj wartosc pola3") rekord.fields("pole3").value = 200000 rekord.update usuwanie rekordów Kod przechodzi przez cała tabele I pyta dla kazdego rekordu czy wyrzucic Dim d As Integer rekord.activeconnection = CurrentProject.Connection rekord.open "Nazwatabeli",, adopenforwardonly, adlockoptimistic, adcmdtable Do Until rekord.eof d = MsgBox("Czy chcesz wyrzucic rekord " & rekord.fields("nazwapola").value, vbyesno) If d = vbyes Then rekord.delete rekord.movenext metoda find obiektu recordset Dim info As String info = InputBox("znajdź:") rekord.activeconnection = CurrentProject.Connection rekord.open "NazwaTabeli",, adopenkeyset, adlockpessimistic, adcmdtable rekord.movefirst Wyszukuje pola ktore zaczynaja sie od znakow podanych w inputboxie rekord.find ("NazwaPola like " & info & "*") If (rekord.bof = True) Or (rekord.eof = True) Then MsgBox "nie znaleziono" Else MsgBox rekord.fields("nazwapola ") metoda filter obiektu recordset Poniższy kod filtruje pole NazwaPola tabeli NazwaTabeli I zostawia te rekordy ktorych wartość NazwaPola zaczyna sie od litery K rekord.activeconnection = CurrentProject.Connection rekord.open "NazwaTabeli",, adopenkeyset, adlockoptimistic, adcmdtable rekord.filter = "NazwaPola" & " Like 'K*'"

Do Until rekord.eof MsgBox rekord.fields("nazwapola ") rekord.movenext