Access 00 Ksiega eksperta (2)


Spis Treści

c534792409 \h 0x01 graphic
217

HYPERLINK \l "_Toc534792410" 0x01 graphic
Deklaruj zmienne w jak najwęższym zakresie PAGEREF _Toc534792410 \h 0x01 graphic
218

HYPERLINK \l "_Toc534792411" 0x01 graphic
Używaj określonych typów danych PAGEREF _Toc534792411 \h 0x01 graphic
218

HYPERLINK \l "_Toc534792412" 0x01 graphic
Niszcz zmienne obiektów PAGEREF _Toc534792412 \h 0x01 graphic
218

HYPERLINK \l "_Toc534792413" 0x01 graphic
Używaj słowa kluczowego TypeOf PAGEREF _Toc534792413 \h 0x01 graphic
218

HYPERLINK \l "_Toc534792414" 0x01 graphic
Używaj Me zamiast Screen.ActiveForm i Screen.ActiveControl PAGEREF _Toc534792414 \h 0x01 graphic
218

HYPERLINK \l "_Toc534792415" 0x01 graphic
Używaj narzędzia do obsługi błędów PAGEREF _Toc534792415 \h 0x01 graphic
218

HYPERLINK \l "_Toc534792416" 0x01 graphic
Używaj Option Explicit PAGEREF _Toc534792416 \h 0x01 graphic
218

HYPERLINK \l "_Toc534792417" 0x01 graphic
Numeracja od 0 czy od 1? PAGEREF _Toc534792417 \h 0x01 graphic
218

HYPERLINK \l "_Toc534792418" 0x01 graphic
Natychmiast naprawiaj błędy PAGEREF _Toc534792418 \h 0x01 graphic
218

HYPERLINK \l "_Toc534792419" 0x01 graphic
Używaj komentarzy PAGEREF _Toc534792419 \h 0x01 graphic
218

HYPERLINK \l "_Toc534792420" 0x01 graphic
Używaj znaku kontynuacji wiersza PAGEREF _Toc534792420 \h 0x01 graphic
219

HYPERLINK \l "_Toc534792421" 0x01 graphic
Używaj krótkich procedur PAGEREF _Toc534792421 \h 0x01 graphic
219

HYPERLINK \l "_Toc534792422" 0x01 graphic
Używaj standaryzowanych konwencji nazewnictwa PAGEREF _Toc534792422 \h 0x01 graphic
219

HYPERLINK \l "_Toc534792423" 0x01 graphic
Nigdy nie używaj Stop PAGEREF _Toc534792423 \h 0x01 graphic
219

HYPERLINK \l "_Toc534792424" 0x01 graphic
Nie usuwaj błędów przy użyciu okien komunikatu PAGEREF _Toc534792424 \h 0x01 graphic
219

HYPERLINK \l "_Toc534792425" 0x01 graphic
Testowanie aplikacji PAGEREF _Toc534792425 \h 0x01 graphic
220

HYPERLINK \l "_Toc534792426" 0x01 graphic
Ćwiczenie technik usuwania błędów PAGEREF _Toc534792426 \h 0x01 graphic
220

HYPERLINK \l "_Toc534792427" 0x01 graphic
Rozdział 13.  Profesjonalna obsługa błędów PAGEREF _Toc534792427 \h 0x01 graphic
221

HYPERLINK \l "_Toc534792428" 0x01 graphic
Usuwanie błędów składni PAGEREF _Toc534792428 \h 0x01 graphic
221

HYPERLINK \l "_Toc534792429" 0x01 graphic
Usuwanie błędów logicznych PAGEREF _Toc534792429 \h 0x01 graphic
223

HYPERLINK \l "_Toc534792430" 0x01 graphic
Usuwanie błędów wykrytych w trakcie użytkowania PAGEREF _Toc534792430 \h 0x01 graphic
223

HYPERLINK \l "_Toc534792431" 0x01 graphic
Proste narzędzie do obsługi błędów PAGEREF _Toc534792431 \h 0x01 graphic
223

HYPERLINK \l "_Toc534792432" 0x01 graphic
On Error GoTo ErrorHandler PAGEREF _Toc534792432 \h 0x01 graphic
223

HYPERLINK \l "_Toc534792433" 0x01 graphic
ExitHere PAGEREF _Toc534792433 \h 0x01 graphic
223

HYPERLINK \l "_Toc534792434" 0x01 graphic
ErrorHandler PAGEREF _Toc534792434 \h 0x01 graphic
224

HYPERLINK \l "_Toc534792435" 0x01 graphic
Resume ExitHere PAGEREF _Toc534792435 \h 0x01 graphic
224

HYPERLINK \l "_Toc534792436" 0x01 graphic
Przebieg programu z narzędziem do obsługi błędów PAGEREF _Toc534792436 \h 0x01 graphic
224

HYPERLINK \l "_Toc534792437" 0x01 graphic
Obiekt Err PAGEREF _Toc534792437 \h 0x01 graphic
225

HYPERLINK \l "_Toc534792438" 0x01 graphic
Err.Clear PAGEREF _Toc534792438 \h 0x01 graphic
225

HYPERLINK \l "_Toc534792439" 0x01 graphic
Err.Raise PAGEREF _Toc534792439 \h 0x01 graphic
225

HYPERLINK \l "_Toc534792440" 0x01 graphic
Reagowanie na błędy PAGEREF _Toc534792440 \h 0x01 graphic
226

HYPERLINK \l "_Toc534792441" 0x01 graphic
Instrukcje Resume PAGEREF _Toc534792441 \h 0x01 graphic
227

HYPERLINK \l "_Toc534792442" 0x01 graphic
Resume PAGEREF _Toc534792442 \h 0x01 graphic
227

HYPERLINK \l "_Toc534792443" 0x01 graphic
Resume Next PAGEREF _Toc534792443 \h 0x01 graphic
227

HYPERLINK \l "_Toc534792444" 0x01 graphic
Uzyskiwanie dodatkowych informacji o błędzie PAGEREF _Toc534792444 \h 0x01 graphic
227

HYPERLINK \l "_Toc534792445" 0x01 graphic
Zaawansowane narzędzie do obsługi błędów PAGEREF _Toc534792445 \h 0x01 graphic
228

HYPERLINK \l "_Toc534792446" 0x01 graphic
Moduł klasowy Error (Obiekt) PAGEREF _Toc534792446 \h 0x01 graphic
229

HYPERLINK \l "_Toc534792447" 0x01 graphic
Właściwości obiektu cError PAGEREF _Toc534792447 \h 0x01 graphic
229

HYPERLINK \l "_Toc534792448" 0x01 graphic
Metody obiektu cError PAGEREF _Toc534792448 \h 0x01 graphic
230

HYPERLINK \l "_Toc534792449" 0x01 graphic
Przeglądanie obiektu cError w Object Browser PAGEREF _Toc534792449 \h 0x01 graphic
231

HYPERLINK \l "_Toc534792450" 0x01 graphic
Przetwarzanie błędu PAGEREF _Toc534792450 \h 0x01 graphic
231

HYPERLINK \l "_Toc534792451" 0x01 graphic
Doświadczenie użytkownika końcowego PAGEREF _Toc534792451 \h 0x01 graphic
232

HYPERLINK \l "_Toc534792452" 0x01 graphic
Identyfikowanie problemów sprzętowych PAGEREF _Toc534792452 \h 0x01 graphic
234

HYPERLINK \l "_Toc534792453" 0x01 graphic
Sporządzanie raportów o błędach PAGEREF _Toc534792453 \h 0x01 graphic
234

HYPERLINK \l "_Toc534792454" 0x01 graphic
Opcje obiektu cError PAGEREF _Toc534792454 \h 0x01 graphic
235

HYPERLINK \l "_Toc534792455" 0x01 graphic
Odwołania do interfejsu API systemu Windows PAGEREF _Toc534792455 \h 0x01 graphic
236

HYPERLINK \l "_Toc534792456" 0x01 graphic
Błędy w różnych aplikacjach PAGEREF _Toc534792456 \h 0x01 graphic
237

HYPERLINK \l "_Toc534792457" 0x01 graphic
Obsługa błędów w procedurach zagnieżdżonych PAGEREF _Toc534792457 \h 0x01 graphic
237

HYPERLINK \l "_Toc534792458" 0x01 graphic
Zaawansowane zagadnienia związane z błędami PAGEREF _Toc534792458 \h 0x01 graphic
237

HYPERLINK \l "_Toc534792459" 0x01 graphic
Procedury zdarzeń związane z błędami PAGEREF _Toc534792459 \h 0x01 graphic
237

HYPERLINK \l "_Toc534792460" 0x01 graphic
On Error GoTo 0 PAGEREF _Toc534792460 \h 0x01 graphic
238

HYPERLINK \l "_Toc534792461" 0x01 graphic
On Error Resume Next PAGEREF _Toc534792461 \h 0x01 graphic
238

HYPERLINK \l "_Toc534792462" 0x01 graphic
Metoda AccessError PAGEREF _Toc534792462 \h 0x01 graphic
238

HYPERLINK \l "_Toc534792463" 0x01 graphic
Inne funkcje związane z błędami PAGEREF _Toc534792463 \h 0x01 graphic
238

HYPERLINK \l "_Toc534792464" 0x01 graphic
Ustawienie opcji wyłapujących błędy PAGEREF _Toc534792464 \h 0x01 graphic
238

HYPERLINK \l "_Toc534792465" 0x01 graphic
Rozdział 14. Optymalizacja aplikacji PAGEREF _Toc534792465 \h 0x01 graphic
240

HYPERLINK \l "_Toc534792466" 0x01 graphic
Ulepszanie podstaw: optymalizacja sprzętu i systemu Windows PAGEREF _Toc534792466 \h 0x01 graphic
241

HYPERLINK \l "_Toc534792467" 0x01 graphic
Instalowanie aplikacji w celu uzyskania optymalnej wydajności PAGEREF _Toc534792467 \h 0x01 graphic
242

HYPERLINK \l "_Toc534792468" 0x01 graphic
Optymalizacja silnika bazy danych Jet PAGEREF _Toc534792468 \h 0x01 graphic
242

HYPERLINK \l "_Toc534792469" 0x01 graphic
Bezpieczne modyfikowanie ustawień silnika Jet PAGEREF _Toc534792469 \h 0x01 graphic
246

HYPERLINK \l "_Toc534792470" 0x01 graphic
Narzędzia służące do pomiaru wydajności PAGEREF _Toc534792470 \h 0x01 graphic
247

HYPERLINK \l "_Toc534792471" 0x01 graphic
Spojrzenie za kulisy PAGEREF _Toc534792471 \h 0x01 graphic
248

HYPERLINK \l "_Toc534792472" 0x01 graphic
Optymalizacja bazy danych od podstaw PAGEREF _Toc534792472 \h 0x01 graphic
249

HYPERLINK \l "_Toc534792473" 0x01 graphic
Projektowanie tabel w celu osiągnięcia poprawy wydajności PAGEREF _Toc534792473 \h 0x01 graphic
249

HYPERLINK \l "_Toc534792474" 0x01 graphic
Normalizacja danych w celu osiągnięcia poprawy wydajności PAGEREF _Toc534792474 \h 0x01 graphic
249

HYPERLINK \l "_Toc534792475" 0x01 graphic
Tworzenie indeksów w celu przyspieszenia pracy kwerend PAGEREF _Toc534792475 \h 0x01 graphic
250

HYPERLINK \l "_Toc534792476" 0x01 graphic
Wcześniejsze tworzenie relacji jako sposób na poprawę wydajności PAGEREF _Toc534792476 \h 0x01 graphic
250

HYPERLINK \l "_Toc534792477" 0x01 graphic
Poprawa wydajności kwerend PAGEREF _Toc534792477 \h 0x01 graphic
250

HYPERLINK \l "_Toc534792478" 0x01 graphic
Wybór typu zestawu wyników zapewniającego optymalną wydajność PAGEREF _Toc534792478 \h 0x01 graphic
252

HYPERLINK \l "_Toc534792479" 0x01 graphic
Zwiększenie szybkości kwerend PAGEREF _Toc534792479 \h 0x01 graphic
253

HYPERLINK \l "_Toc534792480" 0x01 graphic
Przyspieszenie funkcjonowania formularzy PAGEREF _Toc534792480 \h 0x01 graphic
255

HYPERLINK \l "_Toc534792481" 0x01 graphic
Zacznijmy od początku PAGEREF _Toc534792481 \h 0x01 graphic
255

HYPERLINK \l "_Toc534792482" 0x01 graphic
Szybsze pobieranie rysunków PAGEREF _Toc534792482 \h 0x01 graphic
255

HYPERLINK \l "_Toc534792483" 0x01 graphic
Podstawowy, szybki formularz PAGEREF _Toc534792483 \h 0x01 graphic
256

HYPERLINK \l "_Toc534792484" 0x01 graphic
Szybsze drukowanie raportów PAGEREF _Toc534792484 \h 0x01 graphic
258

HYPERLINK \l "_Toc534792485" 0x01 graphic
Pisanie szybkiego kodu PAGEREF _Toc534792485 \h 0x01 graphic
258

HYPERLINK \l "_Toc534792486" 0x01 graphic
Użycie pamięci przez kod PAGEREF _Toc534792486 \h 0x01 graphic
259

HYPERLINK \l "_Toc534792487" 0x01 graphic
Praca z modułami PAGEREF _Toc534792487 \h 0x01 graphic
259

HYPERLINK \l "_Toc534792488" 0x01 graphic
Kompilowanie kodu PAGEREF _Toc534792488 \h 0x01 graphic
259

HYPERLINK \l "_Toc534792489" 0x01 graphic
Dekompilacja PAGEREF _Toc534792489 \h 0x01 graphic
259

HYPERLINK \l "_Toc534792490" 0x01 graphic
Tworzenie pliku MDE PAGEREF _Toc534792490 \h 0x01 graphic
260

HYPERLINK \l "_Toc534792491" 0x01 graphic
Użycie Option Explicit PAGEREF _Toc534792491 \h 0x01 graphic
260

HYPERLINK \l "_Toc534792492" 0x01 graphic
Precyzyjne wybieranie rozmiaru zmiennych PAGEREF _Toc534792492 \h 0x01 graphic
260

HYPERLINK \l "_Toc534792493" 0x01 graphic
Oszczędzanie przestrzeni stosu przy użyciu zmiennych typu string PAGEREF _Toc534792493 \h 0x01 graphic
260

HYPERLINK \l "_Toc534792494" 0x01 graphic
Dokładne określanie typu obiektów PAGEREF _Toc534792494 \h 0x01 graphic
260

HYPERLINK \l "_Toc534792495" 0x01 graphic
Umieszczenie kodu we wnętrzu procedury zamiast odwoływania się do innych funkcji PAGEREF _Toc534792495 \h 0x01 graphic
261

HYPERLINK \l "_Toc534792496" 0x01 graphic
Zmiana True i False PAGEREF _Toc534792496 \h 0x01 graphic
261

HYPERLINK \l "_Toc534792497" 0x01 graphic
Użycie Len() zamiast pustego ciągu PAGEREF _Toc534792497 \h 0x01 graphic
261

HYPERLINK \l "_Toc534792498" 0x01 graphic
Użycie True i False zamiast zera PAGEREF _Toc534792498 \h 0x01 graphic
261

HYPERLINK \l "_Toc534792499" 0x01 graphic
Szybkie odwołania do obiektów PAGEREF _Toc534792499 \h 0x01 graphic
261

HYPERLINK \l "_Toc534792500" 0x01 graphic
Użycie szybkich tablic PAGEREF _Toc534792500 \h 0x01 graphic
262

HYPERLINK \l "_Toc534792501" 0x01 graphic
Używaj stałych, gdy jest to tylko możliwe PAGEREF _Toc534792501 \h 0x01 graphic
262

HYPERLINK \l "_Toc534792502" 0x01 graphic
Właściwe użycie zakładek (Bookmarks) PAGEREF _Toc534792502 \h 0x01 graphic
262

HYPERLINK \l "_Toc534792503" 0x01 graphic
Zamykaj i niszcz PAGEREF _Toc534792503 \h 0x01 graphic
263

HYPERLINK \l "_Toc534792504" 0x01 graphic
Używaj SQL zamiast DAO PAGEREF _Toc534792504 \h 0x01 graphic
263

