[ Pobierz całość w formacie PDF ]
.ConnectionDim rst As ADODB.RecordsetDim strSQL As StringOn Error GoTo Proc_ErrDoCmd.Hourglass FalseSet rst = New ADODB.RecordsetSet conn = New ADODB.Connection' Tworzę wyrażenie SQL, bazując na aktualnej' wartości pola listy rozwijalnejstrSQL = "Select * from Categories Where CategoryID=" & Me.cboFind' Tworzenie połączenia ADO do serwera SQLWith conn.Provider = "SQLOLEDB".ConnectionString = "data source=pawel;user id=sa;" & _"initial catalog=NorthWindCS"' Tryb tylko do odczytu.Mode = adModeRead.OpenEnd With' Otwórz Recordsetrst.Open strSQL, conn' Wypełnij wartościMe.CategoryID = rst!CategoryIDMe.CategoryName = rst!CategoryName' Zamknij połączenierst.Closeconn.CloseSet conn = NothingSet rst = NothingProc_Exit:DoCmd.Hourglass FalseExit SubProc_Err:MsgBox Err.DescriptionResume Proc_ExitEnd SubGdy zaczniesz tworzyć niezwiązane formularze, będziesz chciał zmieniać, kasować dane oraz wykonywać inne operacje wADO.Poniżej opiszemy, jak używać ADO oraz OLE DB dla serwera SQL.290Część V f& Access i architektura klient-serwerZaawansowane właściwości: dostawca OLE DB dla serwera SQLAby użyć dostawcy OLE DB dla serwera SQL, musisz upewnić się, czy jest on zainstalowany na komputerze.W trakciestandardowej instalacji Accessa 2000 instalowany jest także dostawca OLE DB do SQL Server.Po zainstalowaniudostawcy możesz używać obiektu połączenia.Aby ustawić obiekt połączenia (ang.: connection), należy użyć składniprzedstawionej na wydruku 16.6.Wydruk 16.6.Podłączanie do serwera SQL przez OLE DBSub SQLServer()' Procedura podłączenia do serwera SQLDim conn As ADODB.ConnectionSet conn = New ADODB.ConnectionWith conn.Provider = "SQLOLEDB".ConnectionString = "data source=(local);" & _"user id=sa;initial catalog=NorthWindCS".Mode = adModeRead.OpenEnd WithMsgBox "Połączony z " & conn.Provider, vbInformationEnd SubNastępny zestaw wynikówJedną z właściwości serwera SQL, której nie dało uzyskać się przy użyciu technologii Jet, jest wykonywanie dwóchwyrażeń SQL jak jednego.Używając tej właściwości, możesz kilkakrotnie wykonywać wyrażenie SQL zwracające różnezestawy rekordów, używając jednego obiektu Recordset.Aby to zrobić, użyj metody NextRecordset.Wydruk 16.7.Użycie NextRecordsetSub NextRst(strCustomerId As String)' Użyj ALFKI lub ANTON dla przykładu' Procedura używa jednego obiektu Recordset dwa razyDim cmd As ADODB.CommandDim conn As ADODB.ConnectionDim rst As ADODB.RecordsetDim strSQL As StringSet conn = New ADODB.Connection' Podłączenie do serwera SQLWith conn.Provider = "SQLOLEDB".ConnectionString = "data source=(local);" & _"user id=sa;initial catalog=NorthWindCS".Mode = adModeRead.OpenEnd With' Wyrażenie SQL zwracające dwa zestawy wyników' Możesz to uruchomić tylko na serwerze, który' wspiera wielokrotne zestawy wynikówstrSQL = "Select * From Customers Where CustomerID=" & _Chr(39) & strCustomerId & Chr(39)strSQL = strSQL & vbNewLinestrSQL = strSQL & "Select * From Orders Where CustomerID=" & _Chr(39) & strCustomerId & Chr(39)Set cmd = New ADODB.CommandWith cmd.CommandText = strSQL.ActiveConnection = conn.CommandType = adCmdTextEnd WithSet rst = cmd.Execute' Otwarcie pierwszego zestawu wynikówDo Until rst.EOFDebug.Print rst!CompanyNamerst.MoveNextLoop' Pobierz następny zestawSet rst = rst.NextRecordsetDo Until rst.EOF291Rozdział 16.f& Tworzenie interfejsu użytkownika dla Microsoft SQL ServerDebug.Print rst!OrderDaterst.MoveNextLooprst.Closeconn.CloseSet rst = NothingSet cmd = NothingSet conn = NothingEnd SubWykonywanie poleceń z parametramiWcześniej, w rozdziale 1., kładłem nacisk na korzyści z użycia procedur przechowywanych w aplikacji, wszędzie tam,gdzie jest to możliwe, aby wykorzystać szybkość wykonania i zmniejszenie ruchu w sieci.Teraz gdy wykorzystujemyADO, użycie procedur przechowywanych daje te same korzyści.W ADO, gdy używasz obiektów poleceń dostawcy OLEDB dla serwera SQL, można odwzorować ten obiekt na procedurę przechowywaną i przekazywać do niej parametrypoprzez obiekty parametrów.Jak większość rzeczy w ADO, można zrobić to na kilka sposobów.W dalszej części roz-działu prześledzimy najczęstsze sposoby użycia procedur przechowywanych i obiektów poleceń, jednak musisz samstwierdzić, który najlepiej pasuje do Twojego stylu programowania.Ja postaram się przekazać moje komentarze, abypomóc Ci w tych wyborach.Długa drogaNajlepiej rozpocząć od najbardziej pracochłonnej metody wykonywania procedur.Chociaż nikt nie będzie chciał pracowaćw taki sposób, można nauczyć się kilku rzeczy.Po pierwsze, docenisz inne metody wykonywania procedur, a po drugie,zrozumiesz zależności pomiędzy obiektami Connection, Command i Parameter, których będziesz używał w swoichprogramach.Aby uruchomić polecenie z parametrem, musisz utworzyć obiekt Command i Parameter, a następniedołączyć obiekt Parameter do Command (patrz wydruk 16.8).Wydruk 16.8.Wykonanie polecenia z parametremSub ExecuteCommandwithParms()' Procedura uruchamia procedurę przechowywaną z parametramiDim conn As ADODB.ConnectionDim cmd As ADODB.CommandDim prm As ADODB.ParameterSet conn = New ADODB.Connection' Zestawienie połączenia z bazą danychWith conn.Provider = "SQLOLEDB".ConnectionString = "data source=(local);" & _"user id=sa;initial catalog=NorthWindCS".OpenEnd With' Utworzenie i inicjalizacja obiektu ConnectionSet cmd = New ADODB.CommandWith cmd.ActiveConnection = conn.CommandText = "byroyality".CommandType = adCmdStoredProcEnd With' Utworzenie i inicjalizacja obiektu parameterSet prm = New ADODB.ParameterWith prm.Name = "@percentage".Direction = adParamInput.Type = adInteger.Value = 50End Withcmd.Parameters.Append prm' Otwarcie obiektu Recordset z wykonanego poleceniaDim rst As ADODB.RecordsetSet rst = cmd
[ Pobierz całość w formacie PDF ]