PDA

View Full Version : بردن نتایج یک جستجو به قسمت گزارش



mohammadi
چهارشنبه 14 اسفند 1387, 09:13 صبح
دوستان سلام
فرض کنید یک بانک اطلاعاتی ( در خود وی بی درست شده) داریم که فیلد های آن نام خانوادگی و کد

است به عنوان مثال
می خوام تمام فیلد هایی که نام خانوادگی آنها محمدی است را برام تو یه صفحه گزارش بده و بعدش چاپ کنم

میشه یه راهنمایی در این مورد به من بکنید

kh-hamid
چهارشنبه 14 اسفند 1387, 10:26 صبح
سلام دوست عزیز شما با استفاده از کد های sql براحتی میتونید این کار رو انجام بدید .
برای این کار بهتره از رابط بانک اطلاعاتی adodc استفاده کنید و بعد از اینکه آن را به فرم خود اضافه کردید روی آن راست کلیک کرده و برگه recordsoure قسمت text متن زیر را وارد کنید .
البته قبل از این کار باید بانک خودتون رو ارتباط بدید ( در برگه general )
"select * from table1 where family="mohamadi
table1 نام جدول شماست
family نام فیلد مورد نظر است
برای مطالعه بیشتر در بخش vb بدنبال کد های sql باشد چراکه برنامه نویسی بدون این روش وقت تلف کردن است .

kh-hamid
چهارشنبه 14 اسفند 1387, 10:52 صبح
سلام ببخشید سوال اصلی شما یادم رفت . این هم ارتباط با فرم گزارش
http://rapidshare.com/files/205113813/sample.zip.html

mohammadi
چهارشنبه 14 اسفند 1387, 13:18 عصر
با سلام یا من موضوع را بد مطرح کردم یا شما متوجه مشکل من نشدید

دوست خوبم من می خوام نتایج یک جستجو را چاپ کنم " محمدی " را به عنوان مثال گفتم


یعنی می خوام یه تکست باکس داشته باشم که هر چیزی در آن تایپ شد با
دگمه جستجو نتایج در دیتا گرید نشان داده بشه بعد این نتیجه با یک دگمه بره برای چاپ

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

vahidm
چهارشنبه 14 اسفند 1387, 14:17 عصر
سلام دوست عزيز شما به راحتي مي تونيد با كد زير اين كار رو بكنيد اميدوارم كدي كه دوست عزيزمون kh-hamid گفتند رو فهميده باشيد كد ايشون براي فيلتر كردن اطلاعات در dataGrid مي باشد كد زير رو من براي فيلتر كردن اطلاعات در DataReport گذاشتم

DataEnvironment9.rsCommand1.Filter = "cod'"
DataReport9.Show

اگر سوالي بود در خدمتم
موفق بشيد

mohammadi
چهارشنبه 14 اسفند 1387, 14:52 عصر
lمیشه با مثال و یک سورس انجام بدید

ayub_coder
چهارشنبه 14 اسفند 1387, 14:56 عصر
سلام
می تونی با oledb یه رکورد ست بسازی بعد دستور sql رو توش بنویسی
مثلا
SELECT * FROM table1 WHERE f_id=" + textbox1.text"
و فیلد های رو که می خواید تو گزارش بیارید رو به گزارش اضافه کنید بعد مقادیر dataField اونها رو برابر نام فیلد های موجود تو رکورد ست کنید .
بعد گزارش رو نمایش بدین

mohammadi
چهارشنبه 14 اسفند 1387, 15:18 عصر
متوجه نشدم
میشه ساده تر توضیح بدید

vahidm
چهارشنبه 14 اسفند 1387, 18:23 عصر
سلام
باشه من يه نمونه درست مي كنم ميذارم

mohammadi
چهارشنبه 14 اسفند 1387, 18:30 عصر
دوست خوبم ممنون
منتظر می مانم

vahidm
چهارشنبه 14 اسفند 1387, 19:03 عصر
سلام اينم نمونه برنامه
اميدوارم كه مشكلتون حل بشه
فولدر را در درايو C قرار دهيد .
اگر مشكلتون حل نشد بگيد .
موفق باشيد

mohammadi
چهارشنبه 14 اسفند 1387, 19:59 عصر
وحید جان با سلام

وقت سرچ می کنم و دگمه پرینت را می زنم این خطا رو می گیره ( شکل را پیوست کردم ببینید)

vahidm
چهارشنبه 14 اسفند 1387, 23:10 عصر
سلام جناب آقاي محمدي
ببينيد من اومدم سرچ رو بر اساس كد حساب نوشتم منظورم همين شماره رديف ها مي باشد
شما عدد رو در تكست كوچكي وارد كنيد تا شماره حساب مورد نظر بياره بعد دكمه پرينت رو بزنيد
اگر متوجه نشديد مجددا پيام بذاريد تا راهنماييتون كنم
موفق باشيد

mohammadi
پنج شنبه 15 اسفند 1387, 07:41 صبح
آقا وحید با سلام و تشکر ویژه