HYPERLINK \l "_Toc534792505" 0x01 graphic
Użycie indeksowania kolekcji PAGEREF _Toc534792505 \h 0x01 graphic
263

HYPERLINK \l "_Toc534792506" 0x01 graphic
Tworzenie szybszych pętli PAGEREF _Toc534792506 \h 0x01 graphic
263

HYPERLINK \l "_Toc534792507" 0x01 graphic
Usuń z kodu IIF() PAGEREF _Toc534792507 \h 0x01 graphic
264

HYPERLINK \l "_Toc534792508" 0x01 graphic
Porządkowanie Select Case PAGEREF _Toc534792508 \h 0x01 graphic
264

HYPERLINK \l "_Toc534792509" 0x01 graphic
Używaj Execute zamiast RunSQL PAGEREF _Toc534792509 \h 0x01 graphic
264

HYPERLINK \l "_Toc534792510" 0x01 graphic
Używaj A2KU_Timer PAGEREF _Toc534792510 \h 0x01 graphic
264

HYPERLINK \l "_Toc534792511" 0x01 graphic
Testuj wydajność transakcji PAGEREF _Toc534792511 \h 0x01 graphic
264

HYPERLINK \l "_Toc534792512" 0x01 graphic
Kontroluj odświeżanie PAGEREF _Toc534792512 \h 0x01 graphic
264

HYPERLINK \l "_Toc534792513" 0x01 graphic
Używaj wczesnego wiązania i zwracaj uwagę na odniesienia ActiveX PAGEREF _Toc534792513 \h 0x01 graphic
265

HYPERLINK \l "_Toc534792514" 0x01 graphic
Przejście do architektury klient-serwer PAGEREF _Toc534792514 \h 0x01 graphic
265

HYPERLINK \l "_Toc534792515" 0x01 graphic
Chleba i igrzysk PAGEREF _Toc534792515 \h 0x01 graphic
265

HYPERLINK \l "_Toc534792516" 0x01 graphic
Część V Access i architektura klient-serwer PAGEREF _Toc534792516 \h 0x01 graphic
266

HYPERLINK \l "_Toc534792517" 0x01 graphic
Rozdział 15. Wprowadzenie do projektów programu Microsoft Access oraz narzędzi wizualnych PAGEREF _Toc534792517 \h 0x01 graphic
267

HYPERLINK \l "_Toc534792518" 0x01 graphic
Wprowadzenie do projektów programu Microsoft Access PAGEREF _Toc534792518 \h 0x01 graphic
267

HYPERLINK \l "_Toc534792519" 0x01 graphic
Wady i zalety ADP PAGEREF _Toc534792519 \h 0x01 graphic
267

HYPERLINK \l "_Toc534792520" 0x01 graphic
Użycie ADP PAGEREF _Toc534792520 \h 0x01 graphic
268

HYPERLINK \l "_Toc534792521" 0x01 graphic
Tworzenie ADP PAGEREF _Toc534792521 \h 0x01 graphic
268

HYPERLINK \l "_Toc534792522" 0x01 graphic
Nowe okno bazy danych PAGEREF _Toc534792522 \h 0x01 graphic
269

HYPERLINK \l "_Toc534792523" 0x01 graphic
Praca z ADP i istniejącymi bazami danych serwera SQL PAGEREF _Toc534792523 \h 0x01 graphic
270

HYPERLINK \l "_Toc534792524" 0x01 graphic
Praca z tabelami PAGEREF _Toc534792524 \h 0x01 graphic
270

HYPERLINK \l "_Toc534792525" 0x01 graphic
Widoki w serwerze SQL PAGEREF _Toc534792525 \h 0x01 graphic
271

HYPERLINK \l "_Toc534792526" 0x01 graphic
Procedury przechowywane PAGEREF _Toc534792526 \h 0x01 graphic
272

HYPERLINK \l "_Toc534792527" 0x01 graphic
Diagramy bazy danych PAGEREF _Toc534792527 \h 0x01 graphic
272

HYPERLINK \l "_Toc534792528" 0x01 graphic
Formularze, strony, raporty i moduły PAGEREF _Toc534792528 \h 0x01 graphic
273

HYPERLINK \l "_Toc534792529" 0x01 graphic
Zarządzanie serwerem SQL poprzez ADP PAGEREF _Toc534792529 \h 0x01 graphic
273

HYPERLINK \l "_Toc534792530" 0x01 graphic
Składowanie i odtwarzanie PAGEREF _Toc534792530 \h 0x01 graphic
273

HYPERLINK \l "_Toc534792531" 0x01 graphic
Replikacja serwera SQL PAGEREF _Toc534792531 \h 0x01 graphic
274

HYPERLINK \l "_Toc534792532" 0x01 graphic
Bezpieczeństwo PAGEREF _Toc534792532 \h 0x01 graphic
274

HYPERLINK \l "_Toc534792533" 0x01 graphic
Powtórne przyłączenie do bazy serwera SQL PAGEREF _Toc534792533 \h 0x01 graphic
275

HYPERLINK \l "_Toc534792534" 0x01 graphic
Tworzenie projektu opartego na nowej bazie danych PAGEREF _Toc534792534 \h 0x01 graphic
276

HYPERLINK \l "_Toc534792535" 0x01 graphic
Tworzenie tabel PAGEREF _Toc534792535 \h 0x01 graphic
276

HYPERLINK \l "_Toc534792536" 0x01 graphic
Ustawienie właściwości tabeli i indeksów PAGEREF _Toc534792536 \h 0x01 graphic
277

HYPERLINK \l "_Toc534792537" 0x01 graphic
Tworzenie zależności na diagramie bazy danych PAGEREF _Toc534792537 \h 0x01 graphic
277

HYPERLINK \l "_Toc534792538" 0x01 graphic
Tworzenie kaskad poprzez wyzwalacze PAGEREF _Toc534792538 \h 0x01 graphic
278

HYPERLINK \l "_Toc534792539" 0x01 graphic
Tworzenie widoków PAGEREF _Toc534792539 \h 0x01 graphic
278

HYPERLINK \l "_Toc534792540" 0x01 graphic
Tworzenie procedur przechowywanych PAGEREF _Toc534792540 \h 0x01 graphic
279

HYPERLINK \l "_Toc534792541" 0x01 graphic
Tworzenie aplikacji w Accessie PAGEREF _Toc534792541 \h 0x01 graphic
279

HYPERLINK \l "_Toc534792542" 0x01 graphic
Tworzenie plików ADE PAGEREF _Toc534792542 \h 0x01 graphic
279

HYPERLINK \l "_Toc534792543" 0x01 graphic
Zakończenie: przenoszenie bazy danych Access 97 na serwer SQL i do pliku ADP PAGEREF _Toc534792543 \h 0x01 graphic
280

HYPERLINK \l "_Toc534792544" 0x01 graphic
Rozdział 16. Tworzenie interfejsu użytkownika dla Microsoft SQL Server PAGEREF _Toc534792544 \h 0x01 graphic
281

HYPERLINK \l "_Toc534792545" 0x01 graphic
Architektura klient-serwer: OLE DB kontra ODBC PAGEREF _Toc534792545 \h 0x01 graphic
281

HYPERLINK \l "_Toc534792546" 0x01 graphic
Tworzenie połączenia z serwerem SQL PAGEREF _Toc534792546 \h 0x01 graphic
281

HYPERLINK \l "_Toc534792547" 0x01 graphic
Tworzenie źródła danych ODBC (DSN) PAGEREF _Toc534792547 \h 0x01 graphic
282

HYPERLINK \l "_Toc534792548" 0x01 graphic
Łączenie tabel PAGEREF _Toc534792548 \h 0x01 graphic
282

HYPERLINK \l "_Toc534792549" 0x01 graphic
Wady tabel połączonych PAGEREF _Toc534792549 \h 0x01 graphic
283

HYPERLINK \l "_Toc534792550" 0x01 graphic
Połączenie najlepszych metod: wypełnianie tabel podczas startu aplikacji PAGEREF _Toc534792550 \h 0x01 graphic
283

HYPERLINK \l "_Toc534792551" 0x01 graphic
Procedury przechowywane i kwerendy przekazujące PAGEREF _Toc534792551 \h 0x01 graphic
284

HYPERLINK \l "_Toc534792552" 0x01 graphic
Tworzenie raportów opartych na procedurach przechowywanych poprzez zapytania przekazujące PAGEREF _Toc534792552 \h 0x01 graphic
284

HYPERLINK \l "_Toc534792553" 0x01 graphic
Raportowanie z serwera SQL w Accessie PAGEREF _Toc534792553 \h 0x01 graphic
286

HYPERLINK \l "_Toc534792554" 0x01 graphic
Zaawansowane możliwości: przekazywanie parametrów do procedury przechowywanej w czasie działania programu PAGEREF _Toc534792554 \h 0x01 graphic
286

HYPERLINK \l "_Toc534792555" 0x01 graphic
Dodatkowe filtrowanie danych raportu PAGEREF _Toc534792555 \h 0x01 graphic
287

HYPERLINK \l "_Toc534792556" 0x01 graphic
Formularze w aplikacji PAGEREF _Toc534792556 \h 0x01 graphic
288

HYPERLINK \l "_Toc534792557" 0x01 graphic
Formularze związane PAGEREF _Toc534792557 \h 0x01 graphic
288

HYPERLINK \l "_Toc534792558" 0x01 graphic
Formularze niezwiązane PAGEREF _Toc534792558 \h 0x01 graphic
289

HYPERLINK \l "_Toc534792559" 0x01 graphic
Zaawansowane właściwości: dostawca OLE DB dla serwera SQL PAGEREF _Toc534792559 \h 0x01 graphic
290

HYPERLINK \l "_Toc534792560" 0x01 graphic
Następny zestaw wyników PAGEREF _Toc534792560 \h 0x01 graphic
290

HYPERLINK \l "_Toc534792561" 0x01 graphic
Wykonywanie poleceń z parametrami PAGEREF _Toc534792561 \h 0x01 graphic
291

HYPERLINK \l "_Toc534792562" 0x01 graphic
Długa droga PAGEREF _Toc534792562 \h 0x01 graphic
291

HYPERLINK \l "_Toc534792563" 0x01 graphic
Użycie metody CreateParameters PAGEREF _Toc534792563 \h 0x01 graphic
292

HYPERLINK \l "_Toc534792564" 0x01 graphic
Użycie Refresh PAGEREF _Toc534792564 \h 0x01 graphic
292

HYPERLINK \l "_Toc534792565" 0x01 graphic
Obsługa zwracanych wartości PAGEREF _Toc534792565 \h 0x01 graphic
293

HYPERLINK \l "_Toc534792566" 0x01 graphic
Wykonanie procedury bez obiektu Command PAGEREF _Toc534792566 \h 0x01 graphic
294

HYPERLINK \l "_Toc534792567" 0x01 graphic
Użycie klasy Connection PAGEREF _Toc534792567 \h 0x01 graphic
294

HYPERLINK \l "_Toc534792568" 0x01 graphic
Użycie klasy Connection w aplikacji PAGEREF _Toc534792568 \h 0x01 graphic
295

HYPERLINK \l "_Toc534792569" 0x01 graphic
Rozdział 17. Interfejs Accessa 2000 do Oracle'a PAGEREF _Toc534792569 \h 0x01 graphic
296

HYPERLINK \l "_Toc534792570" 0x01 graphic
Dostęp do danych Oracle'a przez Accessa PAGEREF _Toc534792570 \h 0x01 graphic
296

HYPERLINK \l "_Toc534792571" 0x01 graphic
Tabele połączone PAGEREF _Toc534792571 \h 0x01 graphic
297

HYPERLINK \l "_Toc534792572" 0x01 graphic
Tworzenie ciągu połączenia ODBC PAGEREF _Toc534792572 \h 0x01 graphic
297

HYPERLINK \l "_Toc534792573" 0x01 graphic
Tworzenia nazwy źródła danych PAGEREF _Toc534792573 \h 0x01 graphic
297

HYPERLINK \l "_Toc534792574" 0x01 graphic
Koszt połączenia z Oracle'em PAGEREF _Toc534792574 \h 0x01 graphic
298

HYPERLINK \l "_Toc534792575" 0x01 graphic
Kwerendy przekazujące (SPT) PAGEREF _Toc534792575 \h 0x01 graphic
298

HYPERLINK \l "_Toc534792576" 0x01 graphic
Określanie właściwości kwerend przekazujących PAGEREF _Toc534792576 \h 0x01 graphic
299

HYPERLINK \l "_Toc534792577" 0x01 graphic
Składnia kwerend przekazujących PAGEREF _Toc534792577 \h 0x01 graphic
299

HYPERLINK \l "_Toc534792578" 0x01 graphic
Wielkość liter PAGEREF _Toc534792578 \h 0x01 graphic
299

HYPERLINK \l "_Toc534792579" 0x01 graphic
Wyrażenie Select PAGEREF _Toc534792579 \h 0x01 graphic
300

HYPERLINK \l "_Toc534792580" 0x01 graphic
Klauzula WHERE PAGEREF _Toc534792580 \h 0x01 graphic
300

HYPERLINK \l "_Toc534792581" 0x01 graphic
Definiowanie zależności PAGEREF _Toc534792581 \h 0x01 graphic
300

HYPERLINK \l "_Toc534792582" 0x01 graphic
Użycie znaków specjalnych PAGEREF _Toc534792582 \h 0x01 graphic
300

HYPERLINK \l "_Toc534792583" 0x01 graphic
Użycie Null i Not Null PAGEREF _Toc534792583 \h 0x01 graphic
300

HYPERLINK \l "_Toc534792584" 0x01 graphic
Tworzenie wyrażeń Insert PAGEREF _Toc534792584 \h 0x01 graphic
301

HYPERLINK \l "_Toc534792585" 0x01 graphic
Tworzenie wyrażeń Update PAGEREF _Toc534792585 \h 0x01 graphic
301

HYPERLINK \l "_Toc534792586" 0x01 graphic
Użycie Group By/Having PAGEREF _Toc534792586 \h 0x01 graphic
301

HYPERLINK \l "_Toc534792587" 0x01 graphic
Funkcje w Oracle'u i Accessie PAGEREF _Toc534792587 \h 0x01 graphic
301

HYPERLINK \l "_Toc534792588" 0x01 graphic
Ciągi PAGEREF _Toc534792588 \h 0x01 graphic
302

HYPERLINK \l "_Toc534792589" 0x01 graphic
Łączenie PAGEREF _Toc534792589 \h 0x01 graphic
302

HYPERLINK \l "_Toc534792590" 0x01 graphic
Initcap, Lower, Upper PAGEREF _Toc534792590 \h 0x01 graphic
302

HYPERLINK \l "_Toc534792591" 0x01 graphic
Instr PAGEREF _Toc534792591 \h 0x01 graphic
303

HYPERLINK \l "_Toc534792592" 0x01 graphic
LTrim/RTrim PAGEREF _Toc534792592 \h 0x01 graphic
303

HYPERLINK \l "_Toc534792593" 0x01 graphic
Soundex PAGEREF _Toc534792593 \h 0x01 graphic
304

HYPERLINK \l "_Toc534792594" 0x01 graphic
Substr PAGEREF _Toc534792594 \h 0x01 graphic
304

HYPERLINK \l "_Toc534792595" 0x01 graphic
Decode PAGEREF _Toc534792595 \h 0x01 graphic
305

HYPERLINK \l "_Toc534792596" 0x01 graphic
Obliczenia w Oracle'u PAGEREF _Toc534792596 \h 0x01 graphic
305

HYPERLINK \l "_Toc534792597" 0x01 graphic
Ceil() PAGEREF _Toc534792597 \h 0x01 graphic
305

HYPERLINK \l "_Toc534792598" 0x01 graphic
Floor() PAGEREF _Toc534792598 \h 0x01 graphic
305

HYPERLINK \l "_Toc534792599" 0x01 graphic
Nvl() PAGEREF _Toc534792599 \h 0x01 graphic
306

HYPERLINK \l "_Toc534792600" 0x01 graphic
Round() PAGEREF _Toc534792600 \h 0x01 graphic
306

HYPERLINK \l "_Toc534792601" 0x01 graphic
Sign() PAGEREF _Toc534792601 \h 0x01 graphic
306

HYPERLINK \l "_Toc534792602" 0x01 graphic
Trunc() PAGEREF _Toc534792602 \h 0x01 graphic
306

