ورود

View Full Version : مبتدی: گزارشگیری بر اساس یک فیلد در fast report



sldvhlds
شنبه 29 آبان 1395, 06:20 صبح
سلام دوستان عزیز

یه راهنمائی درموردFastReport توی vb6 میخوام
من توی محیط خود برنامه یه گزارش طراحی کردم وقتی هم که پیش نمایش میگیرم مشکلی نداره

یه دیتا بیس دارم شامل چند تا رکورد که هررکورد از چند تا فیلد مثلا کد ملی اسم فامیل و... تشکیل میشه می خوام گزارش طوری باشه که کاربر روی یه دکمه کلیک کنه بعد برنامه مقداریه فیلد مثلا کد ملی رو بگیره و اطلاعات رکورد مربوط به اون فیلد رو نشون بده یه کوئری توی خود گزارش نوشتم به این صورت SELECT * FROM Table1 Where Codmeli=999999999 ولی این کوئیری فقط رکورد مربوط به کدملی 9999999 رو برمیگردونه من میخوام کوئری طوری باشه که یک input box قبل از اجرای گزارش باز بشه وکد ملی رو بگیره و رکورد مربوطه رو نشون بده اگه براتون ممکنه یه توضیح کامل همراه با کد(من برنامه نویس یه مرحله قبل از مبتدی هستم:خجالت:) در این مورد برام بفرستید من از خود مثالهای برنامه چیزی سردر نیاوردم

vbhamed
شنبه 29 آبان 1395, 07:37 صبح
سلام

تو این دو تاپیک نمونه هست برای این کار

http://barnamenevis.org/showthread.php?469110-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-fastreport-%D8%AF%D8%B1-VB6&p=2197896&viewfull=1#post2197896

http://barnamenevis.org/showthread.php?350767-%D9%81%D8%B3%D8%AA-%D8%B1%DB%8C%D9%BE%D9%88%D8%B1%D8%AA-%D8%AF%D8%B1-vb6&p=1959527&viewfull=1#post1959527

isaac23
شنبه 29 آبان 1395, 08:36 صبح
خودت جواب خودتو دادی

اگه این Input box باشه:
Dim a As String
a = InputBox("ÔãÇÑå ãáí", "ÔãÇÑå ãáí ÑÇ æÇÑÏ ˜äíÏ")
Label1.Caption = a



نتیجه اون اینپوت رو برابر با Select قرار بده .

پیس میشه این :
q.Query = "Select * from table1 where family = a "



تست نکردم اما باید همین باشه

sldvhlds
شنبه 29 آبان 1395, 15:01 عصر
سلام دوست عزیز توی کوئری که با خود fast report ساختیم چی اونم همین کد باید باشه یا کلا باید خالی باشه
من کدی رو که شما گفتین توی خود برنامه توی قسمت Form_Load نوشتم ولی هروقت که گزارش میگیرم به ازای هر مقدار کد ملی فقط یه نتیجه ثابت رو برمیگردونه حتی اگه اون کد ملی توی بانک نباشه ممنون میشم راهنمائی بفرمائید

isaac23
شنبه 29 آبان 1395, 16:13 عصر
توی خود فست ریپورت هم کد کوئری رو کامل پاک کن نیازی بهش نیست

isaac23
شنبه 29 آبان 1395, 16:17 عصر
در اصل شما باید داخل فست ریپورت هم قسمت کانکشن و هم قسمت کوئوری رو باید کامل پاک کنید تا زمانی که برنامه شما روی سیستم کاربر نصب میشه به آدرس گیر نده .

اینا فقط واسه اتصال و جهت ساخت گزارش هست که در اخر باید حتما پاک شوند.

موفق باشید.

sldvhlds
شنبه 29 آبان 1395, 16:44 عصر
توی خود فست ریپورت هم کد کوئری رو کامل پاک کن نیازی بهش نیست

سلام کد کوئری رو که پاک کنی این خطا رو میده

143546

isaac23
شنبه 29 آبان 1395, 17:07 عصر
اگه ممکنه از دستوراتی که نوشتی یا در صورت ممکن خود پروژه رو قرار بدید.

sldvhlds
شنبه 29 آبان 1395, 18:00 عصر
اگه ممکنه از دستوراتی که نوشتی یا در صورت ممکن خود پروژه رو قرار بدید.

