HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

COM-objektumok elérése tárolt eljárásból


Példaprogram letöltése

9607 bájt

Az talán sokak számára ismert, hogy alkalmazásainkból kapcsolatot teremthetünk a Microsoft Office szoftvercsomag elemeivel COM-komponensek interfészein keresztül. Példányosíthatjuk osztályaikat, meghívhatjuk azok metódusait. Talán kevésbé köztudott azonban, hogy ezt megtehetjük a MS SQL Server tárolt eljárásaiból is. Cikkünkben bemutatunk egy példát arra vonatkozóan, hogy miként érhetjük el az MS Word alkalmazás egy funkcióját az említett módon.

A példához szükséges az OLEDB adatbázis, melyet a mellékelt Run_script.cmd BATCH állomány lefuttatásával hozhatunk létre. Az OLEDB.sql script 5. sorában adja meg helyesen a létrehozandó adatbázisfájlok mappájának nevét és elérési útvonalát.
A MS SQL Server rendelkezésünkre bocsát néhány rendszerfüggvényt, melyek segítségével elérhetők a programcsomag alkalmazásait reprezentáló COM-objektumok, példányosíthatjuk őket, meghívhatjuk metódusaikat, az eredményről pedig kapunk visszajelzést.
A példában a megadott szöveget átadjuk paraméterként az OLEDB.sql parancsállomány lefuttatása után az adatbázisba bekerült Checking tárolt eljárásnak, amely meghívja a létrehozott Word alkalmazás-példány CheckSpelling metódusát, amely leellenőrzi a kapott szöveget helyesírás szempontjából. Amennyiben a szöveg helytelen szavakat tartalmaz, akkor azt jelzi. A programban szabtunk egy határt a megadandó szöveg hosszának, ez 128 karakter.
A Word alkalmazás példányának eléréséhez a sp_OACreate rendszerfüggvényt használjuk, melynek szintaxisa a következő:
sp_OACreate progid | clsid,
objecttoken OUTPUT
[ , context ]
A függvény első paraméterében kell megadni a létrehozandó objektum-példány nevét, mely jelen esetben Word.Application. Amennyiben szükséges, használhatjuk a szerver objektum CLSID azonosítóját is, mely egy egyedi számsor.
A második paraméter egy, a tárolt eljárásban deklarált lokális változó, mely a művelet visszatérési értékeként fogható fel, később még fel kell használnunk.
A harmadik paraméter opcionális, a futtatás körülményeivel kapcsolatban adhatunk meg egy értéket. Lehetséges értékei:
  • 1: az objektumpéldány futása processzen belüli, vagyis ekkor az SQL Server memóriaterületét és egyéb erőforrásait használhatja.
  • 4: ebben az esetben a példány nem használhatja az SQL Server erőforrásait.
  • 5: ebben az esetben mindkét futási forma engedélyezett.