HYPERLINK \l "_Toc534792603" 0x01 graphic
Greatest/Least PAGEREF _Toc534792603 \h 0x01 graphic
306

HYPERLINK \l "_Toc534792604" 0x01 graphic
Obliczenia na datach PAGEREF _Toc534792604 \h 0x01 graphic
307

HYPERLINK \l "_Toc534792605" 0x01 graphic
Arytmetyka PAGEREF _Toc534792605 \h 0x01 graphic
307

HYPERLINK \l "_Toc534792606" 0x01 graphic
Sysdate PAGEREF _Toc534792606 \h 0x01 graphic
307

HYPERLINK \l "_Toc534792607" 0x01 graphic
Add_Months PAGEREF _Toc534792607 \h 0x01 graphic
307

HYPERLINK \l "_Toc534792608" 0x01 graphic
Months_Between PAGEREF _Toc534792608 \h 0x01 graphic
307

HYPERLINK \l "_Toc534792609" 0x01 graphic
Next_Day() PAGEREF _Toc534792609 \h 0x01 graphic
308

HYPERLINK \l "_Toc534792610" 0x01 graphic
To_Date() PAGEREF _Toc534792610 \h 0x01 graphic
308

HYPERLINK \l "_Toc534792611" 0x01 graphic
Problem roku 2000 PAGEREF _Toc534792611 \h 0x01 graphic
308

HYPERLINK \l "_Toc534792612" 0x01 graphic
Poznajemy widoki i procedury przechowywane PAGEREF _Toc534792612 \h 0x01 graphic
309

HYPERLINK \l "_Toc534792613" 0x01 graphic
Tworzenie widoków PAGEREF _Toc534792613 \h 0x01 graphic
309

HYPERLINK \l "_Toc534792614" 0x01 graphic
Połączenie z Oracle'em poprzez ADO PAGEREF _Toc534792614 \h 0x01 graphic
310

HYPERLINK \l "_Toc534792615" 0x01 graphic
Parametry PAGEREF _Toc534792615 \h 0x01 graphic
311

HYPERLINK \l "_Toc534792616" 0x01 graphic
Tworzenie procedur przechowywanych PAGEREF _Toc534792616 \h 0x01 graphic
312

HYPERLINK \l "_Toc534792617" 0x01 graphic
Uruchamianie procedury PAGEREF _Toc534792617 \h 0x01 graphic
313

HYPERLINK \l "_Toc534792618" 0x01 graphic
Tworzenie niezwiązanego interfejsu do Oracle'a PAGEREF _Toc534792618 \h 0x01 graphic
313

HYPERLINK \l "_Toc534792619" 0x01 graphic
Tworzenie niezwiązanego interfejsu PAGEREF _Toc534792619 \h 0x01 graphic
314

HYPERLINK \l "_Toc534792620" 0x01 graphic
Tworzenie zmiennych globalnych PAGEREF _Toc534792620 \h 0x01 graphic
314

HYPERLINK \l "_Toc534792621" 0x01 graphic
Ładowanie danych i inicjalizacja formularza PAGEREF _Toc534792621 \h 0x01 graphic
315

HYPERLINK \l "_Toc534792622" 0x01 graphic
Programowanie przycisków sterujących PAGEREF _Toc534792622 \h 0x01 graphic
315

HYPERLINK \l "_Toc534792623" 0x01 graphic
Zmiana danych Oracle'a przy użyciu formularza PAGEREF _Toc534792623 \h 0x01 graphic
317

HYPERLINK \l "_Toc534792624" 0x01 graphic
Wstawienie danych do Oracle'a przy użyciu formularza PAGEREF _Toc534792624 \h 0x01 graphic
318

HYPERLINK \l "_Toc534792625" 0x01 graphic
Zapisywanie danych do Oracle'a przy użyciu formularza PAGEREF _Toc534792625 \h 0x01 graphic
318

HYPERLINK \l "_Toc534792626" 0x01 graphic
Usuwanie danych przy użyciu formularza PAGEREF _Toc534792626 \h 0x01 graphic
319

HYPERLINK \l "_Toc534792627" 0x01 graphic
Zamykanie połączenia z Oracle'em PAGEREF _Toc534792627 \h 0x01 graphic
319

HYPERLINK \l "_Toc534792628" 0x01 graphic
Część VI Współoperatywność PAGEREF _Toc534792628 \h 0x01 graphic
321

HYPERLINK \l "_Toc534792629" 0x01 graphic
Rozdział 18. Użycie automatyzacji ActiveX PAGEREF _Toc534792629 \h 0x01 graphic
322

HYPERLINK \l "_Toc534792630" 0x01 graphic
Co to jest automatyzacja ActiveX PAGEREF _Toc534792630 \h 0x01 graphic
322

HYPERLINK \l "_Toc534792631" 0x01 graphic
Dlaczego używamy automatyzacji PAGEREF _Toc534792631 \h 0x01 graphic
322

HYPERLINK \l "_Toc534792632" 0x01 graphic
Różnice między serwerem automatyzacji a klientem automatyzacji PAGEREF _Toc534792632 \h 0x01 graphic
323

HYPERLINK \l "_Toc534792633" 0x01 graphic
Określanie zasobów wymaganych przez automatyzację PAGEREF _Toc534792633 \h 0x01 graphic
323

HYPERLINK \l "_Toc534792634" 0x01 graphic
Wielka trójka PAGEREF _Toc534792634 \h 0x01 graphic
323

HYPERLINK \l "_Toc534792635" 0x01 graphic
Tworzenie i ustanowienie odwołania do innej aplikacji PAGEREF _Toc534792635 \h 0x01 graphic
323

HYPERLINK \l "_Toc534792636" 0x01 graphic
Ustanawianie odwołania do innej aplikacji PAGEREF _Toc534792636 \h 0x01 graphic
323

HYPERLINK \l "_Toc534792637" 0x01 graphic
Przegląd obiektów, właściwości i metod PAGEREF _Toc534792637 \h 0x01 graphic
324

HYPERLINK \l "_Toc534792638" 0x01 graphic
Poznajemy strukturę obiektów PAGEREF _Toc534792638 \h 0x01 graphic
324

HYPERLINK \l "_Toc534792639" 0x01 graphic
Użycie narzędzia Object Browser PAGEREF _Toc534792639 \h 0x01 graphic
324

HYPERLINK \l "_Toc534792640" 0x01 graphic
Tworzenie zmiennej obiektowej PAGEREF _Toc534792640 \h 0x01 graphic
326

HYPERLINK \l "_Toc534792641" 0x01 graphic
Odwołanie do pracującej aplikacji PAGEREF _Toc534792641 \h 0x01 graphic
326

HYPERLINK \l "_Toc534792642" 0x01 graphic
Przypisywanie zmiennej obiektowej do aplikacji PAGEREF _Toc534792642 \h 0x01 graphic
326

HYPERLINK \l "_Toc534792643" 0x01 graphic
Tworzenie egzemplarza aplikacji PAGEREF _Toc534792643 \h 0x01 graphic
327

HYPERLINK \l "_Toc534792644" 0x01 graphic
Jednoczesne użycie funkcji GetObject i New PAGEREF _Toc534792644 \h 0x01 graphic
327

HYPERLINK \l "_Toc534792645" 0x01 graphic
Użycie wczesnego i późnego łączenia typów PAGEREF _Toc534792645 \h 0x01 graphic
327

HYPERLINK \l "_Toc534792646" 0x01 graphic
Użycie funkcji CreateObject PAGEREF _Toc534792646 \h 0x01 graphic
328

HYPERLINK \l "_Toc534792647" 0x01 graphic
Kiedy nie można uzyskać odwołania do aplikacji PAGEREF _Toc534792647 \h 0x01 graphic
328

HYPERLINK \l "_Toc534792648" 0x01 graphic
Co wtedy, gdy użytkownik ma inną wersję aplikacji? PAGEREF _Toc534792648 \h 0x01 graphic
328

HYPERLINK \l "_Toc534792649" 0x01 graphic
Użycie metod i właściwości obiektów automatyzacji PAGEREF _Toc534792649 \h 0x01 graphic
329

HYPERLINK \l "_Toc534792650" 0x01 graphic
Ustawianie właściwości obiektu PAGEREF _Toc534792650 \h 0x01 graphic
329

HYPERLINK \l "_Toc534792651" 0x01 graphic
Wykonywanie metod obiektów PAGEREF _Toc534792651 \h 0x01 graphic
329

HYPERLINK \l "_Toc534792652" 0x01 graphic
Zwalnianie obiektów automatyzacji PAGEREF _Toc534792652 \h 0x01 graphic
329

HYPERLINK \l "_Toc534792653" 0x01 graphic
Łączymy wszystko razem PAGEREF _Toc534792653 \h 0x01 graphic
329

HYPERLINK \l "_Toc534792654" 0x01 graphic
Zamykanie aplikacji serwera automatyzacji PAGEREF _Toc534792654 \h 0x01 graphic
330

HYPERLINK \l "_Toc534792655" 0x01 graphic
Użycie właściwości UserControl do sprawdzenia, w jaki sposób została otwarta aplikacja PAGEREF _Toc534792655 \h 0x01 graphic
330

HYPERLINK \l "_Toc534792656" 0x01 graphic
Użycie WithEvents w celu udostępnienia zdarzeń serwera automatyzacji PAGEREF _Toc534792656 \h 0x01 graphic
331

HYPERLINK \l "_Toc534792657" 0x01 graphic
Uruchamiamy WithEvents PAGEREF _Toc534792657 \h 0x01 graphic
331

HYPERLINK \l "_Toc534792658" 0x01 graphic
Techniki i wskazówki do automatyzacji PAGEREF _Toc534792658 \h 0x01 graphic
332

HYPERLINK \l "_Toc534792659" 0x01 graphic
Ustanowienie odwołania, użycie wczesnego wiązania typów i słowa kluczowego New PAGEREF _Toc534792659 \h 0x01 graphic
332

HYPERLINK \l "_Toc534792660" 0x01 graphic
Użycie istniejącego egzemplarza aplikacji, jeżeli jest ona uruchomiona PAGEREF _Toc534792660 \h 0x01 graphic
333

HYPERLINK \l "_Toc534792661" 0x01 graphic
Wyłącz odświeżanie ekranu PAGEREF _Toc534792661 \h 0x01 graphic
333

HYPERLINK \l "_Toc534792662" 0x01 graphic
Informacja o przetwarzaniu PAGEREF _Toc534792662 \h 0x01 graphic
333

HYPERLINK \l "_Toc534792663" 0x01 graphic
Wykonywanie programu przez serwer automatyzacji PAGEREF _Toc534792663 \h 0x01 graphic
334

HYPERLINK \l "_Toc534792664" 0x01 graphic
Użycie konstrukcji With/End With PAGEREF _Toc534792664 \h 0x01 graphic
334

HYPERLINK \l "_Toc534792665" 0x01 graphic
Zwalnianie zmiennych obiektowych PAGEREF _Toc534792665 \h 0x01 graphic
334

HYPERLINK \l "_Toc534792666" 0x01 graphic
Nie wyświetlaj okien dialogowych i komunikatów PAGEREF _Toc534792666 \h 0x01 graphic
334

HYPERLINK \l "_Toc534792667" 0x01 graphic
Używaj obsługi błędów PAGEREF _Toc534792667 \h 0x01 graphic
334

HYPERLINK \l "_Toc534792668" 0x01 graphic
Rozdział 19. Integracja z Office 2000 PAGEREF _Toc534792668 \h 0x01 graphic
335

HYPERLINK \l "_Toc534792669" 0x01 graphic
Powody integracji z Office 2000 PAGEREF _Toc534792669 \h 0x01 graphic
336

HYPERLINK \l "_Toc534792670" 0x01 graphic
Użycie Worda PAGEREF _Toc534792670 \h 0x01 graphic
336

HYPERLINK \l "_Toc534792671" 0x01 graphic
Użycie Excela PAGEREF _Toc534792671 \h 0x01 graphic
336

HYPERLINK \l "_Toc534792672" 0x01 graphic
Użycie PowerPoint PAGEREF _Toc534792672 \h 0x01 graphic
336

HYPERLINK \l "_Toc534792673" 0x01 graphic
Użycie Outlooka PAGEREF _Toc534792673 \h 0x01 graphic
336

HYPERLINK \l "_Toc534792674" 0x01 graphic
Użycie Graph PAGEREF _Toc534792674 \h 0x01 graphic
337

HYPERLINK \l "_Toc534792675" 0x01 graphic
Użycie MapPoint PAGEREF _Toc534792675 \h 0x01 graphic
337

HYPERLINK \l "_Toc534792676" 0x01 graphic
Użycie FrontPage PAGEREF _Toc534792676 \h 0x01 graphic
337

HYPERLINK \l "_Toc534792677" 0x01 graphic
Użycie Bindera PAGEREF _Toc534792677 \h 0x01 graphic
337

HYPERLINK \l "_Toc534792678" 0x01 graphic
Wybór właściwego narzędzia PAGEREF _Toc534792678 \h 0x01 graphic
337

HYPERLINK \l "_Toc534792679" 0x01 graphic
Wszędzie VBA PAGEREF _Toc534792679 \h 0x01 graphic
337

HYPERLINK \l "_Toc534792680" 0x01 graphic
Użycie rejestratora makr do pisania kodu PAGEREF _Toc534792680 \h 0x01 graphic
338

HYPERLINK \l "_Toc534792681" 0x01 graphic
Użycie makr automatycznych PAGEREF _Toc534792681 \h 0x01 graphic
339

HYPERLINK \l "_Toc534792682" 0x01 graphic
Microsoft Forms PAGEREF _Toc534792682 \h 0x01 graphic
339

HYPERLINK \l "_Toc534792683" 0x01 graphic
Object Browser PAGEREF _Toc534792683 \h 0x01 graphic
339

HYPERLINK \l "_Toc534792684" 0x01 graphic
Nazwy klas aplikacji Office PAGEREF _Toc534792684 \h 0x01 graphic
340

HYPERLINK \l "_Toc534792685" 0x01 graphic
Przykład automatyzacji PAGEREF _Toc534792685 \h 0x01 graphic
340

HYPERLINK \l "_Toc534792686" 0x01 graphic
Automatyzacja Worda PAGEREF _Toc534792686 \h 0x01 graphic
341

HYPERLINK \l "_Toc534792687" 0x01 graphic
Model obiektów Worda PAGEREF _Toc534792687 \h 0x01 graphic
342

HYPERLINK \l "_Toc534792688" 0x01 graphic
Użycie szablonów Worda PAGEREF _Toc534792688 \h 0x01 graphic
342

HYPERLINK \l "_Toc534792689" 0x01 graphic
Wstawianie danych do dokumentu Worda PAGEREF _Toc534792689 \h 0x01 graphic
343

HYPERLINK \l "_Toc534792690" 0x01 graphic
Korespondencja seryjna PAGEREF _Toc534792690 \h 0x01 graphic
343

HYPERLINK \l "_Toc534792691" 0x01 graphic
Zakładki PAGEREF _Toc534792691 \h 0x01 graphic
345

HYPERLINK \l "_Toc534792692" 0x01 graphic
Zastępowanie PAGEREF _Toc534792692 \h 0x01 graphic
345

HYPERLINK \l "_Toc534792693" 0x01 graphic
Przykłady kodu automatyzacji Worda PAGEREF _Toc534792693 \h 0x01 graphic
345

HYPERLINK \l "_Toc534792694" 0x01 graphic
Formatowanie dokumentów PAGEREF _Toc534792694 \h 0x01 graphic
345

HYPERLINK \l "_Toc534792695" 0x01 graphic
Użycie stylów dokumentu PAGEREF _Toc534792695 \h 0x01 graphic
346

HYPERLINK \l "_Toc534792696" 0x01 graphic
Autokorekta PAGEREF _Toc534792696 \h 0x01 graphic
346

HYPERLINK \l "_Toc534792697" 0x01 graphic
Autotekst PAGEREF _Toc534792697 \h 0x01 graphic
346

HYPERLINK \l "_Toc534792698" 0x01 graphic
Autopodsumowanie PAGEREF _Toc534792698 \h 0x01 graphic
346

HYPERLINK \l "_Toc534792699" 0x01 graphic
Widoki dokumentu PAGEREF _Toc534792699 \h 0x01 graphic
347

