View Full Version : اضافه کردن DLL به گزارش ساز Crystal Report
  
M_Rahgoshay
چهارشنبه 27 تیر 1386, 09:51 صبح
طریقه نصب Dll های نوشته شده توسط زبانهای برنامه نویس را چگونه به گزارش ساز Crystal Report ؟
sm
چهارشنبه 27 تیر 1386, 11:55 صبح
این لینک رو ببینین:
http://support.businessobjects.com/documentation/product_guides/cr_net/vs_2005/html/crtsktutorialsotherufladdfunction.htm
فقط اون فایل dllی رو که داده من نتونستم پیدا کنم.
اگه دوستان کار کردن اینجا هم بزارن تا بقیه استفاده کنن.
موفق باشید
M_Rahgoshay
چهارشنبه 27 تیر 1386, 15:36 عصر
با سلام دوستان جواب سئوال پیدا کردم با دقت مطالعه و عمل کنید :
1- فایلی از نوع  Activex DLL ایجاد کنید.
2- حتما توابع را بصورتی بنویسید که از متغییرهای کمتری و با استاندارد استفاده کرده باشید.
3- متغییر ها فقط میتوانند DATE, Currency,Doubl,Single,Long,Integer,String,Boolean باشند.
4- به هیچ وجه از متغییری با نوع Variant استفاده نکنید.
5- فقط از یک کلاس از نوع عمومی میتوانید استفاده کنید. (Public Function)
6- نام Project Name باید با کلمه CRUFL و با حروف بزرگ شروع شود.
7- تا سه حرف دیگر که حتما با حروف شروع شود میتوانید استفاده کنید. مثال : CRUFLIRI
8-بهتر است نام فایل DLL خود را با U2L شروع کنید.
9- فایل را در ویندوز رجیستر نمائید.
حال پس از اجرای کریستال ریپورت و ایجاد یک فرمول در Formula Editor و در قسمت Functions آیتم Additional Functions را باز کرده و از داخل آن UFLs را پیدا و نام Dll خود را ببیند و روی آن کلیک و استفاده نمائید.
 
با آرزوی موفقیت برای همه
vb341
چهارشنبه 27 تیر 1386, 23:11 عصر
این dll برای تبدیل عدد به حروف در Vb6 استفاده میشه
vb341
چهارشنبه 27 تیر 1386, 23:15 عصر
پس از اجرای کریستال از قسمت additional function  در کریستال قابل دسترسی بوده و می تونید در گزارشها از اون استفاده کنین
vb341
چهارشنبه 27 تیر 1386, 23:20 عصر
پس از اجرای کریستال از قسمت additional function  در کریستال قابل دسترسی بوده و می تونید در گزارشها از اون استفاده کنین
IRNCRUFLIRAhejiadad (sum({Sanad_datail.pardakhti})) & " ریال "
البته باید یک formula field  تعریف کنین و بعد...
sm
پنج شنبه 28 تیر 1386, 09:09 صبح
امکانش هست سورس این DLL رو هم بزارین؟
توی دات نت خواستم درست کنم، وقتی میرم Register کنم پیغام میده که نمیشه این فایل رو رجیستر کرد.
یه پروژه از نوع Class Library اضافه کردم بنام CRUFLtest و بعد یه تابع به شکل زیر تعریف کردم و نهایتا هم ازش خروجی گرفتم... اما کار نکرد.
 Dim s As String
    Public Function ULF2Ali(ByVal s As String) As String
        Return s
    End Function
مشکلش کجاست؟
ممنون
M_Rahgoshay
شنبه 30 تیر 1386, 15:52 عصر
با سلام
این هم یک DLL جهت تبدیل تاریخ میلادی به شمسی قابل استفاده در کریستال ریپورت حتی ورژن 11.
sm
یک شنبه 31 تیر 1386, 09:07 صبح
برای ساختن این DLLها چطوری باید عمل نمود؟
با VB.NET میشه ساخت؟
ممنون
M_Rahgoshay
سه شنبه 02 مرداد 1386, 11:09 صبح
با سلام 
نخیر فقط با VB.6 میتوان ساخت.
sm
سه شنبه 02 مرداد 1386, 11:22 صبح
از کجا با این قاطعیت میگین؟
اگه VB6 میتونه بعید میدونم دات نت نتونه!
کلا دوستان در مورد ساخت این نوع فایلها اطلاعی دارن؟ 
موفق باشید
M_Rahgoshay
سه شنبه 02 مرداد 1386, 14:14 عصر
با سلام مجدد 
دوست عزیز اولا" امتحان کردم و دوما" ساختار فایل DLL گزارش ساز کریستال ریپورت میشناسد را در تاپیک 3 همین جا قرار داده ام.
دوستان اگه انجام دادن کد .NET داخل اینجا هم بگذارن . متشکرم.
sm
سه شنبه 02 مرداد 1386, 14:18 عصر
توی VB6 چطوری باید انجام داد؟
ممنون میشم کامل توضیح بدین.
موفق باشید
sh
سه شنبه 02 مرداد 1386, 16:15 عصر
به خاطر اینکه کریستال از COM استفاده میکنه و نمیتونی اسمبلی های دات نت رو بخونه
sm
چهارشنبه 03 مرداد 1386, 09:01 صبح
شهریار خان شما منبعی برای طراحی این نوع فایلها دارین؟
ابزارش چیه؟
vb341
جمعه 12 مرداد 1386, 04:44 صبح
این هم کد مورد نظر در vb6
'Çíä ÊÇÈÚ ÚÏÏí ÑÇ ÑÝÊå æ ãÞÏÇÑ ÍÑæÝí Âä ÚÏÏ ÑÇ ÈÑ ãíÑÏÇäÏ
'ãËáÇ hedji_adad(92)= "äæÏ æ Ïæ"
'ÈÒÑÊÑíä ãÞÏÇÑ ÞÇÈá ÞÈæá ÈÑÇÈÑ 999æ999æ999æ999 ãíÈÇÔÏ
' ÈÇÈß ÈÎÔÇíÔ
'1381/03/11
Option Explicit
Private Const hezar = " åÒÇÑ"
Private Const melun = " ãíáíæä "
Private Const melyard = " ãíáíÇÑÏ "
Private Const va = " æ "
Public Function heji_adad(ByVal adad As Double) As String
Dim hooroof As String
Dim SS As Integer  'sadgan
Dim hh As Integer   'hezargan
Dim mm As Integer  'melungan
Dim yy As Integer   'melyardgan
Dim STRadad As String
Dim LENadad As Integer
STRadad = Str(Val(Str(adad)))
LENadad = Len(STRadad)
Select Case adad
                Case Is = 0
                                hooroof = "ÕÝÑ"
                Case 1 To 999
                                   hooroof = Adad_Heji(adad)
                                    
                Case 1000 To 999999
                             
                            If (adad Mod 1000 = 0) Then hooroof = Adad_Heji(Int(adad / 1000)) + hezar
                            If (adad Mod 1000 <> 0) Then hooroof = Adad_Heji(Int(adad / 1000)) + hezar + va + (Adad_Heji(adad Mod 1000))
                            
                Case 1000000 To 999999999
                
                SS = Val(Right$(STRadad, 3))
                 hh = Val(Mid$(STRadad, LENadad - 5, 3))
                 mm = Val(Left$(STRadad, LENadad - 6))
                       
               If (SS = 0 And hh = 0) Then hooroof = Adad_Heji(mm) + melun
               If (SS = 0 And hh <> 0) Then hooroof = Adad_Heji(mm) + melun + va + Adad_Heji(hh) + hezar
               If (SS <> 0 And hh = 0) Then hooroof = Adad_Heji(mm) + melun + va + Adad_Heji(SS)
               If (SS <> 0 And hh <> 0) Then hooroof = Adad_Heji(mm) + melun + va + Adad_Heji(hh) + hezar + va + Adad_Heji(SS)
               
               Case 1000000000 To 999999999999#
                         
                       SS = Val(Right$(STRadad, 3))
                       hh = Val(Mid$(STRadad, LENadad - 5, 3))
                       mm = Val(Mid$(STRadad, LENadad - 8, 3))
                       yy = Val(Left$(STRadad, LENadad - 9))
                            
                            If (SS = 0 And hh = 0 And mm = 0) Then hooroof = Adad_Heji(yy) + melyard
                            If (SS = 0 And hh = 0 And mm <> 0) Then hooroof = Adad_Heji(yy) + melyard + va + Adad_Heji(mm) + melun
                            If (SS = 0 And hh <> 0 And mm <> 0) Then hooroof = Adad_Heji(yy) + melyard + va + Adad_Heji(mm) + melun + va + Adad_Heji(hh) + hezar
                            If (SS <> 0 And hh <> 0 And mm <> 0) Then hooroof = Adad_Heji(yy) + melyard + va + Adad_Heji(mm) + melun + va + Adad_Heji(hh) + hezar + va + Adad_Heji(SS)
    
                   Case Is > 999999999999#
                               hooroof = "ÝßÑ ßäã íÇÏÊ ÑÝÊ ÏÓÊÊ ÑÇ ÇÒ Ñæí ÕÝÍå ßáíÏ ÈÑÏÇÑí "
                               
    End Select
    
                
   heji_adad = hooroof
