Ludzie pragną czasami się rozstawać, żeby móc tęsknić, czekać i cieszyć się z powrotem.
Connection
Dim rst As New ADODB.Recordset
conn.Open "Provider = Microsoft.Jet.OLEDB.4.0;" &
"Data Source=C:\Program Files\Microsoft Office\Pl\" &
"Office\Samples\Northwind.mdb;" 1 sortuj na nie indeksowanym polu With rst
.CursorLocation = adUseClient .Open "Klienci", conn, _
450
Programowanie w Accesi
adOpenKeyset, adLockOptim:.stic .Sort = "Kraj" Do Until rst.EOF
Debug.Print rst.Fields("NazwaFirmy").Value &
": " & rst.Fields("Kraj").Value .MoveNext Loop
Debug. Print " oryginalne sortowanie"
.Sort = "" Do Until .EOF
Debug.Print rst.Fields("NazwaFirmy").Value &
": " & rst.Fields("Kraj").Value .MoveNext Loop .Close End With conn.Close Set rst = Nothing Set conn = Nothing End Sub
Zaawansowane mo¿liwoœci obiektu Recordset
Oprócz zwyk³ego obiektu Recordset, z którym dot¹d pracowaliœmy, umo¿liwia pracê z dwoma bardziej zaawansowanymi typami rekordów. Jeden typów nosi nazwê disconnected recordset, drugim jest tzw. saved recordset. Dis¹ nected recordset umo¿liwia pracê z zestawem rekordów, który jest od³¹czony] Ÿród³a danych. Saved (lub persisted) recordset jesl zestawem rekordów zachowani w pliku, który mo¿na zamnkn¹æ i ponownie otworzyæ bez aktywnego po³¹czenia! Ÿród³em danych. W kolejnych zagadnieniach tego rozdzia³u dowiesz siê, jak moi] korzystaæ z tych zaawansowanych zestawów rekordów.
tiitm,
u*
Tworzenie i manipulowanie bazami danych za pomoc¹ ADO
451
g frniPoznajADO3: Formularz
JJP x
Wyszukiwanie i czytanie rekordów j Praca z rekordarni Wiêcej na temat obiektu Recordest
-Persisted/Disconnected Recordset B] Zachowaj rekordy na dysku
C i W³aduj zachowane rekordy
Rysunek 3.9. Praca z zaawansowanymi zestawami rekordów
Fabrykowanie zestawu rekordów
Zestaw rekordów nie musi byæ po³¹czony ze Ÿród³em danych. ADO pozwala na tworzenie zestawu rekordów w pamiêci. Aby sfabrykowaæ taki zestaw rekordów, utwórz najpierw wszystkie ¿¹dane pola przy u¿yciu metody Append obiektu Field, nastêpnie zaœ otwórz sporz¹dzony zestaw i wype³nij go danymi. Na przyk³ad, mo¿esz w ³atwy sposób sporz¹dziæ zestaw rekordów przechowywuj¹cy dane pochodz¹ce z nie relacyjnych Ÿróde³ danych takich jak katalog plików na dysku.
Procedura w przyk³adzie 3.9.A demonstruje, w jaki sposób mo¿na przygotowaæ pusty zestaw rekordów zawieraj¹cy trzy pola (Nazwa, Rozmiar, DataModyf ikacji) i nastêpnie wype³niæ go nazwami plików znajduj¹cych siê w okreœlonym folderze. I Przy otwieraniu zestawu rekordów, który nie jest pod³¹czony do Ÿród³a danych (Di-I sconnected Recordset) nale¿y postawiæ przecinek w pozycji dwóch argumentów I metody open (source oraz ActiveConnection), tak jak w przyk³adzie poni¿ej:
I rst.Open , , adOpenStatic, adLockBatchOptimistic
Powy¿sza instrukcja otwiera zestaw rekordów, który jest od³¹czony od Ÿród³a
I danych.
452
Programowanie w Access 2
Funkcja VBA o nazwie FileLen zwraca rozmiar pliku w bitach. Inna VBA, FileDateTime, umo¿liwia pobranie daty i godziny modyfikacji pliku. Aby po-braæ datê i godzinê osobno, zastosuj funkcjê FileDateTime jako argument funkcji Da-tevaiue lub TimeValue. Wypróbuj nastêpuj¹ce polecenia w oknie Instrukcje bezpo. œrednie w trakcie wykonywania procedury w przyk³adzie 3.9.A w trybie krokowym:
? DateValue(FileDateTime(teczka & pole)) ? TimeValue(FileDateTime(teczka & pole))
Przyk³ad 3.9.A. Tworzenie w³asnego zestawu rekordów
Sub Custom_Recordset()
Dim rst As ADODB.Recordset Dim strPlik As String Dim strPath As String Dim strTeczka As String
strPath = InputBox("Wpisz œcie¿kê dostêpu do " &
"pliku np., C:\Program Files")
If Right(strPath, 1) <> "\" Then strPath = strPath & "\" strTeczka = strPath strPlik = Dir (strPath &■■*.*") If strPlik = "" Then
MsgBox "Ten folder nie zawiera ¿adnych plików. " Exit Sub End If
Set rst = New ADODB.Recordset
1 utwórz pusty zestaw rekordów zawieraj¹cy trzy pola With rst
.CursorLocation = adUseClient
.Fields.Append "Nazwa", adVarChar, 255
.Fields.Append "Rozmiar", adDouble
.Fields.Append "DataModyfikacji", adDBTimeStamp
1 otwórz Recordset
.Open , , adOpenStatic, adLockBatchOptimistic
Do While strPlik <> ""
If strPlik = "" Then Exit Do 1 dodaj nowy rekord .AddNew Array("Nazwa", _
"Rozmiar", _
Tworzenie i manipulowanie bazami danych za pomoc¹ ADO
453
"DataModyfikacji"),
Array(strPlik, FileLen(strTeczka & strPlik) , FileDateTime(strTeczka & strPlik)) strPlik = Dir Loop
.MoveFirst
' wydrukuj zawartoœæ obiektu Recordset do okna ' Instrukcje bezpoœrednie Do Until .EOF
Debug.Print !Nazwa & vbTab & !Rozmiar & vbTab & !DataModyfikacj i .MoveNext Loop End With
Set rst = Nothing End Sub
Po wykonaniu procedury w przyk³adzie 3.9.A okno Instrukcje bezpoœrednie wyœwietla nazwy plików w podanym folderze, ich rozmiar oraz datê.
Immediate