HYPERLINK \l "_Toc534792700" 0x01 graphic
Spis treści PAGEREF _Toc534792700 \h 0x01 graphic
347

HYPERLINK \l "_Toc534792701" 0x01 graphic
Przypisy PAGEREF _Toc534792701 \h 0x01 graphic
347

HYPERLINK \l "_Toc534792702" 0x01 graphic
Nagłówki PAGEREF _Toc534792702 \h 0x01 graphic
347

HYPERLINK \l "_Toc534792703" 0x01 graphic
Stopki PAGEREF _Toc534792703 \h 0x01 graphic
347

HYPERLINK \l "_Toc534792704" 0x01 graphic
Hiperłącza PAGEREF _Toc534792704 \h 0x01 graphic
347

HYPERLINK \l "_Toc534792705" 0x01 graphic
Tworzenie tabel PAGEREF _Toc534792705 \h 0x01 graphic
348

HYPERLINK \l "_Toc534792706" 0x01 graphic
Ustawienia strony PAGEREF _Toc534792706 \h 0x01 graphic
348

HYPERLINK \l "_Toc534792707" 0x01 graphic
Podgląd wydruku PAGEREF _Toc534792707 \h 0x01 graphic
348

HYPERLINK \l "_Toc534792708" 0x01 graphic
Drukowanie dokumentów, kopert i etykiet PAGEREF _Toc534792708 \h 0x01 graphic
348

HYPERLINK \l "_Toc534792709" 0x01 graphic
Pola PAGEREF _Toc534792709 \h 0x01 graphic
348

HYPERLINK \l "_Toc534792710" 0x01 graphic
Informacje o dokumencie PAGEREF _Toc534792710 \h 0x01 graphic
349

HYPERLINK \l "_Toc534792711" 0x01 graphic
Inne możliwości Worda PAGEREF _Toc534792711 \h 0x01 graphic
350

HYPERLINK \l "_Toc534792712" 0x01 graphic
Automatyzacja Excela PAGEREF _Toc534792712 \h 0x01 graphic
350

HYPERLINK \l "_Toc534792713" 0x01 graphic
Model obiektów Excela PAGEREF _Toc534792713 \h 0x01 graphic
350

HYPERLINK \l "_Toc534792714" 0x01 graphic
Przykłady automatyzacji Excela PAGEREF _Toc534792714 \h 0x01 graphic
351

HYPERLINK \l "_Toc534792715" 0x01 graphic
Formatowanie dokumentów Excela PAGEREF _Toc534792715 \h 0x01 graphic
351

HYPERLINK \l "_Toc534792716" 0x01 graphic
Tworzenie wykresów PAGEREF _Toc534792716 \h 0x01 graphic
351

HYPERLINK \l "_Toc534792717" 0x01 graphic
Użycie właściwości Parent PAGEREF _Toc534792717 \h 0x01 graphic
352

HYPERLINK \l "_Toc534792718" 0x01 graphic
Automatyzacja PowerPoint PAGEREF _Toc534792718 \h 0x01 graphic
352

HYPERLINK \l "_Toc534792719" 0x01 graphic
Model obiektów PowerPoint PAGEREF _Toc534792719 \h 0x01 graphic
353

HYPERLINK \l "_Toc534792720" 0x01 graphic
Przykłady automatyzacji PowerPoint PAGEREF _Toc534792720 \h 0x01 graphic
353

HYPERLINK \l "_Toc534792721" 0x01 graphic
Dodanie slajdu PAGEREF _Toc534792721 \h 0x01 graphic
353

HYPERLINK \l "_Toc534792722" 0x01 graphic
Dodanie efektu przejścia PAGEREF _Toc534792722 \h 0x01 graphic
354

HYPERLINK \l "_Toc534792723" 0x01 graphic
Wstawianie danych i formatowanie slajdów PAGEREF _Toc534792723 \h 0x01 graphic
354

HYPERLINK \l "_Toc534792724" 0x01 graphic
Wstawienie rysunku do slajdu PAGEREF _Toc534792724 \h 0x01 graphic
354

HYPERLINK \l "_Toc534792725" 0x01 graphic
Uruchamianie prezentacji PAGEREF _Toc534792725 \h 0x01 graphic
354

HYPERLINK \l "_Toc534792726" 0x01 graphic
Automatyzacja Outlook PAGEREF _Toc534792726 \h 0x01 graphic
354

HYPERLINK \l "_Toc534792727" 0x01 graphic
Model obiektów Outlook PAGEREF _Toc534792727 \h 0x01 graphic
355

HYPERLINK \l "_Toc534792728" 0x01 graphic
Przykłady automatyzacji Outlook PAGEREF _Toc534792728 \h 0x01 graphic
355

HYPERLINK \l "_Toc534792729" 0x01 graphic
Dodawanie i wyświetlanie folderów PAGEREF _Toc534792729 \h 0x01 graphic
355

HYPERLINK \l "_Toc534792730" 0x01 graphic
Dodawanie nowego zadania i wyświetlenie zadań PAGEREF _Toc534792730 \h 0x01 graphic
356

HYPERLINK \l "_Toc534792731" 0x01 graphic
Tworzenie wiadomości e-mail z załącznikiem PAGEREF _Toc534792731 \h 0x01 graphic
356

HYPERLINK \l "_Toc534792732" 0x01 graphic
Tworzenie elementów Outlooka PAGEREF _Toc534792732 \h 0x01 graphic
357

HYPERLINK \l "_Toc534792733" 0x01 graphic
Wyświetlanie domyślnych folderów PAGEREF _Toc534792733 \h 0x01 graphic
357

HYPERLINK \l "_Toc534792734" 0x01 graphic
Wyświetlenie foldera publicznego PAGEREF _Toc534792734 \h 0x01 graphic
357

HYPERLINK \l "_Toc534792735" 0x01 graphic
Szukanie elementu w Outlooku PAGEREF _Toc534792735 \h 0x01 graphic
357

HYPERLINK \l "_Toc534792736" 0x01 graphic
Filtrowanie elementów w Outlooku PAGEREF _Toc534792736 \h 0x01 graphic
357

HYPERLINK \l "_Toc534792737" 0x01 graphic
Automatyzacja Graph PAGEREF _Toc534792737 \h 0x01 graphic
358

HYPERLINK \l "_Toc534792738" 0x01 graphic
Model obiektów Graph PAGEREF _Toc534792738 \h 0x01 graphic
358

HYPERLINK \l "_Toc534792739" 0x01 graphic
Tworzenie wykresu PAGEREF _Toc534792739 \h 0x01 graphic
358

HYPERLINK \l "_Toc534792740" 0x01 graphic
Przykłady automatyzacji Graph PAGEREF _Toc534792740 \h 0x01 graphic
359

HYPERLINK \l "_Toc534792741" 0x01 graphic
Automatyzacja MapPoint PAGEREF _Toc534792741 \h 0x01 graphic
359

HYPERLINK \l "_Toc534792742" 0x01 graphic
Model obiektów MapPoint PAGEREF _Toc534792742 \h 0x01 graphic
359

HYPERLINK \l "_Toc534792743" 0x01 graphic
Przykłady automatyzacji MapPoint PAGEREF _Toc534792743 \h 0x01 graphic
360

HYPERLINK \l "_Toc534792744" 0x01 graphic
Automatyzacja FrontPage PAGEREF _Toc534792744 \h 0x01 graphic
360

HYPERLINK \l "_Toc534792745" 0x01 graphic
Model obiektów FrontPage PAGEREF _Toc534792745 \h 0x01 graphic
360

HYPERLINK \l "_Toc534792746" 0x01 graphic
Przykłady automatyzacji FrontPage PAGEREF _Toc534792746 \h 0x01 graphic
361

HYPERLINK \l "_Toc534792747" 0x01 graphic
Automatyzacja Bindera PAGEREF _Toc534792747 \h 0x01 graphic
362

HYPERLINK \l "_Toc534792748" 0x01 graphic
Model obiektów Bindera PAGEREF _Toc534792748 \h 0x01 graphic
362

HYPERLINK \l "_Toc534792749" 0x01 graphic
Przykłady automatyzacji Bindera PAGEREF _Toc534792749 \h 0x01 graphic
362

HYPERLINK \l "_Toc534792750" 0x01 graphic
Zabezpieczanie dokumentów, szablonów i kodu programu PAGEREF _Toc534792750 \h 0x01 graphic
363

HYPERLINK \l "_Toc534792751" 0x01 graphic
Rozdział 20. Użycie Visual Basic z Accessem PAGEREF _Toc534792751 \h 0x01 graphic
364

HYPERLINK \l "_Toc534792752" 0x01 graphic
Tworzenie komponentów ActiveX PAGEREF _Toc534792752 \h 0x01 graphic
364

HYPERLINK \l "_Toc534792753" 0x01 graphic
Czym są komponenty ActiveX PAGEREF _Toc534792753 \h 0x01 graphic
364

HYPERLINK \l "_Toc534792754" 0x01 graphic
Różnice między ActiveX EXE i ActiveX DLL PAGEREF _Toc534792754 \h 0x01 graphic
365

HYPERLINK \l "_Toc534792755" 0x01 graphic
Tworzenie komponentu ActiveX PAGEREF _Toc534792755 \h 0x01 graphic
365

HYPERLINK \l "_Toc534792756" 0x01 graphic
Kompilowanie biblioteki DLL PAGEREF _Toc534792756 \h 0x01 graphic
367

HYPERLINK \l "_Toc534792757" 0x01 graphic
Użycie komponentu ActiveX cSound PAGEREF _Toc534792757 \h 0x01 graphic
368

HYPERLINK \l "_Toc534792758" 0x01 graphic
Użycie komponentu w innych aplikacjach PAGEREF _Toc534792758 \h 0x01 graphic
369

HYPERLINK \l "_Toc534792759" 0x01 graphic
Dystrybucja komponentów ActiveX PAGEREF _Toc534792759 \h 0x01 graphic
369

HYPERLINK \l "_Toc534792760" 0x01 graphic
Instalowanie komponentu PAGEREF _Toc534792760 \h 0x01 graphic
369

HYPERLINK \l "_Toc534792761" 0x01 graphic
Tworzenie programu instalacyjnego przy użyciu Package and Deployment Wizard PAGEREF _Toc534792761 \h 0x01 graphic
369

HYPERLINK \l "_Toc534792762" 0x01 graphic
Rozprowadzanie plików przy użyciu kreatora Package and Deployment Wizard PAGEREF _Toc534792762 \h 0x01 graphic
373

HYPERLINK \l "_Toc534792763" 0x01 graphic
Wpisy w rejestrze PAGEREF _Toc534792763 \h 0x01 graphic
375

HYPERLINK \l "_Toc534792764" 0x01 graphic
Zgodność komponentów PAGEREF _Toc534792764 \h 0x01 graphic
375

HYPERLINK \l "_Toc534792765" 0x01 graphic
Komponent obsługi błędów PAGEREF _Toc534792765 \h 0x01 graphic
376

HYPERLINK \l "_Toc534792766" 0x01 graphic
Dane modułu obsługi błędów PAGEREF _Toc534792766 \h 0x01 graphic
377

HYPERLINK \l "_Toc534792767" 0x01 graphic
Komponent cError PAGEREF _Toc534792767 \h 0x01 graphic
377

HYPERLINK \l "_Toc534792768" 0x01 graphic
Tworzenie formantów ActiveX PAGEREF _Toc534792768 \h 0x01 graphic
377

HYPERLINK \l "_Toc534792769" 0x01 graphic
Rodzaje formantów ActiveX PAGEREF _Toc534792769 \h 0x01 graphic
377

HYPERLINK \l "_Toc534792770" 0x01 graphic
Atrybuty formantów ActiveX PAGEREF _Toc534792770 \h 0x01 graphic
378

HYPERLINK \l "_Toc534792771" 0x01 graphic
Tworzenie programowych formantów ActiveX PAGEREF _Toc534792771 \h 0x01 graphic
378

HYPERLINK \l "_Toc534792772" 0x01 graphic
Utworzenie projektu dla formantu ActiveX PAGEREF _Toc534792772 \h 0x01 graphic
378

HYPERLINK \l "_Toc534792773" 0x01 graphic
Tworzenie interfejsu PAGEREF _Toc534792773 \h 0x01 graphic
379

HYPERLINK \l "_Toc534792774" 0x01 graphic
Ustawianie właściwości projektu PAGEREF _Toc534792774 \h 0x01 graphic
380

HYPERLINK \l "_Toc534792775" 0x01 graphic
Zapisywanie projektu PAGEREF _Toc534792775 \h 0x01 graphic
380

HYPERLINK \l "_Toc534792776" 0x01 graphic
Dodawanie metod i zdarzeń PAGEREF _Toc534792776 \h 0x01 graphic
380

HYPERLINK \l "_Toc534792777" 0x01 graphic
Użycie kreatora ActiveX Control Interface Wizard PAGEREF _Toc534792777 \h 0x01 graphic
380

HYPERLINK \l "_Toc534792778" 0x01 graphic
Dodajemy kod do formantu ActiveX PAGEREF _Toc534792778 \h 0x01 graphic
382

HYPERLINK \l "_Toc534792779" 0x01 graphic
Wywoływanie zdarzenia PAGEREF _Toc534792779 \h 0x01 graphic
382

HYPERLINK \l "_Toc534792780" 0x01 graphic
Użycie zdarzenia ReadProperties PAGEREF _Toc534792780 \h 0x01 graphic
383

HYPERLINK \l "_Toc534792781" 0x01 graphic
Testowanie formantu ActiveX w Visual Basicu PAGEREF _Toc534792781 \h 0x01 graphic
383

HYPERLINK \l "_Toc534792782" 0x01 graphic
Użycie formantu Timer na formularzu Accessa PAGEREF _Toc534792782 \h 0x01 graphic
385

HYPERLINK \l "_Toc534792783" 0x01 graphic
Tworzenie wielu formantów Timer PAGEREF _Toc534792783 \h 0x01 graphic
385

HYPERLINK \l "_Toc534792784" 0x01 graphic
Rozprowadzanie formantu ActiveX Timer PAGEREF _Toc534792784 \h 0x01 graphic
386

HYPERLINK \l "_Toc534792785" 0x01 graphic
Tworzenie okna właściwości PAGEREF _Toc534792785 \h 0x01 graphic
386

HYPERLINK \l "_Toc534792786" 0x01 graphic
Użycie okna właściwości PAGEREF _Toc534792786 \h 0x01 graphic
387

HYPERLINK \l "_Toc534792787" 0x01 graphic
Użycie formantu Timer w innych aplikacjach PAGEREF _Toc534792787 \h 0x01 graphic
387

HYPERLINK \l "_Toc534792788" 0x01 graphic
Tworzenie formantów ActiveX interfejsu użytkownika PAGEREF _Toc534792788 \h 0x01 graphic
387

HYPERLINK \l "_Toc534792789" 0x01 graphic
Tworzenie interfejsu użytkownika PAGEREF _Toc534792789 \h 0x01 graphic
387

HYPERLINK \l "_Toc534792790" 0x01 graphic
Ustawienie właściwości projektu PAGEREF _Toc534792790 \h 0x01 graphic
388

HYPERLINK \l "_Toc534792791" 0x01 graphic
Zapisywanie projektu PAGEREF _Toc534792791 \h 0x01 graphic
388

HYPERLINK \l "_Toc534792792" 0x01 graphic
Testowanie formantu na formularzu Visual Basica PAGEREF _Toc534792792 \h 0x01 graphic
388

HYPERLINK \l "_Toc534792793" 0x01 graphic
Użycie formantu cSlider na formularzu Accessa PAGEREF _Toc534792793 \h 0x01 graphic
388

HYPERLINK \l "_Toc534792794" 0x01 graphic
Dystrybucja formantu ActiveX cSlider PAGEREF _Toc534792794 \h 0x01 graphic
389

HYPERLINK \l "_Toc534792795" 0x01 graphic
Użycie formantu cSlider w innych aplikacjach PAGEREF _Toc534792795 \h 0x01 graphic
389

HYPERLINK \l "_Toc534792796" 0x01 graphic
Tworzenie instalacyjnego pakietu internetowego PAGEREF _Toc534792796 \h 0x01 graphic
389

HYPERLINK \l "_Toc534792797" 0x01 graphic
Użycie formantu cSlider na stronie WWW PAGEREF _Toc534792797 \h 0x01 graphic
391

