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. >> >