Amennyiben nem adunk meg értéket, az 5 lesz az alapértelmezett.
Az objektum kívánt metódusának meghívásához használjuk a sp_OAMethod rendszerfüggvényt, mely a következő szintaxissal bír:
sp_OAMethod objecttoken, 
methodname 
[ , returnvalue OUTPUT ]
[ , [ @parametername = ] parameter [ OUTPUT ]
Paraméterei:
  • OBJECTTOKEN: A metódus első paraméterében kell megadjuk azt az értéket, melyet a létrehozás metódusában második paraméterként megkaptunk.
  • METHODNAME: A második paraméterben adjuk meg a metódus nevét, jelen esetben CheckSpelling nevet.
  • RETURNVALUE: A harmadik paraméter tartalmazza a függvény meghívásának visszatérési értékét, mely jelezni fogja, hogy a metódus hibátlan, vagy hibás szöveget ellenőrzött. A változó egy lokálisan deklarált változó.
  • PARAMETERNAME: A negyedik paraméter tartalmazza a meghívandó metódus lehetséges paramétereit, az OUT módú paramétereket is. Ez példánkban az ellenőrzendő szöveg lesz.
Az objektum-példány megszüntetésére használjuk a sp_OADestroy rendszerfüggvényt, a következő szintaxissal:
sp_OADestroy objecttoken
A függvény egy paramétert vár, ami nem más, mint az objektum létrehozásakor kapott referencia.
Ezek ismeretében lássuk, hogyan is épül fel a tárolt eljárás. Kezdenünk kell azzal, hogy deklarálunk néhány lokális változót:
create procedure Checking (@Word varchar(128), @Out int output) as
  DECLARE @Token int
  DECLARE @Hresult int
  DECLARE @Showresult bit
  DECLARE @Result int
A következő lépés a Word.Application objektum létrehozása.
  EXEC @Hresult = sp_OACreate 'Word.Application', @Token OUT 
Ezt követően meghívjuk a CheckSpelling metódust a megadott szöveggel.
  EXEC @Hresult = sp_OAMethod @Token, 'CheckSpelling', @Showresult OUT, @Word
Végül megszüntetjük az objektumot.
  EXEC @Hresult = sp_OADestroy @Token
Amennyiben a metódushívások eredménye nem megfelelő, vagyis a @Hresult változó értéke nulla, akkor a tárolt eljárásunk az @Out paraméterben 1 értékkel tér vissza.
  IF @Hresult <> 0
  BEGIN
    SET @Result = 1  
  END
Amennyiben a szöveg hibátlan, vagyis a @Showresult változó értéke 1, akkor a tárolt eljárásunk az @Out paraméterben 0 értékkel tér vissza, egyébként 2 értékkel.
  IF @Showresult = 1
  BEGIN
    SET @Result = 0
  END
  ELSE BEGIN
    SET @Result = 2
  END
  SET @Out = @Result
GO

Cikksorozat

#IDKategóriaCikk címeSorozat
2591WindowsTippek és trükkök - RAS - Modem csengetési szám állítása1. rész
2622WindowsTippek és trükkök - Program futtatása más felhasználóként2. rész
2640WindowsA Windows ikonméretének megváltoztatása és Windows 2000 Asztaltémák3. rész
2657WindowsTippek és trükkök - Internet Explorer4. rész
2667WindowsTippek és trükkök5. rész
2684WindowsAlapértelmezések állítása, telepítési fájlok helye, intéző nézetek6. rész
2696WindowsBiztonsági trükkök7. rész
2702WindowsWindows XP trükkök8. rész
2729WindowsWindows 2000 és XP tippek, trükkök9. rész
2757WindowsRegistry trükkök10. rész
2784WindowsTippek, trükkök11. rész
2829WindowsTippek, trükkök12. rész
2889WindowsWindows XP tippek13. rész
2909WindowsTippek Windows XP-hez14. rész
2919WindowsWindows tippek15. rész
2924WindowsWindows tippek16. rész
2963WindowsWindows tippek17. rész
2973WindowsWindows Tippek18. rész
2981WindowsWindows tippek19. rész
2990WindowsTippek-trükkök20. rész
3027WindowsIIS tippek21. rész
3034WindowsWindows XP tippek-trükkök22. rész
3088WindowsWindows 2000/XP tippek, trükkök23. rész
3133WindowsWindows XP tippcsokor24. rész
3140WindowsWindows XP tippek, trükkök25. rész
3152WindowsXP és IIS tippek - trükkök26. rész
3158WindowsWindows XP tippek, trükkök27. rész
3168WindowsTippek, trükkök28. rész
3170WindowsRegistry trükkök29. rész
3179WindowsTippek, trükkök30. rész
3197WindowsWindows XP tippek, trükkök31. rész
3205WindowsTippek, trükkök32. rész
3214WindowsTippek, trükkök33. rész
3223WindowsTippek, trükkök34. rész
3233WindowsTippek, trükkök35. rész
3271WindowsTippek, trükkök36. rész
3307WindowsTippek, trükkök37. rész
3370WindowsTippek, trükkök38. rész
3399WindowsTippek, trükkök39. rész
3510WindowsTippek, trükkök40. rész
3611WindowsHardverrel kapcsolatos tippek, trükkök41. rész
3668WindowsRegistry trükkök42. rész
3711WindowsTippek, trükkök43. rész
3771WindowsTippek, trükkök44. rész
3801WindowsTippek, trükkök45. rész
3831WindowsTippek, trükkök46. rész
3891WindowsTippek, trükkök47. rész
3921WindowsTippek, trükkök48. rész
3981WindowsTippek, trükkök49. rész
4041WindowsTippek, trükkök50. rész
4071WindowsTippek, trükkök51. rész
4151WindowsTippek, trükkök52. rész
4171C#Tippek, trükkök53. rész
4211WindowsTippek, trükkök54. rész
4251WindowsTippek, trükkök55. rész
4281WindowsTippek, trükkök56. rész
3589DelphiTippek, trükkök57. rész
3718DelphiTippek, trükkök58. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2003 évkönyv 265. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |