View Full Version : کریستال ریپورت
amir_masoud
شنبه 19 مهر 1382, 00:25 صبح
سلام
من میخوام گزارشهام رو با کریستال ریپورت بگیرم . بعد از نصب اون داخل منوی project داخل محیط vb گزینه add crystalreport اضافه شده که می شه یه محیط طراحی گزارش رو باز کرد .
در این قسمت با ویزاردها می شه بانک رو انتخاب کرده و گزارش رو تهیه کرد و نمایش داد ولی من میخوام که گزارشی که می گیرم طوری باشه که برنامه روی هر سیستمی و هر جایی که نصب شد درست کار کنه . می خواستم ببینم که برای ساختن connection و وصل شدن به بانک و برداشتن رکوردهای مورد نظر از چه کدهایی باید استفاده کرد . من قبلآ با dataEnvironment هیچ مشکلی نداشتم و با اون خیلی راحت می شه گزارشهای پویا گرفت . اگه می شه حالا درمورد گرفتن این گزارشها در کریستال ریپورت منو راهنمایی کنین .
قبلا از راهنمایی شما سپاسگذارم
کم حوصله
شنبه 19 مهر 1382, 03:10 صبح
دوست عزیز بهترین نوع برقراری ارتباط با بانکها از طریق ODBC است که این امکان را به شما می دهد که بانک شما هر جا که بود یا برنامه شما هرجا بود شما امکان برقراری ارتباط داشته باشی
این مستلزم این است که شما در ODBC داخل کنترل پنل یک DSN بسازی که این DSN وظیفه ارتباط دادن برنامه شما و بانک شما می باشد
بدین صورت که شما با ODBC به بانکت وصل می شوی و بعد از داخل برنامه خود ODBC را صدا زده و بانکت را باز می کنی
بهترین کاربرد این روش برای برنامه هایی است که بر روی شبکه اجرا می شوند چون بانک در روی سرور بوده و معمولا برنامه ها بر روی استیشن می باشد خو ب پس بهترین را استفاده از ODBC ویندوز می باشد
البته ناگفته نماند که راه های مختلف و مفید دیگری هم است
در ضمن DATA ENVIRONMENT هم می تواند از طریق ODBC به بانک حل شود
راستی در کریستال ریپورت در قسمت PROJECT که بانک خود را معرفی می کنی و از DATA ENVIRONMENT استفاده می کنی هیچ ربطی به DATA ENVIRONMENT داخل خود VB ندارد :wink:
اگر از ODBC استفاده کنی خیلی راحت در همان قسمت PROJECT گزینه اول را انتخاب کرده و از طریق رابط ان کار خود را به سهولت انجام بدی
امتحانی بکن اگر در این زمینه مشکلی داشتی بگو تا جایی که در توانم باشه کمکتان می کنم :oops:
amir_masoud
یک شنبه 20 مهر 1382, 01:59 صبح
من تویه یه قسمت از فروم دیدم که کد زیر رو نوشته بودن :
Dim Report As New CrystalReport1
Private Sub Form_Load()
' Declare a ConnectionProperty object.
Dim CPProperty As CRAXDRT.ConnectionProperty
' Declare a DatabaseTable object.
Dim DBTable As CRAXDRT.DatabaseTable
' Get the first table in the report.
Set DBTable = Report.Database.Tables(1)
' Set the new location of the database.
DBTable.location=app.path &"mybank.mdb"
' Get the "Database Password" property from the
' ConnectionProperties collection.
Set CPProperty = DBTable.ConnectionProperties("Database Password")
' Set the database password.
CPProperty.Value = "x"
Screen.MousePointer = vbHourglass
CRViewer91.ReportSource = Report
CRViewer91.ViewReport
Screen.MousePointer = vbDefault
End Sub
Private Sub Form_Resize()
CRViewer91.Top = 0
CRViewer91.Left = 0
CRViewer91.Height = ScaleHeight
CRViewer91.Width = ScaleWidth
End Sub
می خواستم ببینم که با این کد می شه کاری رو که من میخوام انجام داد .چون من زمانی که از این قطعه کد استفاده کردم error داد ( روی خط Dim CPProperty As CRAXDRT.ConnectionProperty )
من کریستال ریپورت رو از داخل vb ( از منوی project---add crystal report 8.5 ) استفاده کردم.
به نظر شما ایا باید refrence ی چیزی رو اضافه کرد یا نه ؟ در ضمن بانک من هم اکسسه.
مخلص تمام برنامه نویسها!!! یکی جواب ما رو هم بده !
کم حوصله
یک شنبه 20 مهر 1382, 02:29 صبح
سلام
دوست عزیز این فایل را اینجا دیدی
و اون دوستمون هم همین مشکل را داشت ولی آقای نصیری جوابش را داد ببین
http://www.barnamenevis.org/forum/viewtopic.php?t=898
کم حوصله
یک شنبه 20 مهر 1382, 02:37 صبح
راستی این را هم می تونی استفاده کنی
من که استفاده کردم و جواب داد
دست آقای عریزی عزیز درد نکنه
این کد از آقای عریزی است
Private Sub Form_Load()
Dim adoCn As New ADODB.Connection
Dim adoRs As New ADODB.Recordset
Dim Report As New CrystalReport1
adoCn.Open "Provider=Microsoft.Jet.Oledb.4.0; Data Source=G:\Programs\Microsoft Visual Studio\VB98\NWIND.MDB"
adoRs.Open "SELECT * FROM Employees", adoCn
Report.DiscardSavedData
Report.Database.Tables(1).SetDataSource adoRs, 3
Screen.MousePointer = vbHourglass
CRViewer1.ReportSource = Report
CRViewer1.ViewReport
Screen.MousePointer = vbDefault
End Sub
برای رفع این اشکال فکر میکنم در زمان لود شدن گزارش اگر یک رکوردست رو به اون Bind کنید مشکل حل بشه.
به این صورت که ابتدا یک Connection رو باز کنید و بعد رکوردست موردنظزتون رو. بعد اون رکوردست رو به گزارش نسبت بدید
DiscaredSaveData برای اطمینان از عدم باقی ماندن داده های قبلی است و یک متد است که هیچ آرگومانی ندارد
امید وارم که به دردتون بخوره
amir_masoud
دوشنبه 21 مهر 1382, 00:07 صبح
سلام کم حوصله جان
من از قطعه کدی که از جناب اقای عریزی نوشته بودین استفاده کردم و الان از این طریق می شه database و recordset رو تعریف کرد . می خواستم ببینم برای تنظیم کنترلهای ( text object ) روی محیط طراحی از چه خاصیت هایی باید استفاده کرد و اصلاا باید این کار رو با کد نویسی انجام داد یا در محیط طراحی می شه اونا رو ست کرد . ( در data environment خاصیت های data source و data field بودن که با تنظیم اونا می شد اطلاعات رو روی گزارش نشون داد در crystall report باید چه خواصی رو ست کرد تا اطلاعات درون جداول رو بشه خوند و نشون داد)
باز هم از جوابهایی که به سوالات من دادی یه دنیا ممنون
کم حوصله
چهارشنبه 23 مهر 1382, 20:20 عصر
اولا که ما اینجایم بار کمک به هم :oops:
دوما شما از آن طریق که اول گفتم گزارشاتت را به بانک وصل کن بعد فیلد هایی که به شما می دهد را در برنامه اضافه کن
سوما ببخشید دیر جواب دادم چون من نبودم و امروز امدم
چهارما سعی می کنم یک نمونه برات اینجا بگذارم تا بفهمی چی می گم :wink:
amir_masoud
چهارشنبه 23 مهر 1382, 23:46 عصر
سلام
ممنون از جوابهای شما
اگه لطف کنین و یه نمونه اینجا بزارین خیلی ممنون می شم . اینطوری زیاد متوجه منظورتون نمی شم و خودم هم هر چی بهش ور رفتم درست نشد که نشد .
کم حوصله
پنج شنبه 24 مهر 1382, 13:05 عصر
سلام
اینم از قولم (البته بازم دست آقای عریزی درد نکنه )
آدرس بانک را فقط یادت نره درست کنی
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.