فقط این نکته را هم به من بگید آیا همین کار را می توان برای اسم خانوادگی هم انجام بدم یعنی بجای اینکه بر اساس کد باشه بر اساس نام خانوادگی باشه؟ کدوم قسمت کد را باید تغییر بدم؟

ممنون میشم نهایت لطفتتون رو به من بکنید بازم تشکر

ayub_coder
پنج شنبه 15 اسفند 1387, 09:01 صبح
امیدوارم به دردتون بخوره...

kh-hamid
پنج شنبه 15 اسفند 1387, 11:14 صبح
امیدوارم به دردتون بخوره...
سلام بسیار ممنون از این نمونه ای که گذاشیتد .
من با روش شی ado کار می کنم و زیاد با این روش شما آشنایی ندارم و از طرفی فکر می کنم روش شما بسیار ساده تر و حتی سرعت برنامه را بعلت حجم کم متن و شی بالاتر خواهد برد . البته نمونه ای که برای آقای محمدی گذاشتم بسیار مبتدی و فقط برای این بود که با روش اون آشنایی پیدا کنند .
لطفا اگر امکان داره خط6 و 17 را بیشتر توضیح بدید و اگر جزوه یا منبعی برای این گونه کد ها سراغ دارید بگید یا اینکه برامون بگذارید .

kh-hamid
پنج شنبه 15 اسفند 1387, 11:47 صبح
سلام من این نمونه را تکمیل شده گذاشتم شاید از این روش هم خواستید عمل کنید .

vahidm
پنج شنبه 15 اسفند 1387, 14:18 عصر
سلام جناب آقاي محمدي
بله شما مي تونيد به صورت نام خانوادگي جستجو و گزارش بگيريد در اين برنامه كه به شما دادم فقط نام فيلد رو name كنيد به جاي cod و اينكه شماره تكست رو شماره تكست جستجوي نام خانوادگي كنيد لازم به ذكره كه شما بايد نام خانوادگي رو به صورت كامل بنويسيد مثلا محمدي رو بايد كامل بنويسيد نمي تونيد محم بنويسيد اميدورام متوجه شده باشيد در اصل ميشه پارامترها رو تغيير داد تا با نوشتن ناقس فاميل بتونه گزارش بگيره
اگر سوالي بود در خدمتم
موفق باشيد

ayub_coder
جمعه 16 اسفند 1387, 11:11 صبح
سلام
میتونید از کتاب ADO مترجم بهزاد اکبری هم کمک بگیرید کتاب مفیدیه

هر قسمتی رو هم خواستید بگید تا بیشتر توضیح بدم؟؟؟
در خدمتم ....

vahidm
جمعه 16 اسفند 1387, 11:33 صبح
سلام
دوست عزيزمون kh-hamid برنامه اي كه گذاشتند ميشه گفت كه اين كار رو مي كنه يعني ايشون اومدن datasourc كنترل datagrid رو به datasourc كنترل Ado ربط دادند كه اين كار هم درسته
اگر مشكلتون حل نشده بگيد تا به نتيجه برسونيم
دوست عزيز ayub_coder شما هم اگر اين كتاب رو داريد ببينيد راه حلي براي اينكار گفته شده يا نه ؟
موفق باشيد

ayub_coder
جمعه 16 اسفند 1387, 11:42 صبح
مشکل ایشون الان سره چیه؟

vahidm
جمعه 16 اسفند 1387, 15:06 عصر
سلام
ببينيد من يه نمونه برنامه گذاشتم كه بر اساس كدي كه جستجو مي كنه مي تونيد نيجه رو با همون كد گزارش بگيريد خب حالا جناب آقاي محمدي ميخوان كه نام خانوادگي رو جستجو كنند مثلا اگر اومد محمدي ليست محمدي ها رو آورد با زدن دكمه گزارش بتونن نتيجه اطلاعات كه در dataGrid هستش رو چاپ كنند
خيلي پيچيده كردم
موفق باشيد

mohammadi
جمعه 16 اسفند 1387, 20:16 عصر
f با تشکر و سپاس ازز همه دوستان که این بحث را دنبال نموده و پاسخ دادن

بخصوص آقا وحید که خیلی زحمت کشیدن


موفق باشید در پناه یزدان

vahidm
جمعه 16 اسفند 1387, 21:08 عصر
سلام
جناب آقاي محمدي چي شد درست شد ؟
در ضمن وظيفه بود ولي بنده توقع داشتم دوستان ديگر همچون مدير تالار همراهي كنند
موفق باشيد

ayub_coder
جمعه 16 اسفند 1387, 23:43 عصر
امید وارم کارشون راه افتاده باشه ما هر کمکی ازمون بر بیاد کوتاهی نمیکنیم... ولی فکر کنم مشکلشون حل شده باشه...

mohammadi
شنبه 17 اسفند 1387, 07:06 صبح
سلام
جناب آقاي محمدي چي شد درست شد ؟
در ضمن وظيفه بود ولي بنده توقع داشتم دوستان ديگر همچون مدير تالار همراهي كنند
موفق باشيد


