Sutinku - galimas ir toks variantas. Bet kai funkcija pasiekiama iš bibliotekos, tai daug racionaliau, kadangi nereikia atskirai kiekvienam reikiamam raportui kurti atskiro view'-o, ypač jei recordsource naudojamos tik lenteles. "Raimis" wrote in message news:ktq3re$p6d$1@trimpas.omnitel.net... ..... Del funkcijos kisimo i dll, tai nelabai suprantu - kam? Galima crystal reportui paduoti jau apdirbtus, linksniuotus duomenis per view'a ar stored procedure, kuriuose bus panaudota si funkcija. "CurrentUser" <ne_toks@yahoo.com> wrote in message news:kth34c$fn5$1@trimpas.omnitel.net... > Vėl puikiai. > Dabar viskas ore. O apskritai, tokia abejonė, ar normalu, kai yra ~200 > Case, kišti į funkciją (stabdymo nėra?). Gal logiškiau sukišti į lentelę i > per ryšius paimti reikšmę. Aišku, funkciją gali plačiau naudoti. Tik > blogai va, kad neina į dll sudėti - dabar dar nepatogumas bus > kiekvienąkart įkelt į crystal raportą kaip user-defined funkciją. > > "Raimis" wrote in message news:ktfoe9$caf$1@trimpas.omnitel.net... > > Klaida, vykdant funkcija, gali buti del to, kad nepilnai nurodytas > funkcijos > vardas - reikia butinai nurodyti owner'i , pvz (owner dbo): > > SELECT dbo.linksniuotas('vienas', 2) > > > > "CurrentUser" <ne_toks@yahoo.com> wrote in message > news:kte5ov$8ok$1@trimpas.omnitel.net... >> DJ gerb. Raimi, >> >> Sukišau šį kodą į db, niekas nesikeikia, tai turbūt parašyta gramatiškai. >> Sakau, 'turbūt' todėl, kad negaliu patikrinti: darant kokį view'ą >> keikiasi, kad 'it's not a built-in function. Nežinau, kodėl gi jūzerio >> funkcijos turėtų nepriimti. Tikriausiai todėl, kad aš visapusis oluchas: >> šitos kalbos (T-SQL, C++, Crystal ir pan.) totaliai žalias, todėl >> praleidęs šiąnakt prie googlo padariau išvadą, kad per vėlu jau man į >> šitai lįst. Beieškodamas išeities radau, kad Crystal Reports priima ir >> Basic syntaksę, tai truputį pertvarkęs kodą įkėliau tas (VB) funkcijas į >> ten ir viskas važiuoja. Dabar tik dar viena bėda iškilo, kad būtų labai >> patogu tas funkcijas sukelt į dll, kad būtų pasiekiama kaip ir kitos >> bibliotekos - iš sistemos, bet irgi paryčiais pasidaviau - nėra pagrindų, >> kad suprast kaip ją sukurt. >> Tokie va reikalai. >> >> "Raimis" wrote in message news:ktaaub$bkb$1@trimpas.omnitel.net... >> >> Pirmas blynas ... >> >> Funkcijos naudojimas: >> SELECT dbo.linksniuotas('duodu vienas kirtis-gaunu du', 3) >> >> SQL: >> >> IF EXISTS (SELECT * >> FROM sysobjects >> WHERE name = N'linksnis') >> DROP FUNCTION linksnis >> GO >> >> CREATE FUNCTION linksnis(@Zodis nvarchar(1000), @linksnis int) >> RETURNS nvarchar(1000) >> AS >> BEGIN >> DECLARE @galune nvarchar(3), @galune_n nvarchar(10) >> IF Len(Rtrim(@Zodis))>=3 >> BEGIN >> SELECT @galune = Right(Rtrim(@Zodis),3) >> >> SELECT @galune_n= >> CASE @galune >> WHEN 'nas' THEN >> CASE @linksnis >> WHEN 1 THEN 'no' >> WHEN 2 THEN 'nui' >> WHEN 3 THEN 'ną' >> WHEN 4 THEN 'nu' >> WHEN 5 THEN 'ne' >> ELSE '' >> END >> WHEN 'tis' THEN >> CASE @linksnis >> WHEN 1 THEN 'čio' >> WHEN 2 THEN 'čiui' >> WHEN 3 THEN 'tį' >> WHEN 4 THEN 'čiu' >> WHEN 5 THEN 'tyje' >> ELSE '' >> END >> ELSE @galune >> END >> SELECT @Zodis = Substring(@Zodis, 1,Len(@Zodis) - 3) + @galune_n >> END >> >> RETURN @Zodis >> END >> GO >> >> IF EXISTS (SELECT * >> FROM sysobjects >> WHERE name = N'linksniuotas') >> DROP FUNCTION linksniuotas >> GO >> >> CREATE FUNCTION linksniuotas(@sakinys nvarchar(2000), @linksnis int) >> RETURNS nvarchar(2000) >> AS >> BEGIN >> >> >> >> >> DECLARE @sakinys_n nvarchar(2000), @Zodis nvarchar(1000) >> SELECT @sakinys_n='' >> >> >> >> SELECT @sakinys = Rtrim(@sakinys) + ' ' >> >> WHILE CHARINDEX(' ', @sakinys) > 0 >> Begin >> SET @Zodis = LEFT(@sakinys, CHARINDEX(' ', @sakinys)) >> >> >> IF CHARINDEX('-',@Zodis)>0 >> BEGIN >> DECLARE @zod nvarchar(1000), @nsak nvarchar(1000) >> SELECT @zod= replace(@Zodis,'-',' '), @nsak='' >> >> >> WHILE CHARINDEX(' ', @zod) > 0 >> BEGIN >> SET @Zodis = LEFT(@zod, CHARINDEX(' ', @zod)) >> SELECT @nsak = @nsak + dbo.linksnis(@Zodis, @linksnis) + '-' >> SET @zod = SUBSTRING(@zod,CHARINDEX(' ', @zod)+1,len(@zod)) >> END >> SELECT @sakinys_n = @sakinys_n + ' ' + LEFT(@nsak,LEN(@nsak)-1) >> END >> ELSE >> BEGIN >> SELECT @sakinys_n = @sakinys_n + ' ' + dbo.linksnis(@Zodis, >> @linksnis) >> END >> >> SET @sakinys = SUBSTRING(@sakinys,CHARINDEX(' ', >> @sakinys)+1,len(@sakinys)) >> End >> >> RETURN @sakinys_n >> END >> >> >> >> >> >> >> "CurrentUser" <ne_toks@yahoo.com> wrote in message >> news:kt68m1$lhc$1@trimpas.omnitel.net... >>> Dedu. Prašymas labai nesityzdavot. Esu tik 'amateur', neturiu jokio IT >>> išsilavinimo, bet kai ką pasidarau dėl automatizacijos. Taigi >>> >>> Function Linksniavimas(Name, Lin As Integer) >>> On Error Resume Next >>> Dim ar_su_bruksniu As Integer >>> >>> ar_su_bruksniu = InStr(1, Name, "-", vbTextCompare) 'nustatoma, ar yra >>> stringe brūkšnys >>> If ar_su_bruksniu > 0 Then 'jei yra brūkšnys >>> Linksniavimas = Bruksnys(Name, Lin) 'su brūkšniu >>> Else ' jei nėra brūkšnio >>> Linksniavimas = separate(Name, Lin) 'be brūkšnio >>> End If >>> >>> End Function >>> Function Bruksnys(Name, Lin) >>> On Error Resume Next >>> Dim pos As Integer >>> Dim iki_bruksnio, po_bruksnio >>> >>> pos = InStr(Name, "-") 'nustatoma, kur yra brūkšnys >>> iki_bruksnio = Mid(Name, 1, pos - 1) 'paimamas Str iki brūkšnio >>> po_bruksnio = Mid(Name, pos + 1) 'paimamas Str nuo brūkšnio >>> >>> Bruksnys = separate(iki_bruksnio, Lin) & "-" & separate(po_bruksnio, >>> Lin) 'viskas linksniuojama ir sujungiama >>> >>> End Function >>> >>> Function separate(Name, Lin) >>> On Error Resume Next >>> Dim num, poz As Integer >>> >>> If IsNull(Name) Then >>> separate = "" >>> Exit Function >>> Else >>> Name = Replace(Name, "-", " ") >>> seka = Split(Name, , , vbTextCompare) 'Išskirstomi stringo žodžiai į >>> Seką >>> For num = 0 To UBound(seka) >>> zodzio_gal = IIf(linksnis(seka(num), Lin) = "", Right(seka(num), >>> 3), linksnis(seka(num), Lin)) >>> 'suformuojama seka iš naujai gautų žodžių >>> seka(num) = Replace(seka(num), Right(seka(num), 3), zodzio_gal) >>> Next num >>> End If >>> separate = Trim(Join(seka)) 'sujungiama seka i nauja string'-a >>> >>> End Function >>> 'Identifikuojama galūnė >>> Function linksnis(Name, Lin) >>> galune = Right(Name, 3) >>> Select Case galune >>> Case "nas" >>> linksniai = Array("no", "nui", "ną", "nu", "ne") >>> Case "tis" >>> linksniai = Array("čio", "čiui", "tį", "čiu", "tyje") >>> Case Else >>> linksniai = Array("", "", "", "", "") >>> End Select >>> >>> linksnis = linksniai(Lin) >>> >>> End Function >>> >>> "zZz" wrote in message news:kt3uii$vrv$1@trimpas.omnitel.net... >>> >>> Įmesk kodą ;) >>> >>> "CurrentUser" <ne_toks@yahoo.com> wrote in message >>> news:ks1ht5$tou$1@trimpas.omnitel.net... >>>> Sveiki, >>>> >>>> Kas galetu konvertuoti VBA koda (tokia nedidele 'user function' (50 >>>> eiluciu)) i SQL Serveriui (2008 R2) suprantama kalba (gal T-SQL, ar >>>> koki >>>> biesa - cia as ABS. zalias)? >>>> atlygis alumi vln >>>> >>>> Pagarba. >>>> >>> >> >