HYPERLINK \l "_Toc534792798" 0x01 graphic
Część VII Zagadnienia wielodostępu PAGEREF _Toc534792798 \h 0x01 graphic
393

HYPERLINK \l "_Toc534792799" 0x01 graphic
Rozdział 21. Zagadnienia wielodostępu, serwer plików, blokowanie PAGEREF _Toc534792799 \h 0x01 graphic
394

HYPERLINK \l "_Toc534792800" 0x01 graphic
Konflikty PAGEREF _Toc534792800 \h 0x01 graphic
394

HYPERLINK \l "_Toc534792801" 0x01 graphic
Konfiguracja PAGEREF _Toc534792801 \h 0x01 graphic
395

HYPERLINK \l "_Toc534792802" 0x01 graphic
Access i blokady Jet PAGEREF _Toc534792802 \h 0x01 graphic
395

HYPERLINK \l "_Toc534792803" 0x01 graphic
Omówienie blokowania PAGEREF _Toc534792803 \h 0x01 graphic
396

HYPERLINK \l "_Toc534792804" 0x01 graphic
Blokowanie stron kontra blokowanie rekordów PAGEREF _Toc534792804 \h 0x01 graphic
396

HYPERLINK \l "_Toc534792805" 0x01 graphic
Plik LDB PAGEREF _Toc534792805 \h 0x01 graphic
397

HYPERLINK \l "_Toc534792806" 0x01 graphic
Optymistyczne i pesymistyczne blokowanie rekordów PAGEREF _Toc534792806 \h 0x01 graphic
397

HYPERLINK \l "_Toc534792807" 0x01 graphic
Blokowanie optymistyczne PAGEREF _Toc534792807 \h 0x01 graphic
397

HYPERLINK \l "_Toc534792808" 0x01 graphic
Blokowanie pesymistyczne PAGEREF _Toc534792808 \h 0x01 graphic
397

HYPERLINK \l "_Toc534792809" 0x01 graphic
Blokowanie rekordów PAGEREF _Toc534792809 \h 0x01 graphic
398

HYPERLINK \l "_Toc534792810" 0x01 graphic
Właściwość RecordLocks w interfejsie związanym PAGEREF _Toc534792810 \h 0x01 graphic
398

HYPERLINK \l "_Toc534792811" 0x01 graphic
Metody blokowania silnika Jet PAGEREF _Toc534792811 \h 0x01 graphic
398

HYPERLINK \l "_Toc534792812" 0x01 graphic
Określanie stanu blokad PAGEREF _Toc534792812 \h 0x01 graphic
398

HYPERLINK \l "_Toc534792813" 0x01 graphic
Sprawdzanie blokad PAGEREF _Toc534792813 \h 0x01 graphic
400

HYPERLINK \l "_Toc534792814" 0x01 graphic
Użycie blokowania stron PAGEREF _Toc534792814 \h 0x01 graphic
401

HYPERLINK \l "_Toc534792815" 0x01 graphic
Obsługa błędów blokowania PAGEREF _Toc534792815 \h 0x01 graphic
401

HYPERLINK \l "_Toc534792816" 0x01 graphic
Ustawienia blokowania Accessa PAGEREF _Toc534792816 \h 0x01 graphic
401

HYPERLINK \l "_Toc534792817" 0x01 graphic
Konflikty zapisu PAGEREF _Toc534792817 \h 0x01 graphic
401

HYPERLINK \l "_Toc534792818" 0x01 graphic
Zablokowany rekord PAGEREF _Toc534792818 \h 0x01 graphic
402

HYPERLINK \l "_Toc534792819" 0x01 graphic
Transakcje PAGEREF _Toc534792819 \h 0x01 graphic
402

HYPERLINK \l "_Toc534792820" 0x01 graphic
Blokady Oracle/SQL Server PAGEREF _Toc534792820 \h 0x01 graphic
403

HYPERLINK \l "_Toc534792821" 0x01 graphic
Rozdział 22. Replikacja i JRO PAGEREF _Toc534792821 \h 0x01 graphic
404

HYPERLINK \l "_Toc534792822" 0x01 graphic
Kiedy użyć replikacji PAGEREF _Toc534792822 \h 0x01 graphic
404

HYPERLINK \l "_Toc534792823" 0x01 graphic
Kiedy nie używać replikacji PAGEREF _Toc534792823 \h 0x01 graphic
405

HYPERLINK \l "_Toc534792824" 0x01 graphic
Przystosowanie bazy do replikacji PAGEREF _Toc534792824 \h 0x01 graphic
405

HYPERLINK \l "_Toc534792825" 0x01 graphic
Replikacja przy użyciu aktówki PAGEREF _Toc534792825 \h 0x01 graphic
405

HYPERLINK \l "_Toc534792826" 0x01 graphic
Użycie interfejsu użytkownika PAGEREF _Toc534792826 \h 0x01 graphic
406

HYPERLINK \l "_Toc534792827" 0x01 graphic
Wybór między obiektami lokalnymi i replikowanymi PAGEREF _Toc534792827 \h 0x01 graphic
408

HYPERLINK \l "_Toc534792828" 0x01 graphic
Planowanie topologii replikacji PAGEREF _Toc534792828 \h 0x01 graphic
409

HYPERLINK \l "_Toc534792829" 0x01 graphic
Wybór schematu sterowanego PAGEREF _Toc534792829 \h 0x01 graphic
411

HYPERLINK \l "_Toc534792830" 0x01 graphic
Synchronizacja bezpośrednia PAGEREF _Toc534792830 \h 0x01 graphic
411

HYPERLINK \l "_Toc534792831" 0x01 graphic
Synchronizacja pośrednia PAGEREF _Toc534792831 \h 0x01 graphic
411

HYPERLINK \l "_Toc534792832" 0x01 graphic
Wybór schematu niesterowanego PAGEREF _Toc534792832 \h 0x01 graphic
411

HYPERLINK \l "_Toc534792833" 0x01 graphic
Jet i model obiektowy replikacji PAGEREF _Toc534792833 \h 0x01 graphic
411

HYPERLINK \l "_Toc534792834" 0x01 graphic
Poznajemy JRO PAGEREF _Toc534792834 \h 0x01 graphic
412

HYPERLINK \l "_Toc534792835" 0x01 graphic
Opis metod i właściwości JRO PAGEREF _Toc534792835 \h 0x01 graphic
413

HYPERLINK \l "_Toc534792836" 0x01 graphic
Właściwość ActiveConnection PAGEREF _Toc534792836 \h 0x01 graphic
413

HYPERLINK \l "_Toc534792837" 0x01 graphic
Właściwość ConflictFunction PAGEREF _Toc534792837 \h 0x01 graphic
413

HYPERLINK \l "_Toc534792838" 0x01 graphic
Właściwość ConflictTables PAGEREF _Toc534792838 \h 0x01 graphic
415

HYPERLINK \l "_Toc534792839" 0x01 graphic
Właściwość DesignMasterID PAGEREF _Toc534792839 \h 0x01 graphic
416

HYPERLINK \l "_Toc534792840" 0x01 graphic
Obiekty repliki PAGEREF _Toc534792840 \h 0x01 graphic
416

HYPERLINK \l "_Toc534792841" 0x01 graphic
Właściwość ReplicaID PAGEREF _Toc534792841 \h 0x01 graphic
416

HYPERLINK \l "_Toc534792842" 0x01 graphic
Właściwość ReplicaType PAGEREF _Toc534792842 \h 0x01 graphic
416

HYPERLINK \l "_Toc534792843" 0x01 graphic
Właściwość RetentionPeriod PAGEREF _Toc534792843 \h 0x01 graphic
416

HYPERLINK \l "_Toc534792844" 0x01 graphic
Właściwość Visibility PAGEREF _Toc534792844 \h 0x01 graphic
417

HYPERLINK \l "_Toc534792845" 0x01 graphic
Metoda CreateReplica PAGEREF _Toc534792845 \h 0x01 graphic
417

HYPERLINK \l "_Toc534792846" 0x01 graphic
Metoda GetObjectReplicability PAGEREF _Toc534792846 \h 0x01 graphic
418

HYPERLINK \l "_Toc534792847" 0x01 graphic
Metoda MakeReplicable PAGEREF _Toc534792847 \h 0x01 graphic
418

HYPERLINK \l "_Toc534792848" 0x01 graphic
Metoda PopulatePartial PAGEREF _Toc534792848 \h 0x01 graphic
419

HYPERLINK \l "_Toc534792849" 0x01 graphic
Metoda SetObjectReplicability PAGEREF _Toc534792849 \h 0x01 graphic
420

HYPERLINK \l "_Toc534792850" 0x01 graphic
Metoda Synchronize PAGEREF _Toc534792850 \h 0x01 graphic
420

HYPERLINK \l "_Toc534792851" 0x01 graphic
Kolekcja Filters PAGEREF _Toc534792851 \h 0x01 graphic
421

HYPERLINK \l "_Toc534792852" 0x01 graphic
Właściwość Count PAGEREF _Toc534792852 \h 0x01 graphic
421

HYPERLINK \l "_Toc534792853" 0x01 graphic
Metoda Item PAGEREF _Toc534792853 \h 0x01 graphic
421

HYPERLINK \l "_Toc534792854" 0x01 graphic
Metoda Append PAGEREF _Toc534792854 \h 0x01 graphic
422

HYPERLINK \l "_Toc534792855" 0x01 graphic
Metoda Delete PAGEREF _Toc534792855 \h 0x01 graphic
422

HYPERLINK \l "_Toc534792856" 0x01 graphic
Metoda Refresh PAGEREF _Toc534792856 \h 0x01 graphic
422

HYPERLINK \l "_Toc534792857" 0x01 graphic
Obiekt Filter PAGEREF _Toc534792857 \h 0x01 graphic
422

HYPERLINK \l "_Toc534792858" 0x01 graphic
Właściwość FilterCriteria PAGEREF _Toc534792858 \h 0x01 graphic
422

HYPERLINK \l "_Toc534792859" 0x01 graphic
Właściwość FilterType PAGEREF _Toc534792859 \h 0x01 graphic
422

HYPERLINK \l "_Toc534792860" 0x01 graphic
Właściwość TableName PAGEREF _Toc534792860 \h 0x01 graphic
423

HYPERLINK \l "_Toc534792861" 0x01 graphic
Rozdział 23. Bezpieczeństwo PAGEREF _Toc534792861 \h 0x01 graphic
424

HYPERLINK \l "_Toc534792862" 0x01 graphic
Elementy bezpieczeństwa PAGEREF _Toc534792862 \h 0x01 graphic
424

HYPERLINK \l "_Toc534792863" 0x01 graphic
Zabezpieczenie bazy danych hasłem PAGEREF _Toc534792863 \h 0x01 graphic
424

HYPERLINK \l "_Toc534792864" 0x01 graphic
System bezpieczeństwa grupy roboczej PAGEREF _Toc534792864 \h 0x01 graphic
425

HYPERLINK \l "_Toc534792865" 0x01 graphic
Tworzenie grupy roboczej PAGEREF _Toc534792865 \h 0x01 graphic
426

HYPERLINK \l "_Toc534792866" 0x01 graphic
Użytkownicy i grupy PAGEREF _Toc534792866 \h 0x01 graphic
427

HYPERLINK \l "_Toc534792867" 0x01 graphic
Omówienie domyślnych ustawień użytkowników i grup PAGEREF _Toc534792867 \h 0x01 graphic
428

HYPERLINK \l "_Toc534792868" 0x01 graphic
Tworzenie użytkowników PAGEREF _Toc534792868 \h 0x01 graphic
428

HYPERLINK \l "_Toc534792869" 0x01 graphic
Ustawianie i zmiana hasła użytkownika PAGEREF _Toc534792869 \h 0x01 graphic
429

HYPERLINK \l "_Toc534792870" 0x01 graphic
Tworzenie grup PAGEREF _Toc534792870 \h 0x01 graphic
429

HYPERLINK \l "_Toc534792871" 0x01 graphic
Przypisywanie użytkowników do grup PAGEREF _Toc534792871 \h 0x01 graphic
430

HYPERLINK \l "_Toc534792872" 0x01 graphic
Rozróżnianie między domyślnymi i specjalnymi grupami i użytkownikami PAGEREF _Toc534792872 \h 0x01 graphic
430

HYPERLINK \l "_Toc534792873" 0x01 graphic
Poznajemy uprawnienia PAGEREF _Toc534792873 \h 0x01 graphic
430

HYPERLINK \l "_Toc534792874" 0x01 graphic
Tworzenie systemu bezpieczeństwa przy użyciu opcji startowych PAGEREF _Toc534792874 \h 0x01 graphic
432

HYPERLINK \l "_Toc534792875" 0x01 graphic
Zagadnienia bezpieczeństwa przy użyciu replikacji PAGEREF _Toc534792875 \h 0x01 graphic
432

HYPERLINK \l "_Toc534792876" 0x01 graphic
Ochrona podzielonych baz danych PAGEREF _Toc534792876 \h 0x01 graphic
433

HYPERLINK \l "_Toc534792877" 0x01 graphic
Opcja With OwnerAccess PAGEREF _Toc534792877 \h 0x01 graphic
434

HYPERLINK \l "_Toc534792878" 0x01 graphic
Bezpieczeństwo systemu klient-serwer PAGEREF _Toc534792878 \h 0x01 graphic
434

HYPERLINK \l "_Toc534792879" 0x01 graphic
Zarządzanie użytkownikami PAGEREF _Toc534792879 \h 0x01 graphic
434

HYPERLINK \l "_Toc534792880" 0x01 graphic
Wyliczanie grup i użytkowników oraz wyświetlanie przynależności PAGEREF _Toc534792880 \h 0x01 graphic
435

HYPERLINK \l "_Toc534792881" 0x01 graphic
Identyfikacja bieżących użytkowników za pomocą ADOX PAGEREF _Toc534792881 \h 0x01 graphic
436

HYPERLINK \l "_Toc534792882" 0x01 graphic
Wyszukiwanie użytkowników z pustym hasłem PAGEREF _Toc534792882 \h 0x01 graphic
437

HYPERLINK \l "_Toc534792883" 0x01 graphic
Ustawianie i usuwanie hasła PAGEREF _Toc534792883 \h 0x01 graphic
438

HYPERLINK \l "_Toc534792884" 0x01 graphic
Zarządzanie grupami PAGEREF _Toc534792884 \h 0x01 graphic
438

HYPERLINK \l "_Toc534792885" 0x01 graphic
Zarządzanie właściwością obiektów PAGEREF _Toc534792885 \h 0x01 graphic
438

HYPERLINK \l "_Toc534792886" 0x01 graphic
Zarządzanie wieloma aplikacjami PAGEREF _Toc534792886 \h 0x01 graphic
438

HYPERLINK \l "_Toc534792887" 0x01 graphic
Użycie SQL PAGEREF _Toc534792887 \h 0x01 graphic
439

HYPERLINK \l "_Toc534792888" 0x01 graphic
Create PAGEREF _Toc534792888 \h 0x01 graphic
439

HYPERLINK \l "_Toc534792889" 0x01 graphic
Add User PAGEREF _Toc534792889 \h 0x01 graphic
439

HYPERLINK \l "_Toc534792890" 0x01 graphic
Grant/Revoke PAGEREF _Toc534792890 \h 0x01 graphic
439

HYPERLINK \l "_Toc534792891" 0x01 graphic
Drop PAGEREF _Toc534792891 \h 0x01 graphic
440

HYPERLINK \l "_Toc534792892" 0x01 graphic
Zabezpieczanie bazy danych krok po kroku PAGEREF _Toc534792892 \h 0x01 graphic
440

HYPERLINK \l "_Toc534792893" 0x01 graphic
Częste błędy bezpieczeństwa PAGEREF _Toc534792893 \h 0x01 graphic
440

HYPERLINK \l "_Toc534792894" 0x01 graphic
Część VIII Publikowanie w sieci za pomocą Accessa 2000 PAGEREF _Toc534792894 \h 0x01 graphic
442

HYPERLINK \l "_Toc534792895" 0x01 graphic
Rozdział 24. Konfiguracja serwera WWW dla publikowania w sieci WWW PAGEREF _Toc534792895 \h 0x01 graphic
443

HYPERLINK \l "_Toc534792896" 0x01 graphic
Środowisko programistyczne a środowisko produkcyjne PAGEREF _Toc534792896 \h 0x01 graphic
443