بله مشکل حل شد

rouzbeh_ziafati
سه شنبه 20 اسفند 1387, 00:18 صبح
من می خوام چندتا چک باکس در برنامه قرار بدم که هر کدوم از اونها نام یکی از ستون های datagrid ام باشه . Datagird به بانک و جدول مربوطه وصل باشه . هر چک باکسی که انتخاب شد اون ستون (فیلد) در Datagrid نمایش داده بشه و هر کدوم که از حالت انتخاب دراومد در datagrid نشون داده نشه . تا اینجای برنامه کاری نداره .
اما مشکل من اینجاست که می خوام وقتی که روی دکمه گزارش گیری کلیک کردم بر اساس ستون هایی که در datagrid در حال نمایش هست یک پرینت بگیرم .
چطور باید به برنامه فهموند این رو ؟ مثلا ممکن یک بار دو تا ستون فقط فعال باشه . دفعه بعد 5 تاستون .
ما وقتی یک گزارش درست میکنیم از قبل می دونیم که از چه چیزهایی گزارش می خوایم و فیلد و لیبل این ها رو در گزارش طراحی می کنیم . اما حالا که معلوم نیست از قبل چندتا ستون رو برای گزارش گیری ارسال خواهیم کرد چطور برنامه این رو تشخصی میده ؟ چه راهی وجود داره ؟

kh-hamid
دوشنبه 26 اسفند 1387, 14:10 عصر
سلام دوست عزیز شاید دیر شده باشه ولی برات می نویسم .
در برنامه نویسی ما دو مبحث داریم یکی برنامه نویسی و دیگری تجربه و بازی با کد ها و ...
برای این کار چندین راه وجود داره ولی اصولیش اینه که :
زمانی که ما به شیء ado دستور باز کردن یک جدول رو میدیم میتونیم بگیم که دقیقا چند تا از فیلد ها را نمایش بده که براتون مثال می زنم با فرض اینکه جدول ما دو تا فیلد داره با نام های id و name :
select * from table1
در مثال بالا میاد و تمامی فیلد ها و رکورد ها را نمایش می ده .
select name from table1
در مثال بالا فقط فیلد name را نمایش میده و id به نمایش گذاشته نمیشه و حتی اگر شما تکست باکسی برای id بذارید خواهید دید که به اطلاعات اون دسترسی نخواهید داشت .
select id,name from table1
این هم در صورتی که دو تا از چند تا را بخواهید انتخاب کنید .
حالا اگر می خواهید با چک باکس این کار رو بکنید کافی به تعداد فیلد ها روی فرم چک باکس گذاشته و با بررسی چک باکس ها با استفاده از دستورات case یا if و یا ... این datasoure را تغییر بدید .

rouzbeh_ziafati
سه شنبه 11 فروردین 1388, 12:04 عصر
سلام دوست عزیز شاید دیر شده باشه ولی برات می نویسم .
در برنامه نویسی ما دو مبحث داریم یکی برنامه نویسی و دیگری تجربه و بازی با کد ها و ...
برای این کار چندین راه وجود داره ولی اصولیش اینه که :
زمانی که ما به شیء ado دستور باز کردن یک جدول رو میدیم میتونیم بگیم که دقیقا چند تا از فیلد ها را نمایش بده که براتون مثال می زنم با فرض اینکه جدول ما دو تا فیلد داره با نام های id و name :
select * from table1
در مثال بالا میاد و تمامی فیلد ها و رکورد ها را نمایش می ده .
select name from table1
در مثال بالا فقط فیلد name را نمایش میده و id به نمایش گذاشته نمیشه و حتی اگر شما تکست باکسی برای id بذارید خواهید دید که به اطلاعات اون دسترسی نخواهید داشت .
select id,name from table1
این هم در صورتی که دو تا از چند تا را بخواهید انتخاب کنید .
حالا اگر می خواهید با چک باکس این کار رو بکنید کافی به تعداد فیلد ها روی فرم چک باکس گذاشته و با بررسی چک باکس ها با استفاده از دستورات case یا if و یا ... این datasoure را تغییر بدید .




این روشی که شما پیشنهاد دادید برای قسمت گزارش گیری کاربردی فکر نمی کنم داشته باشه
چرا که در گزارش گیری ما باید از قبل طراحی کنیم که چه ستون هایی نیاز هست و عنوان اونها رو قرار بدیم . مثلا ستون نام ، نام خانوادگی و شماره شناسنامه ... عنوان این ستون ها در گزارش باید نوشته بشه و بعد محتویات موقع اجرا زیرشون قرار بگیره .
حالا دفعه بعد ممکنه کاربر بخواد فقط نام و شماره شناسنامه رو نمایش بده در گزارش ...
اما ما قبلا در Datareport سه ستون رو طراحی کردیم . برنامه چطور میفهمه که ستون نام خانوادگی رو نشون نده !!!! ؟؟؟؟