Cia aprasyta, kaip padaryti: http://www.slxdeveloper.com/page.aspx?action=viewarticle&articleid=103 Pats nebandziau. "CurrentUser" <ne_toks@yahoo.com> wrote in message news:kug7d4$thc$1@trimpas.omnitel.net... > 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. >>>>> >>>> >>> >> >