HYPERLINK \l "_Toc534792897" 0x01 graphic
Wybór platformy PAGEREF _Toc534792897 \h 0x01 graphic
444

HYPERLINK \l "_Toc534792898" 0x01 graphic
Personal Web Server i Peer Web Services PAGEREF _Toc534792898 \h 0x01 graphic
444

HYPERLINK \l "_Toc534792899" 0x01 graphic
Internet Information Server PAGEREF _Toc534792899 \h 0x01 graphic
444

HYPERLINK \l "_Toc534792900" 0x01 graphic
Co to jest Option Pack PAGEREF _Toc534792900 \h 0x01 graphic
445

HYPERLINK \l "_Toc534792901" 0x01 graphic
Uruchomienie serwera WWW PAGEREF _Toc534792901 \h 0x01 graphic
446

HYPERLINK \l "_Toc534792902" 0x01 graphic
Instalacja PAGEREF _Toc534792902 \h 0x01 graphic
446

HYPERLINK \l "_Toc534792903" 0x01 graphic
NT Option Pack dla Windows 95/98 PAGEREF _Toc534792903 \h 0x01 graphic
446

HYPERLINK \l "_Toc534792904" 0x01 graphic
Dostępne komponenty instalacji PAGEREF _Toc534792904 \h 0x01 graphic
446

HYPERLINK \l "_Toc534792905" 0x01 graphic
Opcje instalacji: minimalna, typowa i niestandardowa PAGEREF _Toc534792905 \h 0x01 graphic
448

HYPERLINK \l "_Toc534792906" 0x01 graphic
Microsoft Transaction Server 2.0 PAGEREF _Toc534792906 \h 0x01 graphic
449

HYPERLINK \l "_Toc534792907" 0x01 graphic
Co to jest broker transakcji? PAGEREF _Toc534792907 \h 0x01 graphic
449

HYPERLINK \l "_Toc534792908" 0x01 graphic
Zarządzanie i konfiguracja serwera WWW PAGEREF _Toc534792908 \h 0x01 graphic
450

HYPERLINK \l "_Toc534792909" 0x01 graphic
Personal Web Manager PAGEREF _Toc534792909 \h 0x01 graphic
450

HYPERLINK \l "_Toc534792910" 0x01 graphic
Microsoft Management Console PAGEREF _Toc534792910 \h 0x01 graphic
451

HYPERLINK \l "_Toc534792911" 0x01 graphic
Konfiguracja Internet Information Server PAGEREF _Toc534792911 \h 0x01 graphic
451

HYPERLINK \l "_Toc534792912" 0x01 graphic
Zabezpieczanie aplikacji WWW PAGEREF _Toc534792912 \h 0x01 graphic
455

HYPERLINK \l "_Toc534792913" 0x01 graphic
Różnice pomiędzy witryną a katalogiem wirtualnym PAGEREF _Toc534792913 \h 0x01 graphic
456

HYPERLINK \l "_Toc534792914" 0x01 graphic
Co to jest IUSER ? PAGEREF _Toc534792914 \h 0x01 graphic
457

HYPERLINK \l "_Toc534792915" 0x01 graphic
Typ systemu plików PAGEREF _Toc534792915 \h 0x01 graphic
457

HYPERLINK \l "_Toc534792916" 0x01 graphic
Struktura katalogów i wymagane uprawnienia PAGEREF _Toc534792916 \h 0x01 graphic
458

HYPERLINK \l "_Toc534792917" 0x01 graphic
ASP/HTML - położenie i uprawnienia PAGEREF _Toc534792917 \h 0x01 graphic
458

HYPERLINK \l "_Toc534792918" 0x01 graphic
Bazy danych - położenie i uprawnienia PAGEREF _Toc534792918 \h 0x01 graphic
459

HYPERLINK \l "_Toc534792919" 0x01 graphic
Rozdział 25. Przenoszenie Accessa 2000 do sieci WWW za pomocą komponentów sieciowych Office PAGEREF _Toc534792919 \h 0x01 graphic
460

HYPERLINK \l "_Toc534792920" 0x01 graphic
Czym są komponenty sieciowe Office PAGEREF _Toc534792920 \h 0x01 graphic
460

HYPERLINK \l "_Toc534792921" 0x01 graphic
Co potrafią komponenty sieciowe Office PAGEREF _Toc534792921 \h 0x01 graphic
461

HYPERLINK \l "_Toc534792922" 0x01 graphic
Wymagane licencje na użycie komponentów sieciowych PAGEREF _Toc534792922 \h 0x01 graphic
461

HYPERLINK \l "_Toc534792923" 0x01 graphic
Użycie formantu Office Arkusz PAGEREF _Toc534792923 \h 0x01 graphic
461

HYPERLINK \l "_Toc534792924" 0x01 graphic
Rozpoczynamy PAGEREF _Toc534792924 \h 0x01 graphic
461

HYPERLINK \l "_Toc534792925" 0x01 graphic
Użycie formantu w Accessie PAGEREF _Toc534792925 \h 0x01 graphic
462

HYPERLINK \l "_Toc534792926" 0x01 graphic
Użycie formantu Office Wykres PAGEREF _Toc534792926 \h 0x01 graphic
463

HYPERLINK \l "_Toc534792927" 0x01 graphic
Rozpoczynamy PAGEREF _Toc534792927 \h 0x01 graphic
464

HYPERLINK \l "_Toc534792928" 0x01 graphic
Użycie formantu w Accessie PAGEREF _Toc534792928 \h 0x01 graphic
464

HYPERLINK \l "_Toc534792929" 0x01 graphic
Użycie formantu Office Tabela przestawna PAGEREF _Toc534792929 \h 0x01 graphic
465

HYPERLINK \l "_Toc534792930" 0x01 graphic
Rozpoczynamy PAGEREF _Toc534792930 \h 0x01 graphic
466

HYPERLINK \l "_Toc534792931" 0x01 graphic
Rozdział 26. Użycie stron dostępu do danych PAGEREF _Toc534792931 \h 0x01 graphic
467

HYPERLINK \l "_Toc534792932" 0x01 graphic
Czym są strony dostępu do danych? PAGEREF _Toc534792932 \h 0x01 graphic
467

HYPERLINK \l "_Toc534792933" 0x01 graphic
Architektura oraz wymagania stron dostępu do danych PAGEREF _Toc534792933 \h 0x01 graphic
467

HYPERLINK \l "_Toc534792934" 0x01 graphic
Tworzenie Twojej pierwszej strony dostępu do danych PAGEREF _Toc534792934 \h 0x01 graphic
468

HYPERLINK \l "_Toc534792935" 0x01 graphic
Oglądanie strony dostępu do danych PAGEREF _Toc534792935 \h 0x01 graphic
470

HYPERLINK \l "_Toc534792936" 0x01 graphic
Tworzenie interaktywnych odnośników PAGEREF _Toc534792936 \h 0x01 graphic
471

HYPERLINK \l "_Toc534792937" 0x01 graphic
Łączenie komponentów sieciowych Office z DAP PAGEREF _Toc534792937 \h 0x01 graphic
472

HYPERLINK \l "_Toc534792938" 0x01 graphic
Dodanie komponentu sieciowego Arkusz Excel PAGEREF _Toc534792938 \h 0x01 graphic
473

HYPERLINK \l "_Toc534792939" 0x01 graphic
Dodanie komponentu sieciowego Wykres PAGEREF _Toc534792939 \h 0x01 graphic
473

HYPERLINK \l "_Toc534792940" 0x01 graphic
Skrypty w stronach dostępu do danych PAGEREF _Toc534792940 \h 0x01 graphic
474

HYPERLINK \l "_Toc534792941" 0x01 graphic
Zmiana źródła danych w trakcie działania strony PAGEREF _Toc534792941 \h 0x01 graphic
475

HYPERLINK \l "_Toc534792942" 0x01 graphic
Rozdział 27. Publikowanie w sieci przy użyciu Accessa 2000 i Active Server Pages PAGEREF _Toc534792942 \h 0x01 graphic
477

HYPERLINK \l "_Toc534792943" 0x01 graphic
Użycie Active Server Pages PAGEREF _Toc534792943 \h 0x01 graphic
477

HYPERLINK \l "_Toc534792944" 0x01 graphic
Architektura Active Server Pages PAGEREF _Toc534792944 \h 0x01 graphic
478

HYPERLINK \l "_Toc534792945" 0x01 graphic
Active Server Pages kontra CGI PAGEREF _Toc534792945 \h 0x01 graphic
478

HYPERLINK \l "_Toc534792946" 0x01 graphic
Uruchomienie stron ASP PAGEREF _Toc534792946 \h 0x01 graphic
478

HYPERLINK \l "_Toc534792947" 0x01 graphic
Rozpoczynamy pracę z Active Server Pages PAGEREF _Toc534792947 \h 0x01 graphic
479

HYPERLINK \l "_Toc534792948" 0x01 graphic
Konstrukcja kodu ASP PAGEREF _Toc534792948 \h 0x01 graphic
480

HYPERLINK \l "_Toc534792949" 0x01 graphic
Ograniczenia eksportu stron ASP PAGEREF _Toc534792949 \h 0x01 graphic
481

HYPERLINK \l "_Toc534792950" 0x01 graphic
Active Server Pages PAGEREF _Toc534792950 \h 0x01 graphic
481

HYPERLINK \l "_Toc534792951" 0x01 graphic
Silnik ASP PAGEREF _Toc534792951 \h 0x01 graphic
481

HYPERLINK \l "_Toc534792952" 0x01 graphic
Skrypty wykonywane na serwerze PAGEREF _Toc534792952 \h 0x01 graphic
481

HYPERLINK \l "_Toc534792953" 0x01 graphic
Użycie VBScript na stronach ASP PAGEREF _Toc534792953 \h 0x01 graphic
484

HYPERLINK \l "_Toc534792954" 0x01 graphic
Obiekty aplikacji i sesji PAGEREF _Toc534792954 \h 0x01 graphic
486

HYPERLINK \l "_Toc534792955" 0x01 graphic
Użycie obiektu aplikacji PAGEREF _Toc534792955 \h 0x01 graphic
486

HYPERLINK \l "_Toc534792956" 0x01 graphic
Użycie obiektu sesji PAGEREF _Toc534792956 \h 0x01 graphic
486

HYPERLINK \l "_Toc534792957" 0x01 graphic
Użycie obiektów żądań i odpowiedzi PAGEREF _Toc534792957 \h 0x01 graphic
486

HYPERLINK \l "_Toc534792958" 0x01 graphic
Obiekt Response PAGEREF _Toc534792958 \h 0x01 graphic
487

HYPERLINK \l "_Toc534792959" 0x01 graphic
Response.Redirect PAGEREF _Toc534792959 \h 0x01 graphic
487

HYPERLINK \l "_Toc534792960" 0x01 graphic
Response.Write PAGEREF _Toc534792960 \h 0x01 graphic
487

HYPERLINK \l "_Toc534792961" 0x01 graphic
Obiekt Request PAGEREF _Toc534792961 \h 0x01 graphic
487

HYPERLINK \l "_Toc534792962" 0x01 graphic
Plik global.asa PAGEREF _Toc534792962 \h 0x01 graphic
487

HYPERLINK \l "_Toc534792963" 0x01 graphic
Przykłady użycia obiektów ASP PAGEREF _Toc534792963 \h 0x01 graphic
488

HYPERLINK \l "_Toc534792964" 0x01 graphic
Użycie ADO w aplikacjach ASP PAGEREF _Toc534792964 \h 0x01 graphic
489

HYPERLINK \l "_Toc534792965" 0x01 graphic
Przykład: tworzenie strony WWW dostępnej dla członków grupy PAGEREF _Toc534792965 \h 0x01 graphic
490

HYPERLINK \l "_Toc534792966" 0x01 graphic
Publikacja w sieci z Accessa 2000 przy użyciu XML PAGEREF _Toc534792966 \h 0x01 graphic
494

HYPERLINK \l "_Toc534792967" 0x01 graphic
Podstawy XML PAGEREF _Toc534792967 \h 0x01 graphic
494

HYPERLINK \l "_Toc534792968" 0x01 graphic
Programowe tworzenie pliku XML PAGEREF _Toc534792968 \h 0x01 graphic
496

HYPERLINK \l "_Toc534792969" 0x01 graphic
Tworzenie wykresów przy użyciu formantu Wykres PAGEREF _Toc534792969 \h 0x01 graphic
498


Część I
Projektowanie bazy danych


Rozdział 1.
Co nowego w Accessie 2000

W tym rozdziale:

Gdy na rynku pojawiła się pierwsza wersja programu Access, trudno było przy­pusz­czać, że kiedyś stanie się on tak potężnym narzędziem jakim jest Access 2000. Ci, któ­rzy korzystali z Accessa 1.0, pamiętają z pewnością aplikację o następujących cechach: mak­symalnej wielkości pliku ograniczonej do 128 MB, braku zdolności transakcyjnych, bra­ku narzędzi programistycznych z prawdziwego zdarzenia, statycznych paskach na­rzę­dzi, braku integralności referencyjnej oraz bardzo niskiej wydajności. Pomimo wyżej wy­mienionych wad w owym czasie program ten nie miał sobie równych. Zawdzięczał to łatwym w obsłudze narzędziom konstrukcyjnym, dynasetom oraz konstruktorowi kwe­rend. Z każdym uaktualnieniem Access stawał się coraz potężniejszym i bardziej uży­tecznym narzędziem oraz systemem rozwoju.

Użytkownicy oraz programiści pracujący z Accessem z zadowoleniem przyjmowali ko­lej­ne ulepszenia silnika bazy danych aż do wersji 4.0. Wówczas to, Access posiadał już prze­twarzanie transakcyjne, integralność referencyjną, zdolności replikacyjne, ulep­szo­ne zarządzanie współbieżnością, a ponadto działał szybciej i dużo stabilniej. Ponadto pro­gram początkowo posiadający proste makra języka Access VB został wyposażony w peł­­ną obsługę VBA wraz ze środowiskiem rozwoju prawie identycznym z Visual Stu­dio w wersji 6.0. Poprawiono także interfejs narzędzi. Obsługa narzędzi innych pro­du­centów oraz formantów ActiveX znacznie poszerzyły dostępne programistom moż­li­woś­ci projektowania. Wraz z pojawieniem się na rynku Accessa 95 i 97 programiści uzys­kali moż­liwość tworzenia wielu kopii formularzy. Wersja 97 umożliwiła im rów­nież ko­rzys­ta­nie z Active Server Pages, rozszerzając tym samym zasięg Accessa na In­ternet.

Na przestrzeni lat, usprawnienia Accessa można liczyć w setkach. Dziś ulepszenia, jakie wpro­wadzono w Accessie 2000, są naprawdę zadziwiające. Różnice między Accessem 2000 a jego poprzednią wersją są prawie tak duże jak różnice między jego pierwszą wer­sją i Accessem 97. Nie ulega wątpliwości, iż miliony docelowych użytkowników i pro­gramistów Accessa uznają jego nową wersję za elastyczne i niezwykle użyteczne na­rzę­dzie. Z pewnością również kolejne miliony przekonają się o jego zaletach i zaczną z niego korzystać w nadchodzących miesiącach i latach.

Nowy interfejs użytkownika

Pierwszą rzeczą, jaką zauważysz po uruchomieniu Accessa 2000, jest jego nowy in­ter­fejs. Microsoft postanowił ujednolicić graficzny interfejs użytkownika we wszystkich swo­ich aplikacjach, włączając w to Access. Okno bazy danych posiada pasek zawie­ra­ją­cy grupy obiektów dostępnych dla programisty, co upodabnia Access do programu Micro­soft Outlook. Nie jest to tylko zabieg kosmetyczny. Dzięki temu możesz tworzyć do­wol­ne, lo­giczne grupy, ze skrótami do właściwych obiektów. Przykładowo, możesz utwo­rzyć gru­pę „Zamówienia i Sprzedaż”, a następnie w obrębie tej grupy umieścić skró­­ty do kwe­rend, formularzy, raportów, stron, makr i modułów powiązanych z za­mó­w­ie­niami i sprze­dażą. Dzięki temu unikniesz czasochłonnych poszukiwań wśród wszys­tkich obiek­tów. Tę przydatną cechę ilustruje rysunek 1.1.

Rysunek 1.1.

