PDA

View Full Version : تغییر control source فیلدهای گزارش



انگوران
چهارشنبه 14 آذر 1386, 09:48 صبح
دوستان سلام _ در نمونه برنامه ای که ضمیمه کردم لطف کنید کد رو به شکلی اصلاح کنید که اگه در فرم گزارشگیری گزینه اول انتخاب شد کنترل سورس فیلد text5 در روی گزارش ، فیلد a و اگر گزینه دوم انتخاب شد کنترل سورس اون فیلد b بشه .
در ضمن اگه این کد هم در گزارش و هم در کامند روی فرم نوشته بشه ممنون میشم .

انگوران
چهارشنبه 14 آذر 1386, 09:57 صبح
با عرض پوزش فایل ضمیمه نشده بود .

mostafa-sohrablou
چهارشنبه 14 آذر 1386, 10:25 صبح
سلام
فقط کافیست کد رو به این صورت تغییر بدهی درست می شه.

Select Case Forms!form1.Frame1
Case 1
Me.Text5.controlsource = "A"
Case 2
Me.Text5.controlsource = "B"
End Select

انگوران
چهارشنبه 14 آذر 1386, 11:49 صبح
دوست عزیز ضمن تشکر فراوان بعرض برسانم نکته اصلی این بود که کوتیشن اطراف نام فیلد رو نمیذاشتم ( در ضمن می پذیرم که در اینگونه موارد استفاده از select case بهتر از if هست ) و در خصوص کدی که قرار شد در کامند روی فرم نوشته بشه نیز این نکته حائز اهمیت هست که در صورتی که گزارش باز نباشه یا تو محیط پیش نمایش باز باشه امکان تغییر کنترل سورس فیلد نیست به همین منظور ابتدا گفتم فرم تو محیط طراحی باز بشه و کنترل سورس اونو تغییر دادم سپس در حالت پیش نمایش اونو باز کردم . به کد زیر توجه بفرمائید .

On Error GoTo Err_Command0_Click

Dim stDocName As String

stDocName = "Table1"
DoCmd.OpenReport stDocName, acViewDesign
If Me.Frame1 = 1 Then
Reports!Table1.Text5.controlsource = "a"
ElseIf Me.Frame1 = 2 Then
Reports!Table1.Text5.controlsource = "b"
End If
DoCmd.OpenReport stDocName, acViewPreview

Exit_Command0_Click:
Exit Sub

Err_Command0_Click:
MsgBox Err.Description Resume Exit_Command0_Click

mostafa-sohrablou
چهارشنبه 14 آذر 1386, 11:58 صبح
خوب چرا اینکار را انجام می دهی.
ابتدا اگر گزارش موردنظر باز بود آن را ببند و سپس کاری که می خواهید انجام دهید.

انگوران
چهارشنبه 14 آذر 1386, 12:42 عصر
اگه گزارش باز نباشه نمیشه کنترل سورس فیلدهای اونو تغییر داد .

mostafa-sohrablou
چهارشنبه 14 آذر 1386, 13:26 عصر
مگر در هنگام باز شدن گزارش به تکست باکسها و گزارش کنترل سورس نمی دهی .
خوب همین درست است. یعنی شما در یک فرم قبل از باز شدن گزارش تمام مشخصه های گزارش را تعیین می کنید سپس به گزارش می گوئید که باز شود.

انگوران
چهارشنبه 14 آذر 1386, 14:59 عصر
در کد فوق اگه قبل از تکه کدی که با کنترل سورس کار داره کد زیر رو نذارم گزارش درست جواب نمی ده

DoCmd.OpenReport stDocName, acViewDesign
اگه کد باز کزدن فرم بصورت پیش نمایش رو قبل یا بعد از کد هم بذارم ایراد می گیره .

mostafa-sohrablou
چهارشنبه 14 آذر 1386, 15:19 عصر
برنامه رو بزار برات درست کنم.
راستی نمونه ای که گذاشته بودم چک کردی

انگوران
چهارشنبه 14 آذر 1386, 16:58 عصر
دوست عزیز نمونه شما موردی نداشت و کارم راه افتاد ولی من منظورم اینه که اگه بجای اینکه بخوایم کد رو توی گزارش بنویسیم روی کامند فرم مربوط به گزارشگیری بنویسیم باید به شکل فوق عمل کنیم در ضمن اگه روش جالب تری دارین که مطمئنا" دارین می تونید رو کامند فرم نمونه ای که گذاشتم کد رو وارد کرده و پیوست نمائید .

mostafa-sohrablou
چهارشنبه 14 آذر 1386, 17:47 عصر
نه به این صورت که شما می گوئید جواب نمی دهد.
حالا یه سوال دارم : چه لزومی داره که شما به این صورت کار کنید.
یه پیشنهاد دیگه اینکه : شما می تونید یه تکست باکس توی فرم بزارید و سپس جلوی کنترل سورس توی گزارش بگید اطلاعات را از او تکست باکس فرم بگیره.
Me.Text5.controlsource = Forms!form1.Text8

انگوران
پنج شنبه 15 آذر 1386, 06:21 صبح
دوست عزیز روشی که فرمودین هم روش خوبیه البته بجای اینکه روی فرم textbox بذاریم بهتره یه کمبو باکس از نوع fieldlist بذاریم .
در ضمن کدی که نوشتم رو اول تست کردم بعد از اینکه جواب داد اینجا گذاشتم .