سلام یه نمونه از پروژه رو براتون گذاشتم البته همون نیست ولی مشابه پروژه خودمه فقط دیتابیس و گزارش فرق میکنه:بامزه:

vbhamed
یک شنبه 30 آبان 1395, 10:00 صبح
سلام
نمونه مثالی که گذاشتم رو ندیدید ؟

Dim frp As New FastReport.TfrxReport

Private Sub Form_Load()

frp.EngineOptions.SilentMode = simMessageBoxes
frp.LoadReportFromFile App.Path & "\Test.fr3"

Dim Ado As New TfrxADODatabase
Dim q As New TfrxADOQuery

Set Ado = frp.FindDatabase("Ado")
Set q = frp.FindDatabase("qry")

'------------------------------------------------------------------
q.Query = "Select * from table1 where family = 'Rezaey'"
'------------------------------------------------------------------

Ado.Connected = False
Ado.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Password='';User ID=Admin;Data Source=Test.mdb;Mode=Share Deny None;Extended Properties='';Jet OLEDB:System database='';Jet OLEDB:Registry Path='';Jet OLEDB:Database Password='';Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password='';Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False"
Ado.LoginPrompt = False
Ado.Connected = True
frp.PreviewOptions.RTLPreview = True
frp.PrepareReport True

frv.Report = frp
frv.Unlock

'------------------------------------------------------------------
'frp.SaveReportToFile App.Path & "\Test.fr3"
'------------------------------------------------------------------

End Sub

Private Sub Form_Unload(Cancel As Integer)

Set frp = Nothing

End Sub

sldvhlds
یک شنبه 30 آبان 1395, 15:53 عصر
سلام حامد جان
q.Query = "Select * from table1 where family = 'Rezaey'"
مشکل دقیقا همینجاست من نمیخوام از قبل به کوئری مقدار داده بشه می خوام کاربر قبل از اجرای گزارش مقدار مورد نظرشو توی یه input box وارد کنه وبرنامه
دنبال اون بگرده ونشون بده پست شماره 3 رو هم که دوستمون گفتم انجام دادم کوئری داخل گزارش رو هم پاک کردم ولی جواب نمیده یا ارورپست 7 رو میده یا همیشه وبه ازای هر مقداری یه گزارش ثابت رو برمیگردونه امیدوارم تونسته باشم منظورمو برسونم

isaac23
دوشنبه 01 آذر 1395, 07:57 صبح
سلام فایل رو تغییر دادم و برات فرستادم

یکی توی مسیر دهی دیتا بیس بود و دیگری هم همون کوئوری نگاه بندازی ممتوجه میشی دلیلش چی بوده .

vbhamed
دوشنبه 01 آذر 1395, 09:22 صبح
سلام حامد جان
q.Query = "Select * from table1 where family = 'Rezaey'"
مشکل دقیقا همینجاست من نمیخوام از قبل به کوئری مقدار داده بشه می خوام کاربر قبل از اجرای گزارش مقدار مورد نظرشو توی یه input box وارد کنه وبرنامه
دنبال اون بگرده ونشون بده پست شماره 3 رو هم که دوستمون گفتم انجام دادم کوئری داخل گزارش رو هم پاک کردم ولی جواب نمیده یا ارورپست 7 رو میده یا همیشه وبه ازای هر مقداری یه گزارش ثابت رو برمیگردونه امیدوارم تونسته باشم منظورمو برسونم

سلام
خب این که مثاله دیگه، شما خودتون به جای Rezaey از یک متغیر مثل x استفاده کنید
q.Query = "Select * from table1 where family = '" & x & "'"

isaac23
دوشنبه 01 آذر 1395, 09:52 صبح
ببخشید حامد جان یه سوال من داشتم چطوری فایل فست ریپورت رو قفل کنیم که کسی نتونه دستکاریش بکنه با وجود اینکه نرم افزار فست ریپورت رو داشته باشه .؟

vbhamed
دوشنبه 01 آذر 1395, 10:05 صبح
سلام
اول تو خود FastReport از منوی Report گزینه Option برای گزارشت پسورد میزاری بعدش تو برنامت موقع فراخوانی به شکل زیر عمل می‌کنی

Dim frx As FastReport.TfrxReport
.
.
.
frx.ReportOptions.HiddenPassword = "123"
frx.LoadReportFromFile "c:\test.fr3"