Wszystko, co jest związane z zamówieniami i sprzedażą, znajduje się w jednym miejscu

0x01 graphic

Mniej widoczną, lecz równie ważną zmianą, jest wyświetlanie w menu Accessa 2000 je­dynie najczęściej używanych poleceń. Dwukrotne kliknięcie menu lub kliknięcie zna­ku rozwijającego spowoduje wyświetlenie pozostałych poleceń. Czynność tę przedstawiliś­my na rysunku 1.2

Rysunek 1.2.

Rozwijane menu pomagają zapobiegać bałaganowi

0x01 graphic

0x01 graphic

Kreatory służące tworzeniu i edycji obiektów również mają odpowiednie, przypo­rzą­dko­wane im miejsca, dzięki czemu zawsze wiesz, gdzie się znajdują. Ta kontekstowa dos­tępność pozwoli programistom zaoszczędzić czas.

Zwiększono również zestaw dostępnych funkcji obecnej już od dawna w systemie Win­dows opcji - schowka. Teraz możesz skopiować do schowka kilka elementów, a nas­tęp­nie zgodnie z potrzebą wklejać je do dokumentu. Dzięki temu znacznie łatwiej jest zmie­niać układ funkcji lub ustawiać właściwości obiektu.

Zmiany w VBE

Kolejną kosmetyczną zmianą jest wygląd środowiska Visual Basic (VBE - ang. Visual Basic Environment). Teraz, zamiast otwierać moduł, jakby to był zwykły plik tekstowy, Access posiada osobną przestrzeń roboczą służącą do pisania, usuwania błędów oraz uru­chamiania projektów Accessa 2000. Tym samym środowisko programistyczne Ac­ces­sa osiągnęło poziom pozostałych programów pakietu Office i zawiera teraz zinte­gro­wa­ne środowisko programowania (IDE - ang. Integrated Development Environment). Jeśli kiedykolwiek pracowałeś z VBA w Office 97 lub z Visual Basic, nowe, przed­sta­wio­ne na rysunku 1.3, VBE Accessa 2000 nie będzie Ci obce.

Dzięki możliwości umieszczania pasków narzędzi i okien w dowolnym miejscu bę­dziesz mógł dostosować miejsce pracy do swoich potrzeb. Jedno z okien może zawierać kod programu, który piszesz, natomiast w innym możesz przeglądać właściwości do­wol­nego obiektu. W trzecim oknie mogą być wyświetlone formularze, raporty, moduły i klasy w bazie danych. W jeszcze innym oknie, takie narzędzia jak okienko bezpo­śred­nie lub okienko zmiennych lokalnych (które w tej wersji są osobnymi oknami) pomogą Ci usu­wać błędy w kodzie programu.

W przeciwieństwie do VB wszystkie moduły utworzone w tym osobnym, zinte­gro­wa­nym środowisku przechowywane są w pliku .MDB wraz ze wszystkimi obiektami bazy da­nych. Jednakże, możesz z łatwością importować i eksportować pliki typu *.bas, *.cls i *.frm do i z Accessa 2000.

Rysunek 1.3.

Środowisko VBE jest teraz w dużym stopniu konfigurowalne

0x01 graphic

Strony dostępu do danych

Możliwości, jakie Access stwarza programistom, również zostały rozszerzone o nowy obiekt - strony dostępu do danych (DAP XE "DAP" - ang. Data Access Pages). Umożliwiają one użyt­kownikom tworzenie stron sieci Web, powiązanych z danymi w taki sam sposób jak formularze lub raporty. Wystarczy umieścić na stronie kilka specjalnych formantów, usta­wić kilka właściwości, zapisać je w intra- bądź Internecie, a inni użytkownicy będą mo­gli korzystać z nich za pomocą przeglądarki. Strony te mogą zawierać również po­gru­powane dane (ang. Grouped Data Access Pages). Takie strony umożliwiają użyt­kow­nikom interaktywne zagłębienie się w dane przy użyciu przeglądarki. Może okazać się, że strony dostępu do danych są najszybszym sposobem na współdzielenie danych i zes­tawu funkcji interfejsu z użytkownikami. Strony te mogą także być alternatywnym spo­sobem rozpowszechniania plików typu MDE.

Elementy sterujące stron dostępu do danych przedstawionych na rysunku 1.4 korzystają z wewnętrznych elementów HTML oraz formantów COM. Posiadają one także bogaty za­sób obiektów i współpracują z Visual Basic Scripting Edition, skryptami Java oraz kom­ponentami Office Web Components. Oznacza to, iż nabyte uprzednio umiejętności pro­jektowania stron sieci Web mogą być z łatwością przeniesione do Accessa 2000.

Podarkusze danych

Kolejną z cech interfejsu użytkownika Accessa 2000, która z pewnością będzie bardzo uży­teczna, są podarkusze danych. Dzięki nim możesz praktycznie bez wysiłku tworzyć edy­towalne, hierarchiczne grupy danych, rozszerzane przez kliknięcie małego znaku plus.

Rysunek 1.4.

Dane i zestaw funkcji mogą być przeglądane z poziomu aplikacji lub przeglądarki

0x01 graphic

Rysunek 1.5.

Kliknięcie znaku plus powoduje wyświetlenie powiązanych danych

0x01 graphic

Grupy te możesz umieścić w dowolnym miejscu w widoku arkusza danych. Uzys­ka­ne dzięki temu trójwymiarowe spojrzenie na dane z pewnością znajdzie wiele zasto­so­wań i może stać się szybką i prostą alternatywą dla formantu Tree.

Autokorekta nazw

Kolejną bardzo przydatną cechą Accessa 2000 jest autokorekta nazw. W poprzednich wer­sjach Accessa musiałeś bardzo uważać podczas zmiany nazwy obiektu, gdyż Access nie rozpoznawał nowej nazwy dopóty, dopóki nie uaktualniłeś wszystkich obiektów z nią powiązanych. Access 2000 automatycznie wykona to męczące zadanie za Ciebie, więc gdy uznasz, że dane pole powinno nazywać się inaczej, możesz zmienić jego naz­wę w dowolnym momencie, a aplikacja będzie wciąż działać poprawnie.

ADO jako domyślny system
dostępu do danych

Gdy spojrzymy do wewnątrz, w Accessie zmieniono domyślny system dostępu do da­nych. Zamiast znanych, lecz pamięciochłonnych obiektów Data Access (DAO XE "DAO" ), do po­bie­rania i zarządzania danymi Access używa obiektów Active Data (ADO XE "ADO" ). Korzyści pły­nące z ADO są bardzo liczne: prostszy interfejs, płaska struktura, użycie tych sa­mych technik i interfejsów między podobnymi źródłami danych, możliwość pobierania i zarządzania danymi z innych źródeł niż tylko programy typu RDBMS, a także za­po­wiedź większej wydajności i rozszerzonych opcji. Mimo iż Access współpracuje z obie­k­tami DAO, Microsoft nie będzie już rozbudowywał tego systemu. Tak więc, jeśli nie miałeś jeszcze okazji pracować z ADO, szczegółowy opis tego zagadnienia znaj­dziesz w rozdziale 6. „Wprowadzenie do obiektów danych ActiveX” i 7. „Zaawan­so­wa­ne ADO”.

Oprócz ADO, również dostawcy OLEDB dostarczają podobnych interfejsów dla sze­ro­kiej gamy źródeł danych w standardzie Microsoft's Universal Data Access. Ustawienia dla dostawców OLEDB mogą być również zapisane w pliku typu Universal Data Link (UDL), co znacznie ułatwia kontrolowanie (i zmianę) źródeł danych.

Współpraca online

Współpraca online jest szczególnie wartościowa dla programistów, którzy współpracują ze sobą mimo dzielącej ich odległości. Po rozpoczęciu spotkania programiści mogą wy­mie­niać uwagi o projektach za pomocą serwera listy, a także korzystać z takich opcji jak wspólna tablica, aby efektywnie wyrażać swoje pomysły.

Access jako interfejs użytkownika dla SQL Server

Bez wątpienia najciekawszą z nowych opcji Accessa 2000 jest nowy typ projektu apli­ka­cji: Microsoft Access Project XE "Microsoft Access Project" (*.adp). Projektom tym, będącym zapowiedzią nad­cho­dzą­cej ery Accessa, poświęcimy w tej książce dużo miejsca. Access był zawsze zdalną ba­zą danych działającą w ramach środowiska serwera plików i był ograniczony do iloś­ci


danych, z którą jego silnik Jet mógł sobie poradzić, oraz ilości użytkowników, których mógł obsłużyć. Microsoft Access Project nie posiada takich ograniczeń, gdyż jest praw­dzi­wym interfejsem użytkownika dla SQL Server i Microsoft Data Engine.

Dzięki obsłudze OLEDB, Access 2000 może całkowicie pominąć Jet i współpracować bez­pośrednio z innymi silnikami baz danych. Podczas tworzenia bazy danych w Ac­ce­ssie 2000 użytkownik może utworzyć Project, a następnie wybrać między dołączonym do pakietu Office 2000 Microsoft Data Engine (MSDE) a SQL Server 6.0 i 7.0. Każdy z nich jest w stanie obsługiwać tysiące użytkowników i terabajty danych. Access jest śro­dowiskiem rozwoju i administrowania dla SQL Servera, a utworzona aplikacja staje się prawdziwym klientem w relacji klient-serwer.

Access Project nie zawiera żadnych danych, tabel czy kwerend. Jest bezpośrednio po­łą­czo­ny z zapleczem i umożliwia tworzenie, przeglądanie i modyfikowanie tabel w bazie, prze­chowywanych procedur, widoków i diagramów bazy danych. W porównaniu do po­przed­nich wersji Accessa możemy mówić o radykalnej zmianie. Mimo iż wielu pro­gra­mis­tów dołączało tabele z SQL Server i Oracle, kwerendy na nich oparte były wyko­ny­wa­ne lokalnie (uruchomienie kwerendy opartej na dołączonej tabeli powoduje prze­nie­sie­nie da­nych na komputer klienta). Niektórzy programiści tworzyli kwerendy przekazujące, dzię­­ki czemu serwer wykonywał większość obliczeń, ale to dość specyficzny przypa­dek. Dołączona tabela nie mogła być modyfikowana, a stworzenie i obsługa widoków i przechowywanych procedur, pobranych za pomocą kwerendy przekazującej, mogły wy­magać osobnych narzędzi administracyjnych. Ograniczenia te powodowały opóź­nie­nia w realizacji projektu i wymagały zaangażowania dodatkowych pracowników wów­czas, gdy nie było to pożądane. Access Projects umożliwiły programistom tworzenie ca­łe­go projektu aplikacji klient-serwer samemu i bez użycia dodatkowych narzędzi.

Przedstawiciele Microsoftu są przekonani o tym, iż ta opcja zyska sobie aprobatę użyt­kow­ników i przyczyni się do sukcesu tego programu. Aby było to możliwe, typy da­nych Accessa dostosowano do SQL Server, uaktualniono składnię SQL, by była zgodna ze stan­dardami ANSI, a także uaktualniono kreatory i narzędzia wspomagające nową ar­chi­tekturę klient-serwer. Stworzono także nowe narzędzia służące do tworzenia i za­rzą­dzania obiektami po stronie serwera w widoku Projekt klienta. Także inne zwykłe czyn­ności administracyjne, jak zabezpieczenia, sporządzanie kopii zapasowych i repli­ka­cja, mogą być zarządzane przez Access 2000.


Rozdział 2.
Planowanie procesu rozwoju

W tym rozdziale:

W pozostałych rozdziałach tej książki opisane są wszystkie potężne narzędzia i opcje, jakie oferuje Access 2000. Jednakże, nawet po opanowaniu tego materiału, gdy bę­dziesz już świetnym programistą, sukces Twoich projektów wciąż będzie niepewny, je­śli nie zrozumiesz, jak ważny dla ich powodzenia jest proces rozwoju. Nawet, jeśli świe­tnie programujesz, to efektem braku dobrze zaplanowanego procesu lub zgranej gru­py współ­pracowników może być niezadowalający wynik projektu.

W tym rozdziale zawarliśmy kilka kluczowych informacji oraz czynności dotyczących zes­połu i procesu rozwoju. Chcielibyśmy pomóc Ci w budowaniu udanych projektów, po­przez stworzenie Twojego własnego, efektywnego i opartego na sprawdzonych me­to­dach procesu rozwoju. Opisanie tych zagadnień w pełni zajęłoby nam całą książkę.

Udany proces rozwoju skupia się na czterech kluczowych etapach projektu: Wyma­ga­niach, Architekturze, Planowaniu Rozwoju oraz właściwej fazie Konstrukcji. W fazie Wy­ma­gania, będziesz zbierał i analizował rzeczywiste potrzeby użytkowników. W fazie Architektura wybierzesz układ, technologie i narzędzia rozwoju, które w najlepszy spo­sób te potrzeby zaspokoją. Podczas fazy Planowanie rozwoju sporządzisz plan rozwoju, któ­ry będzie opisywał sposób, w jaki projekt będzie wdrożony, ustalisz niezbędną liczbę programistów oraz koszty całego przedsięwzięcia. Ostatnia faza rozwoju to two­rze­nie aplikacji.

Rysunek 2.1 przedstawia cztery fazy procesu rozwoju, począwszy od określenia wy­ma­gań, aż do tworzenia aplikacji. Zawiera on również niektóre z edycji programu, wypuszczane pod­czas tej fazy. W tym rozdziale szczegółowo scharakteryzujemy każdą z faz.

Rysunek 2.1.

Proces rozwoju

0x01 graphic

Określenie wymagań

Określenie i analiza wymagań jest najważniejszą czynnością wpływającą na jakość apli­ka­cji. Wielokrotnie byliśmy świadkami projektów, które upadały na skutek nie­pre­cy­zyj­nie bądź błędnie zdefiniowanych wymagań.

Dlaczego faza wymagań jest tak ważna?

Prawidłowo zidentyfikowane i przeanalizowane wymagania pozwolą zmniejszyć liczbę nie­przewidzianych zmian, które trzeba będzie później wprowadzić. Eksperci z prze­my­słu software'owego stwierdzili, że koszty ponoszone na wprowadzanie zmian, rosną o mnoż­nik zawierający się między 5 a 10, podczas przejścia na każdy kolejny etap pro­ce­su rozwoju. Przykładowo, jeśli klient zauważy błąd w wymaganiach, który zostanie po­prawiony w fazie wymagań, zmiana zajmie godzinę. Jeśli błąd zostanie zauważony do­piero po włączeniu tej opcji w projekt, wprowadzenie zmiany zajmie 10 godzin. Jeśli ele­ment ten został już zintegrowany i przetestowany z resztą aplikacji, naprawa błędu mo­że potrwać 50 godzin. Jeśli problem wynikł dopiero po dostarczeniu aplikacji do kli­en­ta, jego rozwiązanie zajmie blisko 100 godzin.

Dlaczego aż tak dużo? Po pierwsze, wymagania powinny być uaktualniane. Projekt i kod programu muszą być analizowane, aby ocenić czy zmiany są konieczne. Wówczas zmia­ny te muszą być wprowadzone, a różne moduły, kwerendy, formularze i raporty prze­testowane. Sama aplikacja musi być osobno przetestowana, aby mieć pewność, że zmia­ny odniosły przewidywany skutek i nie spowodowały wystąpienia kolejnych błę­dów. Wreszcie, poprawiona aplikacja musi być ponownie dostarczona do każdego z użyt­kowników.

Oczywiście, podane tu mnożniki to średnie wartości dla tej gałęzi przemysłu, a nie war­toś­ci absolutne. W zależności od rozmiaru zmian, koszty mogą być od nich niższe bądź wyż­sze. Jeśli błąd odbił się negatywnie na działalności klienta, koszty mogą być astro­no­miczne.

Odnalezienie rzeczywistego problemu

Określenie wymagań należy rozpocząć od ustalenia zakresu aplikacji. Nie ulega wąt­pli­woś­ci, że klient ma problem, który, jak sądzi, może być rozwiązany za pomocą pro­gra­mu komputerowego. Jednak klient nie zawsze może właściwie zdefiniować ów problem.

0x01 graphic

Aby zilustrować proces rozwoju, przez cały ten rozdział będziemy uży­wać przykładu „Sprawozdanie o kosztach pracowników”.