End Function
Private Function Adad_Heji(ByVal adad As Integer) As String
        Dim yekan As Byte
        Dim dahgan As Byte
        Dim sadgan As Byte
        Dim behooroof As String
Dim heji(19) As String
Dim heji_dahgan(9) As String
Dim heji_sadgan(9) As String
'-------------------------------
heji(1) = "íß": heji(2) = "Ïæ": heji(3) = "Óå": heji(4) = "åÇÑ": heji(5) = "äÌ"
heji(6) = "ÔÔ": heji(7) = "åÝÊ": heji(8) = "åÔÊ": heji(9) = "äå": heji(10) = "Ïå"
heji(11) = "íÇÒÏå": heji(12) = "ÏæÇÒÏå": heji(13) = "ÓíÒÏå": heji(14) = "åÇÑÏå": heji(15) = "ÇäÒÏå"
heji(16) = "ÔÇäÒÏå": heji(17) = "åÝÏå": heji(18) = "åíÌÏå": heji(19) = "äæÒÏå"
'-------------------------------
heji_dahgan(1) = "Ïå"
heji_dahgan(2) = "ÈíÓÊ"
heji_dahgan(3) = "Óí": heji_dahgan(4) = "åá": heji_dahgan(5) = "äÌÇå"
heji_dahgan(6) = "ÔÕÊ": heji_dahgan(7) = "åÝÊÇÏ": heji_dahgan(8) = "åÔÊÇÏ"
heji_dahgan(9) = "äæÏ"
'------------------------
heji_sadgan(1) = "íßÕÏ": heji_sadgan(2) = "ÏæíÓÊ": heji_sadgan(3) = "ÓíÕÏ"
heji_sadgan(4) = "åÇÑÕÏ": heji_sadgan(5) = "ÇäÕÏ": heji_sadgan(6) = "ÔÔÕÏ"
heji_sadgan(7) = "åÝÊÕÏ": heji_sadgan(8) = "åÔÊÕÏ": heji_sadgan(9) = "äåÕÏ"
'------------------------------------------------------------------------------------------------------------
                 
         yekan = adad Mod 10
        dahgan = adad Mod 100
        sadgan = Int(adad / 100)
        
'------------------------------------------------------------------------------------------------------------
        If dahgan < 20 Then
                    
                    If (sadgan = 0) Then behooroof = heji(dahgan)
                    If (sadgan <> 0) Then behooroof = heji_sadgan(sadgan) + va + heji(dahgan)
                    If (yekan = 0 And dahgan = 0) Then behooroof = heji_sadgan(sadgan)
                    
                   
        Else
            dahgan = (adad Mod 100) - yekan
                                         
                       If (sadgan = 0 And yekan = 0) Then behooroof = heji_dahgan(dahgan / 10)
                       If (sadgan = 0 And yekan <> 0) Then behooroof = heji_dahgan(dahgan / 10) + va + heji(yekan)
                       If (sadgan <> 0 And yekan = 0) Then behooroof = heji_sadgan(sadgan) + va + heji_dahgan(dahgan / 10)
                       If (sadgan <> 0 And yekan <> 0) Then behooroof = heji_sadgan(sadgan) + va + heji_dahgan(dahgan / 10) + va + heji(yekan)
                       
        
        End If
        
Adad_Heji = behooroof
End Function
Private Sub Command1_Click()
Dim x As Long
x = Text1.Text
      
      MsgBox heji_adad(x)
End Sub
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.