Przykładowo, klient może zamówić dla swoich pracowników system, który będzie słu­żył do wprowadzania i drukowania raportów o poniesionych kosztach. Po przeprowa­dze­niu analizy możesz stwierdzić, że rzeczywistą potrzebą klienta jest automatyzacja wpro­wadzania, podziału, zatwierdzania i przetwarzania całego procesu związanego z rapor­tami o kosztach. Odnajdywanie takich różnic należy do twoich zadań. Czasami klient myśli o rozwiązaniu, które jest zbyt małe, aby rozwiązać jego problem. Równie częs­to zdarza się, że klient myśli o rozwiązaniu, które jest zbyt obszerne i złożone. Aby zro­zumieć jak aplikacja współdziała z pozostałymi częściami działalności klienta, po­wi­nie­neś koniecznie poszerzyć zasięg procesu określania wymagań ponad oczekiwany zysk z jej funkcjonowania.

Śledztwo

Aby określić, jaki problem rzeczywiście wymaga rozwiązania i właściwie ustalić wy­ma­gania, musisz na chwilę stać się detektywem.

Oto kilka pomocnych wskazówek:

Pierwszym etapem śledztwa jest określenie wszystkich uczestników procesu. Przez uczest­nika rozumiemy osobę, grupę lub dział, który jest zainteresowany procesem lub aplikacją. Uczestnikami są menedżerowie, osoby nadzorujące oraz pracownicy bezpo­śred­nio odpowiedzialni za każdy z zaangażowanych w proces działów. Uczestnikami są tak­że ci użytkownicy aktualnego procesu, którzy staną się użytkownikami tworzonej przez Ciebie aplikacji. Niektóre z grup uczestników będą tak duże, że będziesz je mu­siał ograniczyć tylko do kilku przedstawicieli. W trakcie trwania śledztwa możesz od­kryć nowych uczestników, których będziesz musiał dołączyć. Dodatkowym zyskiem z uw­zględnienia uczestników w procesie określania wymagań jest uzyskany dzięki te­mu wzrost ich poczucia przynależności do nowego systemu. Zauważysz większą chęć do współpracy i pomoc przy dostarczaniu i uruchamianiu aplikacji u klienta.

Kontynuujmy nasz przykład sprawozdania o kosztach. Zechcesz przeprowadzić wy­wia­dy z kilkoma reprezentatywnymi użytkownikami, z których część rzadko ponosi jakiekol­wiek wydatki, część często podróżuje, a także z kilkoma przeciętnymi użytkownikami. Póź­niej porozmawiasz z kilkoma osobami z działu płac, które co miesiąc zajmują się prze­twarzaniem tych sprawozdań oraz przedstawionych rachunków.

Teraz rozpoczyna się prawdziwe śledztwo. Porozmawiaj z każdym uczestnikiem. Zada­waj wiele pytań, słuchaj uważnie i sporządzaj notatki. Pytaj, jak działa aktualny system oraz co im się w nim podoba lub nie. Zapytaj także, co chcieliby zmienić.

Z tych notatek możesz ułożyć prawdziwy obraz aktualnego procesu i sposobu działania fir­my. Przeanalizuj aktualny proces i zanotuj wszystkie potencjalne gniazda zapalne i wąs­kie gardła. Pamiętaj także o zebraniu wszystkich wad, zalet, życzeń i marzeń, o któ­rych dowiedziałeś się podczas wywiadów.

Diagramy procesu

Diagramy procesu XE "diagram procesu" są doskonałym sposobem na opisanie sposobu działania procesu han­dlo­wego. Przedstawiony na rysunku 2.2 diagram ilustruje przykład sprawozdania o kosz­tach. Diagramy te przedstawiają interakcje zachodzące między głównymi oso­ba­mi, gru­pami i działami zaangażowanymi w proces. Poszczególne kroki lub czynności w pro­­cesie następują od lewej do prawej i przedstawione są za pomocą prostokątów. Kro­ki te pochłaniają wpływy z lewej strony i powodują powstawanie wyników z pra­wej. Pionowe strzałki oznaczają wszystkie wewnętrzne zasady handlowe bądź zewnętrzne ure­gulowania i ograniczenia. Romby przedstawiają podejmowane w trakcie trwania pro­cesu decyzje.

Jako że pozioma oś przedstawia czas, wszelkie opóźnienia i czasochłonne czynności są łat­we do zidentyfikowania. Po przeanalizowaniu przedstawionego na diagramie aktual­ne­go procesu oraz potrzeb uczestników można narysować drugi diagram, który będzie ilu­strował proces po wprowadzeniu zmian.

Rysunek 2.2.

Przykład diagramu procesu rozliczania kosztów podróży

0x01 graphic

Diagramy procesu, takie jak ten na rysunku 2.2, są bardzo proste w tworzeniu i zrozu­mia­łe dla wszystkich uczestników. Po zobaczeniu diagramu wielu z uczestników będzie zasko­czonych stopniem skomplikowania i złożonością aktualnego procesu. Jeśli sporzą­dza­nie diagramu procesu rozpoczniesz odpowiednio wcześnie, będziesz mógł go mody­fi­kować podczas rozmów z uczestnikami. Diagramy procesu mogą znacznie ułatwić Ci stworzenie scenariusza i prowadzenie wywiadów. Każdy uczestnik będzie mógł teraz wy­jaśnić i pokazać szczegóły całego procesu.

Możesz uznać za przydatne stworzenie hierarchii diagramów procesu. Na najwyższym po­ziomie znajdzie się diagram opisujący cały proces, a poniżej będą diagramy ilustru­ją­ce w powiększeniu poszczególne jego etapy. Podprocesy mogą być przedstawione ze szcze­gółami na osobnych diagramach procesu. Podejście hierarchiczne często ułatwia zro­zumienie skomplikowanych diagramów.

0x01 graphic

Każdy diagram procesu powinien być tworzony na dużej kartce papieru, a nie przy użyciu komputera. Rysowanie na papierze zabiera mniej cza­su i umożliwia większą interakcję. Jest także mniej uciążliwe i bardziej czy­telne. Aby ograniczyć konieczne poprawki i zmiany, jako elementów pro­cesu można używać naklejanych karteczek. Po otrzymaniu osta­tecz­ne­go diagramu procesu można go przerysować przy użyciu Microsoft Wor­da 2000 lub Visio.

Identyfikacja zakresu projektu

Współpracuj z klientem, aby właściwie określić zakres aplikacji. Pamiętaj, że chodzi tu o zakres długoterminowy, a nie koncentrujący się na tej fazie projektu.

W przykładzie ze sprawozdaniem o kosztach programiści i decydenci doszli do po­ro­zu­mie­nia co do zakresu aplikacji. Uzgodnili, iż aplikacja powinna zautomatyzować rozli­cza­nie zaliczek, zgłaszanie zapotrzebowania na delegacje oraz cały proces zgłaszania kosz­tów począwszy od pojawienia się zapotrzebowania na delegację u pracownika, aż

do uwzględnienia rachunków za podróż w dziale księgowości. Zdecydowano również po­minąć systemy księgowe i sam proces rezerwowania biletów. Te elementy nie zostały uw­zględnione w zakresie aplikacji.

Spisywanie wymagań

Przedstawienie wymagań na piśmie jest najlepszym sposobem komunikacji pomiędzy pro­gramistą a klientem. Praktyka ta umożliwia wyeliminowanie nieporozumień. Forma pisem­na nie oznacza, iż musi to być koniecznie dokument oficjalny. Istnieje wiele skutecz­nych sposobów na przekazywanie wymagań: przykładowe raporty, formularze, dia­gramy procesu lub rysunki. Spisywanie wymagań nie jest wcale trudne. Wystarczy zad­bać o to, by klient mógł bez trudu je przeczytać i zrozumieć.

Oto jakie pytania możesz zadać, aby sprawdzić, czy właściwie zidentyfikowałeś wy­magania:

W tabeli 2.1 umieściliśmy przykłady wielu rodzajów wymagań, których użycie po­wi­nie­neś rozważyć. Wymagania te posłużą jako część umowy. Wydrukuj tę wersję doku­men­tacji wymagań i poproś klienta o jej podpisanie. Ten dokument stanie się podstawą dal­szego rozwoju aplikacji. Od tego momentu musisz zacząć zastanawiać się nad wpły­wem zmian w wymaganiach na planowany budżet i harmonogram. Pamiętaj, aby po do­ko­naniu zmian zweryfikować budżet, harmonogram i wszystkie pozostałe powiązane wy­magania oraz dokumentację projektu.

0x01 graphic

Utwórz bazę danych zawierającą wszystkie wymagania. Dla każdego z wy­magań dołącz numer identyfikacyjny, typ, opis, datę, źródło, zysk oraz sposób weryfikacji wymagania po jego implementacji, wagę i inne.

Tabela 2.1.

Typy wymagań

Typ wymagań

Opis

Przykład

Funkcjonalne

Wymagania te opisują żądane funkcje lub cechy oraz zasady handlowe, które ich dotyczą

Użytkownik będzie w stanie nadać priorytet klienta na:

Krytyczny,

Wysoki,

Średni,

Niski

Tabela 2.1.

Typy wymagań (ciąg dalszy)

Typ wymagań

Opis

Przykład

Wydajność

Wymagania dotyczące wydajności zawierają:

Szybkość,

Czas reakcji,

Pojemność,

Wielkość bazy danych

Baza danych powinna poprzez zakładową sieć LAN obsługiwać do 20 użytkowników, ze standardowym czasem odpowiedzi wysokości 200 ms

Bezpieczeństwo

Wymagania dotyczące bezpieczeństwa obejmują ograniczenia w użytkowaniu i dostępie do opcji aplikacji oraz danych

Wszyscy użytkownicy muszą się do aplikacji logować. Każdy użytkownik będzie członkiem jednej z następujących grup bezpieczeństwa:

Użytkownik,

Administrator,

Menedżer

Skalowalność

Skalowalność dotyczy zdolności do powiększania ilości danych, użytkowników, witryn lub częstotliwości zbierania danych

Aplikacja musi obsługiwać 50 aktualnych użytkowników oraz dodatkowo 50 użytkowników, którzy zostaną dołączeni na przestrzeni najbliższych dwóch lat

Rozszerzalność

Wymagania dotyczące rozszerzalności charakteryzują zdolność do poszerzania aplikacji o dodatkowe opcje w kolejnych wersjach.

Aplikacja będzie tak skonstruowana i zaimplementowana, aby można było dodać obsługę faktur klientów

Konfigurowalność

Konfigurowalność mierzy łatwość, z jaką parametry aplikacji mogą być zmieniane przez klienta, bez konieczności ingerencji zespołu programistów

Administrator będzie miał możliwość corocznego uaktualniania stawek ubezpieczeniowych

Kompatybilność

Kompatybilność to zdolność aplikacji do jej instalowania i funkcjonowania w różnych środowiskach sprzętowych i programowych, a także do interakcji z innymi aplikacjami

Program będzie zainstalowany w systemach Win95, Win98 i Win NT 4.0 Workstation, z minimum 8MB pamięci oraz 200MB dostępnej przestrzeni dyskowej

Dostępność

Dostępność służy do określenia ile godzin lub jaką część czasu aplikacja jest w stanie wykonywać pracę, do której została skonstruowana

Administrator bazy musi zarezerwować sobie czas od 22:00 do 23:00 wieczorem, aby sporządzać zapasowe kopie danych

Łatwość w użyciu

Wymaganie to służy określeniu stopnia, w jakim przeszkoleni użytkownicy mogą korzystać z systemu

Aplikacja zawiera moduł Pomoc online, który obejmuje 90% jej opcji

Łatwość w nauce

Wymaganie to jest miarą łatwości oraz czasu, w jakim użytkownicy są w stanie poznać system

Po jednodniowym treningu użytkownicy powinni być w wystarczającym stopniu zaznajomieni z aplikacją, aby rozpocząć z nią pracę

Architektura

Po przeanalizowaniu zapisanych wymagań klienta możesz wybrać odpowiednią archi­tek­turę, technologie i narzędzia rozwoju. Czy aplikacja klienta powinna być oparta na Ex­celu, Accesie czy VB? A może, za pomocą ASP XE "ASP" i XML XE "XML" , powinna korzystać z sieci Web? Czy można zastosować konstrukcję dwuwarstwową, czy może n-warstwowa by­ła­by lepsza? Czy motorem bazy danych będzie Jet-MDB, SQL-MSDE, SQL Server XE "SQL Server" czy Oracle XE "Oracle" ? Oto kilka ważnych pytań, z których każde będzie miało duży wpływ na produkt koń­cowy. Dopiero, gdy na nie odpowiesz, będziesz mógł właściwie określić budżet i har­monogram prac.

Planowanie rozwoju

Po podjęciu decyzji dotyczących wymagań i architektury powinieneś zastanowić się nad najlepszym sposobem skonstruowania aplikacji. Czy wszystkie opcje i zestawy fun­k­cji powinny być umieszczone w wersji 1.0, czy może powinieneś część z nich umieś­cić dopiero w następnych wersjach? Niezależnie od tego, którą z metod wybie­rzesz, nim przejdziesz dalej, powinieneś zastanowić się nad budżetem i harmo­no­gramem.

Być może już sporządziłeś wstępny plan projektu, który został zaakceptowany i dzięki te­mu dotarłeś do tej fazy projektu. Ta wstępna wersja opierała się na przewidywanych wy­maganiach i zakresie aplikacji, a także sporządzonym z dużym przybliżeniem bud­że­cie i harmonogramie. Jeśli posiadasz taki wstępny plan, teraz nadeszła chwila, by go sko­rygować. Jeśli taki plan jeszcze nie istnieje, teraz powinieneś go napisać. Po zakoń­cze­niu fazy Wymagania masz już wystarczająco dużo informacji, by sporządzić listę za­dań, listę zasobów, harmonogram i budżet.

0x01 graphic

Programiści powinni posiadać stałą kontrolę nad czasem. Najlepszym spo­sobem na wykształcenie w sobie umiejętności przewidywania jest po­równywanie własnych prognoz z czasem, który jest faktycznie nie­zbęd­ny do wykonania danej czynności.

Strategia dostarczania

Staraj się unikać umieszczania każdego pomysłu i przydatnych opcji w jednej, olbrzy­miej edycji. Prawie zawsze lepiej jest zaplanować kilka dodatkowych wersji.

Wróćmy do przykładu ze sprawozdaniem o kosztach. Podczas spotkań programistów z de­cydentami dyskutowano na temat możliwego zakresu aplikacji, harmonogramu prac i budżetu. Zgodzono się, iż wersja 1.0 powinna skoncentrować się na automatyzacji two­rzenia, zatwierdzania, podziału i kontroli raportów o kosztach. Kolejna wersja, z nu­me­rem 2.0, zautomatyzuje tworzenie, zatwierdzanie, podział i kontrolę procesu roz­li­cza­nia zaliczek na poczet delegacji. Rysunek 2.3 przedstawia kolejne etapy rozwoju apli­kacji oraz przykłady możliwych edycji. Na rysunku 2.4 znajduje się poprawiony dia­gram procesu XE "diagram procesu" , pokazujący, która z planowanych w obecnej strategii dostarczania dwóch wersji obejmuje poszczególne etapy procesu.

Rysunek 2.3.

Przykład strategii dostarczania

0x01 graphic

Rysunek 2.4.

Przykład diagramu procesu dotyczącego sprawozdania o kosztach i delegacjach, uwzględniający strategię dostarczania

0x01 graphic

Styl

Profesjonalne aplikacje zawsze charakteryzują się jednolitym wyglądem i sposobem dzia­łania. Jeśli do zamykania niektórych formularzy używamy przycisku Anuluj, a in­nych Zamknij, użytkownicy szybko się pogubią, co spowoduje wzrost kosztów szko­le­nia i pomocy. Jeśli jeden z programistów lubi, gdy każde pole w formularzu umieszczone jest w osobnym, wklęsłym okienku, a wyświetlane dane są zawsze pogrubione, podczas gdy inny projektuje formularze z pogrubionymi etykietami i płaskimi polami teks­to­wy­mi, aplikacja będzie sprawiała wrażenie niespójnej. Decyzje co do tych cech podejmij na początku procesu rozwoju i spraw, by wszyscy programiści się z nimi zapoznali, za­nim przejmą własne rozwiązania.

Oto kilka typów elementów stylu, które powinieneś określić w swoim standardzie: